Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@dlr-eoc/utils-maps

Package Overview
Dependencies
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dlr-eoc/utils-maps - npm Package Compare versions

Comparing version 7.3.1 to 7.3.2-next.1

2

esm2015/dlr-eoc-utils-maps.js

@@ -5,2 +5,2 @@ /**

export * from './public-api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGxyLWVvYy11dGlscy1tYXBzLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3VraXMtZnJvbnRlbmQtbGlicmFyaWVzL3VraXMtZnJvbnRlbmQtbGlicmFyaWVzL3Byb2plY3RzL3V0aWxzLW1hcHMvc3JjLyIsInNvdXJjZXMiOlsiZGxyLWVvYy11dGlscy1tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGxyLWVvYy11dGlscy1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvZGxyLWVvYy11dGlscy1tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=

@@ -192,2 +192,2 @@ import LayerRenderer from 'ol/renderer/Layer';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRtX3JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3VraXMtZnJvbnRlbmQtbGlicmFyaWVzL3VraXMtZnJvbnRlbmQtbGlicmFyaWVzL3Byb2plY3RzL3V0aWxzLW1hcHMvc3JjLyIsInNvdXJjZXMiOlsibGliL29sL2N1c3RvbVJlbmRlcmVycy9kdG1fcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJckQsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFVO0lBR3BDLFlBQVksT0FBTztRQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFlO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQUdEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9B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QyxFQUFFLEdBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRyxFQUFFLEVBQStCLEVBQUUsQ0FBRTtZQUN0RSxDQUFDLENBQUMsRUFBK0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUU7WUFDdEUsQ0FBQyxDQUFDLEVBQUUsRUFBNkIsRUFBRSxFQUErQixFQUFFLENBQUU7U0FDekUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqRiw4RkFBOEY7SUFDbEcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExheWVyUmVuZGVyZXIgZnJvbSAnb2wvcmVuZGVyZXIvTGF5ZXInO1xuaW1wb3J0IEltYWdlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvSW1hZ2UnO1xuaW1wb3J0IHsgRnJhbWVTdGF0ZSB9IGZyb20gJ29sL1BsdWdnYWJsZU1hcCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1FeHRlbnQgfSBmcm9tICdvbC9wcm9qJztcbmltcG9ydCBTdGF0aWMgZnJvbSAnb2wvc291cmNlL0ltYWdlU3RhdGljJztcbmltcG9ydCB7IFNoYWRlciwgUHJvZ3JhbSwgVW5pZm9ybSwgVGV4dHVyZSwgQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vd2ViZ2wvZW5naW5lLmNvcmUnO1xuaW1wb3J0IHsgY3JlYXRlVGV4dENhbnZhcyB9IGZyb20gJy4uLy4uL3dlYmdsL2VuZ2luZS5oZWxwZXJzJztcbmltcG9ydCB7IGJpbmRQcm9ncmFtIH0gZnJvbSAnLi4vLi4vd2ViZ2wvd2ViZ2wnO1xuaW1wb3J0IHsgU2hhcGVBLCByZWN0YW5nbGVBIH0gZnJvbSAnLi4vLi4vd2ViZ2wvZW5naW5lLnNoYXBlcyc7XG5pbXBvcnQgeyBmbGF0dGVuUmVjdXJzaXZlIH0gZnJvbSAnLi4vLi4vd2ViZ2wvdXRpbHMnO1xuXG5cblxuZXhwb3J0IGNsYXNzIER0bUxheWVyIGV4dGVuZHMgSW1hZ2VMYXllciB7XG4gICAgcHJpdmF0ZSByZW5kZXJlcjogRHRtSW1hZ2VSZW5kZXJlcjtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVuZGVyZXIoKTogRHRtSW1hZ2VSZW5kZXJlciB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgRHRtSW1hZ2VSZW5kZXJlcih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gICAgfVxuXG4gICAgdXBkYXRlU3VuQW5nbGUoYW5nbGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIudXBkYXRlU3VuQW5nbGUoYW5nbGUpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIFRoaXMgcmVuZGVyZXIgc2VydmVzIGFzIGEgaWxsdXN0cmF0aW9uIG9mIGEgdmVyeSBjb21tb24gdGVjaG5pcXVlIGluIFdlYkdMOiBub3JtYWwtbWFwcy5cbiAqIEhlcmUgd2UgdXNlIGEgdGV4dHVyZSBmcm9tIE5BU0EncyBTUlRNIG1pc3Npb24gYXMgb3VyIGJhc2UtRFRNLlxuICogQmFzZWQgb24gdGhpcywgd2UgY2FsY3VsYXRlIHN1cmZhY2Utbm9ybWFscy4gRm9yIGVhY2ggcGl4ZWwgaW4gdGhlIERUTSwgd2UgY2hlY2sgaG93IHRoZSBzdXJmYWNlLW5vcm1hbFxuICogaXMgYWxpZ25lZCB3aXRoIGFuIGluY29taW5nIHN1bi1yYXkuXG4gKlxuICogSW4gcmVhbC13b3JsZCBhcHBsaWNhdGlvbnMsIG1hbnkgbW9yZSBzdWNoIHRlY2huaXF1ZXMgYXJlIGVtcGxveWVkLiBBbG9uZ3NpZGUgbm9ybWFsLW1hcHMgdGhlcmUgYXJlOlxuICogIC0gc3BlY3VsYXIgbWFwcyxcbiAqICAtIG9jY2x1c2lvbiBtYXBzLFxuICogIC0gLi4uXG4gKi9cbmV4cG9ydCBjbGFzcyBEdG1JbWFnZVJlbmRlcmVyIGV4dGVuZHMgTGF5ZXJSZW5kZXJlcjxJbWFnZUxheWVyPiB7XG5cbiAgICByZWFkb25seSBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICAgIHJlYWRvbmx5IGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG4gICAgcmVhZG9ubHkgc2hhZGVyOiBTaGFkZXI7XG4gICAgcmVhZG9ubHkgcHJvamVjdGlvbjtcbiAgICBwcml2YXRlIHN0YXRlOiAnbG9hZGluZycgfCAncmVhZHknID0gJ2xvYWRpbmcnO1xuXG4gICAgY29uc3RydWN0b3IobGF5ZXI6IEltYWdlTGF5ZXIpIHtcbiAgICAgICAgc3VwZXIobGF5ZXIpO1xuXG4gICAgICAgIC8vIFN0ZXAgMTogc2V0dGluZyB1cCBjYW52YXNcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IDEyMDA7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSA4MDA7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cbiAgICAgICAgLy8gU3RlcCAyOiBzZXR0aW5nIHVwIHdlYmdsXG4gICAgICAgIGNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7XG5cbiAgICAgICAgLy8gU3RlcCAzOiBzZXR0aW5nIHVwIHZhcmlhYmxlcyBmb3IgcHJvZ3JhbVxuICAgICAgICBjb25zdCBzb3VyY2UgPSBsYXllci5nZXRTb3VyY2UoKSBhcyBTdGF0aWM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0aW9uID0gc291cmNlLmdldFByb2plY3Rpb24oKTtcbiAgICAgICAgY29uc3QgYmJveCA9IHNvdXJjZS5nZXRJbWFnZUV4dGVudCgpO1xuICAgICAgICBjb25zdCByZWN0YW5nbGVJbldvcmxkUG9zaXRpb24gPSB0aGlzLmJib3hPbnRvUmVjdGFuZ2xlKDIsIDIsIGJib3gpO1xuICAgICAgICBjb25zdCBpbWFnZSA9IGNyZWF0ZVRleHRDYW52YXMoJ3Rlc3QnLCAyMDQ4LCAyMDQ4LCAncmVkJyk7XG5cbiAgICAgICAgLy8gU3RlcCA0OiBzZXR0aW5nIHVwIHByb2dyYW1cbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IG5ldyBQcm9ncmFtKGdsLCBgXG4gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uO1xuICAgICAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlUG9zaXRpb247XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV93b3JsZDJwaXg7XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV9waXgyY2FudjtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVQb3NpdGlvbjtcbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICB2ZWMzIHBpeGVsUG9zaXRpb24gPSB1X3dvcmxkMnBpeCAqIHZlYzMoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDEuKTtcbiAgICAgICAgICAgICAgICB2ZWMzIGNhbnZhc1Bvc2l0aW9uID0gdV9waXgyY2FudiAqIHBpeGVsUG9zaXRpb247XG4gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGNhbnZhc1Bvc2l0aW9uLngsIGNhbnZhc1Bvc2l0aW9uLnksIDAuLCAxLik7XG4gICAgICAgICAgICAgICAgdl90ZXh0dXJlUG9zaXRpb24gPSBhX3RleHR1cmVQb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCwgYFxuICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3NydG07XG4gICAgICAgICAgICB1bmlmb3JtIGZsb2F0IHVfaW1hZ2VTaXplO1xuICAgICAgICAgICAgdW5pZm9ybSB2ZWMzIHVfc3VuO1xuICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uO1xuICAgICAgICAgICAgdm9pZCBtYWluKCkge1xuICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhID0gNC4gLyB1X2ltYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICBmbG9hdCB0b3AgPSB0ZXh0dXJlMkQodV9zcnRtLCB2ZWMyKHZfdGV4dHVyZVBvc2l0aW9uLngsICAgICAgICAgMS4gLSB2X3RleHR1cmVQb3NpdGlvbi55ICsgZGVsdGEpKS5yO1xuICAgICAgICAgICAgICAgIGZsb2F0IGJvdCA9IHRleHR1cmUyRCh1X3NydG0sIHZlYzIodl90ZXh0dXJlUG9zaXRpb24ueCwgICAgICAgICAxLiAtIHZfdGV4dHVyZVBvc2l0aW9uLnkgLSBkZWx0YSkpLnI7XG4gICAgICAgICAgICAgICAgZmxvYXQgbGZ0ID0gdGV4dHVyZTJEKHVfc3J0bSwgdmVjMih2X3RleHR1cmVQb3NpdGlvbi54ICsgZGVsdGEsIDEuIC0gdl90ZXh0dXJlUG9zaXRpb24ueSAgICAgICAgKSkucjtcbiAgICAgICAgICAgICAgICBmbG9hdCByZ3QgPSB0ZXh0dXJlMkQodV9zcnRtLCB2ZWMyKHZfdGV4dHVyZVBvc2l0aW9uLnggLSBkZWx0YSwgMS4gLSB2X3RleHR1cmVQb3NpdGlvbi55ICAgICAgICApKS5yO1xuXG4gICAgICAgICAgICAgICAgdmVjMyBzdXJmYWNlTm9ybWFsID0gdmVjMyhcbiAgICAgICAgICAgICAgICAgICAgbGZ0IC0gcmd0LFxuICAgICAgICAgICAgICAgICAgICBib3QgLSB0b3AsXG4gICAgICAgICAgICAgICAgICAgIDIuICogZGVsdGFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHN1cmZhY2VOb3JtYWwgPSBub3JtYWxpemUoc3VyZmFjZU5vcm1hbCk7XG4gICAgICAgICAgICAgICAgdmVjMyBzdW5Ob3JtYWwgPSBub3JtYWxpemUodV9zdW4pO1xuICAgICAgICAgICAgICAgIGZsb2F0IGFsaWdubWVudCA9IGFicyhkb3Qoc3VuTm9ybWFsLCBzdXJmYWNlTm9ybWFsKSk7XG5cbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuLCAwLiwgMC4sIDAuNSAqIGFsaWdubWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGApO1xuICAgICAgICBiaW5kUHJvZ3JhbShnbCwgcHJvZ3JhbS5wcm9ncmFtKTsgLy8gdG9kbzogaXMgdGhpcyByZXF1aXJlZD9cblxuICAgICAgICBjb25zdCBzaGFkZXIgPSBuZXcgU2hhZGVyKFxuICAgICAgICAgICAgcHJvZ3JhbSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBuZXcgQXR0cmlidXRlKGdsLCBwcm9ncmFtLCAnYV9wb3NpdGlvbicsIHJlY3RhbmdsZUluV29ybGRQb3NpdGlvbi52ZXJ0aWNlcyksXG4gICAgICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZShnbCwgcHJvZ3JhbSwgJ2FfdGV4dHVyZVBvc2l0aW9uJywgcmVjdGFuZ2xlSW5Xb3JsZFBvc2l0aW9uLnRleHR1cmVQb3NpdGlvbnMpXG4gICAgICAgICAgICBdLCBbXG4gICAgICAgICAgICAgICAgbmV3IFVuaWZvcm0oZ2wsIHByb2dyYW0sICd1X2ltYWdlU2l6ZScsICdmbG9hdCcsIFsyMDQ4Ll0pLFxuICAgICAgICAgICAgICAgIG5ldyBVbmlmb3JtKGdsLCBwcm9ncmFtLCAndV9zdW4nLCAndmVjMycsIFswLiwgMC4sIDEuXSksICAvLyBhcnJheSwgcG9pbnRpbmcgdG8gc3VuIGZyb20gbWlkZGxlIG9mIG1hcC5cbiAgICAgICAgICAgICAgICBuZXcgVW5pZm9ybShnbCwgcHJvZ3JhbSwgJ3Vfd29ybGQycGl4JywgJ21hdDMnLCBmbGF0dGVuUmVjdXJzaXZlKFtcbiAgICAgICAgICAgICAgICAgICAgWzEuLCAwLiwgMC5dLFxuICAgICAgICAgICAgICAgICAgICBbMC4sIDEuLCAwLl0sXG4gICAgICAgICAgICAgICAgICAgIFswLiwgMC4sIDEuXVxuICAgICAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgICAgICBuZXcgVW5pZm9ybShnbCwgcHJvZ3JhbSwgJ3VfcGl4MmNhbnYnLCAnbWF0MycsIGZsYXR0ZW5SZWN1cnNpdmUoW1xuICAgICAgICAgICAgICAgICAgICBbMS4gLyAgKGNhbnZhcy53aWR0aCAvIDIpLCAgMC4sICAgICAgICAgICAgICAgICAgICAgICAgMC4gXSxcbiAgICAgICAgICAgICAgICAgICAgWzAsICAgICAgICAgICAgICAgICAgICAgICAgLTEuIC8gKGNhbnZhcy5oZWlnaHQgLyAyKSwgIDAuIF0sXG4gICAgICAgICAgICAgICAgICAgIFstMS4sICAgICAgICAgICAgICAgICAgICAgIDEuLCAgICAgICAgICAgICAgICAgICAgICAgICAxLiBdXG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICBdLCBbXG4gICAgICAgICAgICAgICAgbmV3IFRleHR1cmUoZ2wsIHByb2dyYW0sICd1X3NydG0nLCBpbWFnZSwgMClcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICAgICAgc2hhZGVyLmJpbmQoZ2wpO1xuXG4gICAgICAgIC8vIGJpbmRpbmcgZGF0YSBmb3IgbGF0ZXIgdXNlXG4gICAgICAgIHRoaXMuc2hhZGVyID0gc2hhZGVyO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICAgICAgdGhpcy5nbCA9IGdsO1xuICAgICAgICB0aGlzLnByb2plY3Rpb24gPSBjdXJyZW50UHJvamVjdGlvbjtcblxuICAgICAgICAvLyBzdGVwIDU6IGxvYWRpbmcgYWN0dWFsIGltYWdlXG4gICAgICAgIGNvbnN0IGltYWdlV3JhcHBlciA9IHNvdXJjZS5nZXRJbWFnZShiYm94LCAwLjAyMTk3MjY1NjI1LCAyLjQ0MDAwMDI5NTYzOTAzOCwgY3VycmVudFByb2plY3Rpb24pO1xuICAgICAgICBpbWFnZVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2dDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ltYWdlID0gaW1hZ2VXcmFwcGVyLmdldEltYWdlKCkgYXMgSFRNTEltYWdlRWxlbWVudCB8IEhUTUxDYW52YXNFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5zaGFkZXIudXBkYXRlVGV4dHVyZURhdGEodGhpcy5nbCwgJ3Vfc3J0bScsIG5ld0ltYWdlKTtcbiAgICAgICAgICAgIHRoaXMuc2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gJ3JlYWR5JztcbiAgICAgICAgICAgIHN1cGVyLmdldExheWVyKCkuY2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaW1hZ2VXcmFwcGVyLmxvYWQoKTtcbiAgICB9XG5cblxuICAgIHByZXBhcmVGcmFtZShmcmFtZVN0YXRlOiBGcmFtZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlID09PSAncmVhZHknKSB7XG4gICAgICAgICAgICBjb25zdCBjMnBUID0gZnJhbWVTdGF0ZS5jb29yZGluYXRlVG9QaXhlbFRyYW5zZm9ybTtcbiAgICAgICAgICAgIGNvbnN0IHdvcmxkVG9QaXhlbFRyYW5zZm9ybSA9IFtcbiAgICAgICAgICAgICAgICBbYzJwVFswXSwgICBjMnBUWzFdLCAgICAwLiBdLFxuICAgICAgICAgICAgICAgIFtjMnBUWzJdLCAgIGMycFRbM10sICAgIDAuIF0sXG4gICAgICAgICAgICAgICAgW2MycFRbNF0sICAgYzJwVFs1XSwgICAgMS4gXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMuc2hhZGVyLnVwZGF0ZVVuaWZvcm1EYXRhKHRoaXMuZ2wsICd1X3dvcmxkMnBpeCcsIGZsYXR0ZW5SZWN1cnNpdmUod29ybGRUb1BpeGVsVHJhbnNmb3JtKSk7XG4gICAgICAgICAgICB0aGlzLnNoYWRlci5iaW5kKHRoaXMuZ2wpOyAvLyA8LS0tIEBUT0RPOiBpbmVmZmljaWVudCEgT25seSByZS1iaW5kIHdvcmxkMnBpeCBtYXRyaXguXG5cbiAgICAgICAgICAgIGlmIChmcmFtZVN0YXRlLnZpZXdTdGF0ZS5wcm9qZWN0aW9uICE9PSB0aGlzLnByb2plY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcHJvamVjdEltYWdlKGZyYW1lU3RhdGUudmlld1N0YXRlLnByb2plY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICByZW5kZXJGcmFtZShmcmFtZVN0YXRlOiBGcmFtZVN0YXRlLCB0YXJnZXQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ3JlYWR5Jykge1xuICAgICAgICAgICAgdGhpcy5zaGFkZXIucmVuZGVyKHRoaXMuZ2wpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1DYW52YXMoZnJhbWVTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FudmFzO1xuICAgIH1cblxuICAgIHJlbmRlckRlY2x1dHRlcihmcmFtZVN0YXRlOiBGcmFtZVN0YXRlKSB7XG4gICAgfVxuXG5cbiAgICB1cGRhdGVTdW5BbmdsZShhbmdsZTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGFkZXIudXBkYXRlVW5pZm9ybURhdGEodGhpcy5nbCwgJ3Vfc3VuJywgW2FuZ2xlWzBdLCBhbmdsZVsxXSwgMS4wXSk7XG4gICAgICAgIHRoaXMuc2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgIHRoaXMuc2hhZGVyLnJlbmRlcih0aGlzLmdsKTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYmJveE9udG9SZWN0YW5nbGUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGJib3g6IG51bWJlcltdKTogU2hhcGVBIHtcbiAgICAgICAgY29uc3QgcmVjdCA9IHJlY3RhbmdsZUEod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGZvciAoY29uc3QgdmVydGV4IG9mIHJlY3QudmVydGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB2ZXJ0ZXhbMF07XG4gICAgICAgICAgICBjb25zdCB5ID0gdmVydGV4WzFdO1xuICAgICAgICAgICAgdmVydGV4WzBdID0gKHggPT09IHdpZHRoIC8gMikgPyBiYm94WzJdIDogYmJveFswXTtcbiAgICAgICAgICAgIHZlcnRleFsxXSA9ICh5ID09PSBoZWlnaHQgLyAyKSA/IGJib3hbM10gOiBiYm94WzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwcm9qZWN0SW1hZ2UodGFyZ2V0UHJvamVjdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBzdXBlci5nZXRMYXllcigpLmdldFNvdXJjZSgpIGFzIFN0YXRpYztcbiAgICAgICAgY29uc3Qgc291cmNlUHJvamVjdGlvbiA9IHNvdXJjZS5nZXRQcm9qZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGJib3ggPSBzb3VyY2UuZ2V0SW1hZ2VFeHRlbnQoKTtcbiAgICAgICAgY29uc3QgYmJveEluVGFyZ2V0UHJvaiA9IHRyYW5zZm9ybUV4dGVudChiYm94LCBzb3VyY2VQcm9qZWN0aW9uLCB0YXJnZXRQcm9qZWN0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3UmVjdGFuZ2xlSW5Xb3JsZFBvc2l0aW9uID0gdGhpcy5iYm94T250b1JlY3RhbmdsZSgyLCAyLCBiYm94SW5UYXJnZXRQcm9qKTtcbiAgICAgICAgdGhpcy5zaGFkZXIudXBkYXRlQXR0cmlidXRlRGF0YSh0aGlzLmdsLCAnYV9wb3NpdGlvbicsIG5ld1JlY3RhbmdsZUluV29ybGRQb3NpdGlvbi52ZXJ0aWNlcyk7XG4gICAgICAgIHRoaXMuc2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1DYW52YXMoZnJhbWVTdGF0ZTogRnJhbWVTdGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXllclN0YXRlID0gZnJhbWVTdGF0ZS5sYXllclN0YXRlc0FycmF5W2ZyYW1lU3RhdGUubGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IHBpeGVsUmF0aW8gPSBmcmFtZVN0YXRlLnBpeGVsUmF0aW87XG4gICAgICAgIGNvbnN0IHNpemUgPSBmcmFtZVN0YXRlLnNpemU7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChzaXplWzBdICogcGl4ZWxSYXRpbyk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGgucm91bmQoc2l6ZVsxXSAqIHBpeGVsUmF0aW8pO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gbGF5ZXJTdGF0ZS5vcGFjaXR5O1xuXG4gICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUub3BhY2l0eSA9IGAke29wYWNpdHl9YDtcblxuICAgICAgICBjb25zdCBwaXgyY2FudiA9IFtcbiAgICAgICAgICAgIFsxLiAvICAodGhpcy5jYW52YXMud2lkdGggLyAyKSwgIDAuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuIF0sXG4gICAgICAgICAgICBbMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4gLyAodGhpcy5jYW52YXMuaGVpZ2h0IC8gMiksICAwLiBdLFxuICAgICAgICAgICAgWy0xLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gXVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV9waXgyY2FudicsIGZsYXR0ZW5SZWN1cnNpdmUocGl4MmNhbnYpKTtcbiAgICAgICAgLy8gdGhpcy5pbnRlcnBvbGF0aW9uU2hhZGVyLmJpbmQodGhpcy5nbCk7IDwtLSBub3QgcmVxdWlyZWQ6IGFscmVhZHkgaGFwcGVucyBpbiBgcHJlcGFyZUZyYW1lYFxuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRtX3JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvbGliL29sL2N1c3RvbVJlbmRlcmVycy9kdG1fcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJckQsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFVO0lBR3BDLFlBQVksT0FBTztRQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFlO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQUdEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsYUFBeUI7SUFRM0QsWUFBWSxLQUFpQjtRQUN6QixLQUFL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QUFDLENBQUMsRUFBRyxFQUFFLEVBQStCLEVBQUUsQ0FBRTtZQUN0RSxDQUFDLENBQUMsRUFBK0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUU7WUFDdEUsQ0FBQyxDQUFDLEVBQUUsRUFBNkIsRUFBRSxFQUErQixFQUFFLENBQUU7U0FDekUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqRiw4RkFBOEY7SUFDbEcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExheWVyUmVuZGVyZXIgZnJvbSAnb2wvcmVuZGVyZXIvTGF5ZXInO1xuaW1wb3J0IEltYWdlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvSW1hZ2UnO1xuaW1wb3J0IHsgRnJhbWVTdGF0ZSB9IGZyb20gJ29sL1BsdWdnYWJsZU1hcCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1FeHRlbnQgfSBmcm9tICdvbC9wcm9qJztcbmltcG9ydCBTdGF0aWMgZnJvbSAnb2wvc291cmNlL0ltYWdlU3RhdGljJztcbmltcG9ydCB7IFNoYWRlciwgUHJvZ3JhbSwgVW5pZm9ybSwgVGV4dHVyZSwgQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vd2ViZ2wvZW5naW5lLmNvcmUnO1xuaW1wb3J0IHsgY3JlYXRlVGV4dENhbnZhcyB9IGZyb20gJy4uLy4uL3dlYmdsL2VuZ2luZS5oZWxwZXJzJztcbmltcG9ydCB7IGJpbmRQcm9ncmFtIH0gZnJvbSAnLi4vLi4vd2ViZ2wvd2ViZ2wnO1xuaW1wb3J0IHsgU2hhcGVBLCByZWN0YW5nbGVBIH0gZnJvbSAnLi4vLi4vd2ViZ2wvZW5naW5lLnNoYXBlcyc7XG5pbXBvcnQgeyBmbGF0dGVuUmVjdXJzaXZlIH0gZnJvbSAnLi4vLi4vd2ViZ2wvdXRpbHMnO1xuXG5cblxuZXhwb3J0IGNsYXNzIER0bUxheWVyIGV4dGVuZHMgSW1hZ2VMYXllciB7XG4gICAgcHJpdmF0ZSByZW5kZXJlcjogRHRtSW1hZ2VSZW5kZXJlcjtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVuZGVyZXIoKTogRHRtSW1hZ2VSZW5kZXJlciB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgRHRtSW1hZ2VSZW5kZXJlcih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gICAgfVxuXG4gICAgdXBkYXRlU3VuQW5nbGUoYW5nbGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIudXBkYXRlU3VuQW5nbGUoYW5nbGUpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIFRoaXMgcmVuZGVyZXIgc2VydmVzIGFzIGEgaWxsdXN0cmF0aW9uIG9mIGEgdmVyeSBjb21tb24gdGVjaG5pcXVlIGluIFdlYkdMOiBub3JtYWwtbWFwcy5cbiAqIEhlcmUgd2UgdXNlIGEgdGV4dHVyZSBmcm9tIE5BU0EncyBTUlRNIG1pc3Npb24gYXMgb3VyIGJhc2UtRFRNLlxuICogQmFzZWQgb24gdGhpcywgd2UgY2FsY3VsYXRlIHN1cmZhY2Utbm9ybWFscy4gRm9yIGVhY2ggcGl4ZWwgaW4gdGhlIERUTSwgd2UgY2hlY2sgaG93IHRoZSBzdXJmYWNlLW5vcm1hbFxuICogaXMgYWxpZ25lZCB3aXRoIGFuIGluY29taW5nIHN1bi1yYXkuXG4gKlxuICogSW4gcmVhbC13b3JsZCBhcHBsaWNhdGlvbnMsIG1hbnkgbW9yZSBzdWNoIHRlY2huaXF1ZXMgYXJlIGVtcGxveWVkLiBBbG9uZ3NpZGUgbm9ybWFsLW1hcHMgdGhlcmUgYXJlOlxuICogIC0gc3BlY3VsYXIgbWFwcyxcbiAqICAtIG9jY2x1c2lvbiBtYXBzLFxuICogIC0gLi4uXG4gKi9cbmV4cG9ydCBjbGFzcyBEdG1JbWFnZVJlbmRlcmVyIGV4dGVuZHMgTGF5ZXJSZW5kZXJlcjxJbWFnZUxheWVyPiB7XG5cbiAgICByZWFkb25seSBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICAgIHJlYWRvbmx5IGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG4gICAgcmVhZG9ubHkgc2hhZGVyOiBTaGFkZXI7XG4gICAgcmVhZG9ubHkgcHJvamVjdGlvbjtcbiAgICBwcml2YXRlIHN0YXRlOiAnbG9hZGluZycgfCAncmVhZHknID0gJ2xvYWRpbmcnO1xuXG4gICAgY29uc3RydWN0b3IobGF5ZXI6IEltYWdlTGF5ZXIpIHtcbiAgICAgICAgc3VwZXIobGF5ZXIpO1xuXG4gICAgICAgIC8vIFN0ZXAgMTogc2V0dGluZyB1cCBjYW52YXNcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IDEyMDA7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSA4MDA7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cbiAgICAgICAgLy8gU3RlcCAyOiBzZXR0aW5nIHVwIHdlYmdsXG4gICAgICAgIGNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7XG5cbiAgICAgICAgLy8gU3RlcCAzOiBzZXR0aW5nIHVwIHZhcmlhYmxlcyBmb3IgcHJvZ3JhbVxuICAgICAgICBjb25zdCBzb3VyY2UgPSBsYXllci5nZXRTb3VyY2UoKSBhcyBTdGF0aWM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0aW9uID0gc291cmNlLmdldFByb2plY3Rpb24oKTtcbiAgICAgICAgY29uc3QgYmJveCA9IHNvdXJjZS5nZXRJbWFnZUV4dGVudCgpO1xuICAgICAgICBjb25zdCByZWN0YW5nbGVJbldvcmxkUG9zaXRpb24gPSB0aGlzLmJib3hPbnRvUmVjdGFuZ2xlKDIsIDIsIGJib3gpO1xuICAgICAgICBjb25zdCBpbWFnZSA9IGNyZWF0ZVRleHRDYW52YXMoJ3Rlc3QnLCAyMDQ4LCAyMDQ4LCAncmVkJyk7XG5cbiAgICAgICAgLy8gU3RlcCA0OiBzZXR0aW5nIHVwIHByb2dyYW1cbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IG5ldyBQcm9ncmFtKGdsLCBgXG4gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uO1xuICAgICAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlUG9zaXRpb247XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV93b3JsZDJwaXg7XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV9waXgyY2FudjtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVQb3NpdGlvbjtcbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICB2ZWMzIHBpeGVsUG9zaXRpb24gPSB1X3dvcmxkMnBpeCAqIHZlYzMoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDEuKTtcbiAgICAgICAgICAgICAgICB2ZWMzIGNhbnZhc1Bvc2l0aW9uID0gdV9waXgyY2FudiAqIHBpeGVsUG9zaXRpb247XG4gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGNhbnZhc1Bvc2l0aW9uLngsIGNhbnZhc1Bvc2l0aW9uLnksIDAuLCAxLik7XG4gICAgICAgICAgICAgICAgdl90ZXh0dXJlUG9zaXRpb24gPSBhX3RleHR1cmVQb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCwgYFxuICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3NydG07XG4gICAgICAgICAgICB1bmlmb3JtIGZsb2F0IHVfaW1hZ2VTaXplO1xuICAgICAgICAgICAgdW5pZm9ybSB2ZWMzIHVfc3VuO1xuICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uO1xuICAgICAgICAgICAgdm9pZCBtYWluKCkge1xuICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhID0gNC4gLyB1X2ltYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICBmbG9hdCB0b3AgPSB0ZXh0dXJlMkQodV9zcnRtLCB2ZWMyKHZfdGV4dHVyZVBvc2l0aW9uLngsICAgICAgICAgMS4gLSB2X3RleHR1cmVQb3NpdGlvbi55ICsgZGVsdGEpKS5yO1xuICAgICAgICAgICAgICAgIGZsb2F0IGJvdCA9IHRleHR1cmUyRCh1X3NydG0sIHZlYzIodl90ZXh0dXJlUG9zaXRpb24ueCwgICAgICAgICAxLiAtIHZfdGV4dHVyZVBvc2l0aW9uLnkgLSBkZWx0YSkpLnI7XG4gICAgICAgICAgICAgICAgZmxvYXQgbGZ0ID0gdGV4dHVyZTJEKHVfc3J0bSwgdmVjMih2X3RleHR1cmVQb3NpdGlvbi54ICsgZGVsdGEsIDEuIC0gdl90ZXh0dXJlUG9zaXRpb24ueSAgICAgICAgKSkucjtcbiAgICAgICAgICAgICAgICBmbG9hdCByZ3QgPSB0ZXh0dXJlMkQodV9zcnRtLCB2ZWMyKHZfdGV4dHVyZVBvc2l0aW9uLnggLSBkZWx0YSwgMS4gLSB2X3RleHR1cmVQb3NpdGlvbi55ICAgICAgICApKS5yO1xuXG4gICAgICAgICAgICAgICAgdmVjMyBzdXJmYWNlTm9ybWFsID0gdmVjMyhcbiAgICAgICAgICAgICAgICAgICAgbGZ0IC0gcmd0LFxuICAgICAgICAgICAgICAgICAgICBib3QgLSB0b3AsXG4gICAgICAgICAgICAgICAgICAgIDIuICogZGVsdGFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHN1cmZhY2VOb3JtYWwgPSBub3JtYWxpemUoc3VyZmFjZU5vcm1hbCk7XG4gICAgICAgICAgICAgICAgdmVjMyBzdW5Ob3JtYWwgPSBub3JtYWxpemUodV9zdW4pO1xuICAgICAgICAgICAgICAgIGZsb2F0IGFsaWdubWVudCA9IGFicyhkb3Qoc3VuTm9ybWFsLCBzdXJmYWNlTm9ybWFsKSk7XG5cbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuLCAwLiwgMC4sIDAuNSAqIGFsaWdubWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGApO1xuICAgICAgICBiaW5kUHJvZ3JhbShnbCwgcHJvZ3JhbS5wcm9ncmFtKTsgLy8gdG9kbzogaXMgdGhpcyByZXF1aXJlZD9cblxuICAgICAgICBjb25zdCBzaGFkZXIgPSBuZXcgU2hhZGVyKFxuICAgICAgICAgICAgcHJvZ3JhbSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBuZXcgQXR0cmlidXRlKGdsLCBwcm9ncmFtLCAnYV9wb3NpdGlvbicsIHJlY3RhbmdsZUluV29ybGRQb3NpdGlvbi52ZXJ0aWNlcyksXG4gICAgICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZShnbCwgcHJvZ3JhbSwgJ2FfdGV4dHVyZVBvc2l0aW9uJywgcmVjdGFuZ2xlSW5Xb3JsZFBvc2l0aW9uLnRleHR1cmVQb3NpdGlvbnMpXG4gICAgICAgICAgICBdLCBbXG4gICAgICAgICAgICAgICAgbmV3IFVuaWZvcm0oZ2wsIHByb2dyYW0sICd1X2ltYWdlU2l6ZScsICdmbG9hdCcsIFsyMDQ4Ll0pLFxuICAgICAgICAgICAgICAgIG5ldyBVbmlmb3JtKGdsLCBwcm9ncmFtLCAndV9zdW4nLCAndmVjMycsIFswLiwgMC4sIDEuXSksICAvLyBhcnJheSwgcG9pbnRpbmcgdG8gc3VuIGZyb20gbWlkZGxlIG9mIG1hcC5cbiAgICAgICAgICAgICAgICBuZXcgVW5pZm9ybShnbCwgcHJvZ3JhbSwgJ3Vfd29ybGQycGl4JywgJ21hdDMnLCBmbGF0dGVuUmVjdXJzaXZlKFtcbiAgICAgICAgICAgICAgICAgICAgWzEuLCAwLiwgMC5dLFxuICAgICAgICAgICAgICAgICAgICBbMC4sIDEuLCAwLl0sXG4gICAgICAgICAgICAgICAgICAgIFswLiwgMC4sIDEuXVxuICAgICAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgICAgICBuZXcgVW5pZm9ybShnbCwgcHJvZ3JhbSwgJ3VfcGl4MmNhbnYnLCAnbWF0MycsIGZsYXR0ZW5SZWN1cnNpdmUoW1xuICAgICAgICAgICAgICAgICAgICBbMS4gLyAgKGNhbnZhcy53aWR0aCAvIDIpLCAgMC4sICAgICAgICAgICAgICAgICAgICAgICAgMC4gXSxcbiAgICAgICAgICAgICAgICAgICAgWzAsICAgICAgICAgICAgICAgICAgICAgICAgLTEuIC8gKGNhbnZhcy5oZWlnaHQgLyAyKSwgIDAuIF0sXG4gICAgICAgICAgICAgICAgICAgIFstMS4sICAgICAgICAgICAgICAgICAgICAgIDEuLCAgICAgICAgICAgICAgICAgICAgICAgICAxLiBdXG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICBdLCBbXG4gICAgICAgICAgICAgICAgbmV3IFRleHR1cmUoZ2wsIHByb2dyYW0sICd1X3NydG0nLCBpbWFnZSwgMClcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICAgICAgc2hhZGVyLmJpbmQoZ2wpO1xuXG4gICAgICAgIC8vIGJpbmRpbmcgZGF0YSBmb3IgbGF0ZXIgdXNlXG4gICAgICAgIHRoaXMuc2hhZGVyID0gc2hhZGVyO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICAgICAgdGhpcy5nbCA9IGdsO1xuICAgICAgICB0aGlzLnByb2plY3Rpb24gPSBjdXJyZW50UHJvamVjdGlvbjtcblxuICAgICAgICAvLyBzdGVwIDU6IGxvYWRpbmcgYWN0dWFsIGltYWdlXG4gICAgICAgIGNvbnN0IGltYWdlV3JhcHBlciA9IHNvdXJjZS5nZXRJbWFnZShiYm94LCAwLjAyMTk3MjY1NjI1LCAyLjQ0MDAwMDI5NTYzOTAzOCwgY3VycmVudFByb2plY3Rpb24pO1xuICAgICAgICBpbWFnZVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2dDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ltYWdlID0gaW1hZ2VXcmFwcGVyLmdldEltYWdlKCkgYXMgSFRNTEltYWdlRWxlbWVudCB8IEhUTUxDYW52YXNFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5zaGFkZXIudXBkYXRlVGV4dHVyZURhdGEodGhpcy5nbCwgJ3Vfc3J0bScsIG5ld0ltYWdlKTtcbiAgICAgICAgICAgIHRoaXMuc2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gJ3JlYWR5JztcbiAgICAgICAgICAgIHN1cGVyLmdldExheWVyKCkuY2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaW1hZ2VXcmFwcGVyLmxvYWQoKTtcbiAgICB9XG5cblxuICAgIHByZXBhcmVGcmFtZShmcmFtZVN0YXRlOiBGcmFtZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlID09PSAncmVhZHknKSB7XG4gICAgICAgICAgICBjb25zdCBjMnBUID0gZnJhbWVTdGF0ZS5jb29yZGluYXRlVG9QaXhlbFRyYW5zZm9ybTtcbiAgICAgICAgICAgIGNvbnN0IHdvcmxkVG9QaXhlbFRyYW5zZm9ybSA9IFtcbiAgICAgICAgICAgICAgICBbYzJwVFswXSwgICBjMnBUWzFdLCAgICAwLiBdLFxuICAgICAgICAgICAgICAgIFtjMnBUWzJdLCAgIGMycFRbM10sICAgIDAuIF0sXG4gICAgICAgICAgICAgICAgW2MycFRbNF0sICAgYzJwVFs1XSwgICAgMS4gXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMuc2hhZGVyLnVwZGF0ZVVuaWZvcm1EYXRhKHRoaXMuZ2wsICd1X3dvcmxkMnBpeCcsIGZsYXR0ZW5SZWN1cnNpdmUod29ybGRUb1BpeGVsVHJhbnNmb3JtKSk7XG4gICAgICAgICAgICB0aGlzLnNoYWRlci5iaW5kKHRoaXMuZ2wpOyAvLyA8LS0tIEBUT0RPOiBpbmVmZmljaWVudCEgT25seSByZS1iaW5kIHdvcmxkMnBpeCBtYXRyaXguXG5cbiAgICAgICAgICAgIGlmIChmcmFtZVN0YXRlLnZpZXdTdGF0ZS5wcm9qZWN0aW9uICE9PSB0aGlzLnByb2plY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcHJvamVjdEltYWdlKGZyYW1lU3RhdGUudmlld1N0YXRlLnByb2plY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICByZW5kZXJGcmFtZShmcmFtZVN0YXRlOiBGcmFtZVN0YXRlLCB0YXJnZXQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ3JlYWR5Jykge1xuICAgICAgICAgICAgdGhpcy5zaGFkZXIucmVuZGVyKHRoaXMuZ2wpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1DYW52YXMoZnJhbWVTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FudmFzO1xuICAgIH1cblxuICAgIHJlbmRlckRlY2x1dHRlcihmcmFtZVN0YXRlOiBGcmFtZVN0YXRlKSB7XG4gICAgfVxuXG5cbiAgICB1cGRhdGVTdW5BbmdsZShhbmdsZTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGFkZXIudXBkYXRlVW5pZm9ybURhdGEodGhpcy5nbCwgJ3Vfc3VuJywgW2FuZ2xlWzBdLCBhbmdsZVsxXSwgMS4wXSk7XG4gICAgICAgIHRoaXMuc2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgIHRoaXMuc2hhZGVyLnJlbmRlcih0aGlzLmdsKTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYmJveE9udG9SZWN0YW5nbGUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGJib3g6IG51bWJlcltdKTogU2hhcGVBIHtcbiAgICAgICAgY29uc3QgcmVjdCA9IHJlY3RhbmdsZUEod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGZvciAoY29uc3QgdmVydGV4IG9mIHJlY3QudmVydGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB2ZXJ0ZXhbMF07XG4gICAgICAgICAgICBjb25zdCB5ID0gdmVydGV4WzFdO1xuICAgICAgICAgICAgdmVydGV4WzBdID0gKHggPT09IHdpZHRoIC8gMikgPyBiYm94WzJdIDogYmJveFswXTtcbiAgICAgICAgICAgIHZlcnRleFsxXSA9ICh5ID09PSBoZWlnaHQgLyAyKSA/IGJib3hbM10gOiBiYm94WzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwcm9qZWN0SW1hZ2UodGFyZ2V0UHJvamVjdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBzdXBlci5nZXRMYXllcigpLmdldFNvdXJjZSgpIGFzIFN0YXRpYztcbiAgICAgICAgY29uc3Qgc291cmNlUHJvamVjdGlvbiA9IHNvdXJjZS5nZXRQcm9qZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGJib3ggPSBzb3VyY2UuZ2V0SW1hZ2VFeHRlbnQoKTtcbiAgICAgICAgY29uc3QgYmJveEluVGFyZ2V0UHJvaiA9IHRyYW5zZm9ybUV4dGVudChiYm94LCBzb3VyY2VQcm9qZWN0aW9uLCB0YXJnZXRQcm9qZWN0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3UmVjdGFuZ2xlSW5Xb3JsZFBvc2l0aW9uID0gdGhpcy5iYm94T250b1JlY3RhbmdsZSgyLCAyLCBiYm94SW5UYXJnZXRQcm9qKTtcbiAgICAgICAgdGhpcy5zaGFkZXIudXBkYXRlQXR0cmlidXRlRGF0YSh0aGlzLmdsLCAnYV9wb3NpdGlvbicsIG5ld1JlY3RhbmdsZUluV29ybGRQb3NpdGlvbi52ZXJ0aWNlcyk7XG4gICAgICAgIHRoaXMuc2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1DYW52YXMoZnJhbWVTdGF0ZTogRnJhbWVTdGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXllclN0YXRlID0gZnJhbWVTdGF0ZS5sYXllclN0YXRlc0FycmF5W2ZyYW1lU3RhdGUubGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IHBpeGVsUmF0aW8gPSBmcmFtZVN0YXRlLnBpeGVsUmF0aW87XG4gICAgICAgIGNvbnN0IHNpemUgPSBmcmFtZVN0YXRlLnNpemU7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChzaXplWzBdICogcGl4ZWxSYXRpbyk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGgucm91bmQoc2l6ZVsxXSAqIHBpeGVsUmF0aW8pO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gbGF5ZXJTdGF0ZS5vcGFjaXR5O1xuXG4gICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUub3BhY2l0eSA9IGAke29wYWNpdHl9YDtcblxuICAgICAgICBjb25zdCBwaXgyY2FudiA9IFtcbiAgICAgICAgICAgIFsxLiAvICAodGhpcy5jYW52YXMud2lkdGggLyAyKSwgIDAuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuIF0sXG4gICAgICAgICAgICBbMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4gLyAodGhpcy5jYW52YXMuaGVpZ2h0IC8gMiksICAwLiBdLFxuICAgICAgICAgICAgWy0xLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gXVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV9waXgyY2FudicsIGZsYXR0ZW5SZWN1cnNpdmUocGl4MmNhbnYpKTtcbiAgICAgICAgLy8gdGhpcy5pbnRlcnBvbGF0aW9uU2hhZGVyLmJpbmQodGhpcy5nbCk7IDwtLSBub3QgcmVxdWlyZWQ6IGFscmVhZHkgaGFwcGVucyBpbiBgcHJlcGFyZUZyYW1lYFxuICAgIH1cbn1cbiJdfQ==

@@ -278,2 +278,2 @@ import LayerRenderer from 'ol/renderer/Layer';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGVfcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvIiwic291cmNlcyI6WyJsaWIvb2wvY3VzdG9tUmVuZGVyZXJzL3BhcnRpY2xlX3JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3JELE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztJQUMzQyxZQUFZLE9BQU87UUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3RCLGFBQWE7UUFDWixJQUFJLENBQUMsV0FBVyxFQUF1QixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0o7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQTBCO0lBYTVELFlBQVksS0FBa0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSFQsUUFBRyxHQUFHLEVBQUUsQ0FBQztR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QyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRTtZQUNyQixNQUFNLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ29sJztcbmltcG9ydCB7IEZyYW1lU3RhdGUgfSBmcm9tICdvbC9QbHVnZ2FibGVNYXAnO1xuaW1wb3J0IExheWVyUmVuZGVyZXIgZnJvbSAnb2wvcmVuZGVyZXIvTGF5ZXInO1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgUG9pbnQgZnJvbSAnb2wvZ2VvbS9Qb2ludCc7XG5pbXBvcnQgRGVsYXVuYXRvciBmcm9tICdkZWxhdW5hdG9yJztcbmltcG9ydCB7IFNoYWRlciwgRnJhbWVidWZmZXIsIFByb2dyYW0sIFVuaWZvcm0sIFRleHR1cmUsIHJlbmRlckxvb3AsIEF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL3dlYmdsL2VuZ2luZS5jb3JlJztcbmltcG9ydCB7IHJlY3RhbmdsZUEgfSBmcm9tICcuLi8uLi93ZWJnbC9lbmdpbmUuc2hhcGVzJztcbmltcG9ydCB7IGZsYXR0ZW5SZWN1cnNpdmUgfSBmcm9tICcuLi8uLi93ZWJnbC91dGlscyc7XG5cblxuZXhwb3J0IGNsYXNzIFdpbmRGaWVsZExheWVyIGV4dGVuZHMgVmVjdG9yTGF5ZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVuZGVyZXIoKTogUGFydGljbGVSZW5kZXJlciB7XG4gICAgICAgIHJldHVybiBuZXcgUGFydGljbGVSZW5kZXJlcih0aGlzKTtcbiAgICB9XG5cbiAgICBzdGFydEFuaW1hdGlvbihmcHM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICh0aGlzLmdldFJlbmRlcmVyKCkgYXMgUGFydGljbGVSZW5kZXJlcikuc3RhcnRBbmltYXRpb24oZnBzKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhpcyByZW5kZXJlciBpbGx1c3RyYXRlcyBob3cgV2ViR0wgY2FuIGJlIHVzZWQgdG8gdG8gcGl4ZWwtYnktcGl4ZWwgY2FsY3VsYXRpb25zXG4gKiB0aGF0IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgb24gYSBDUFUgYnV0IGFyZSBlYXNpbHkgZG9uZSBvbiBhIEdQVS5cbiAqIEluIG91ciBzaGFkZXIgd2UgZ28gdGhyb3VnaCBldmVyeSBwaXhlbCBhbmQgY2FsY3VsYXRlIGl0cyBuZXcgc3RhdGUgZnJvbVxuICogaXRzIG9sZCBzdGF0ZSBhbmQgdGhhdCBvZiBpdCdzIGVudmlyb25tZW50LlxuICpcbiAqIE5vdGUgaG93IHNpbWlsYXIgaW4gcHJpbmNpcGxlIHRoaXMgaXMgdG8gQ29ud2F5J3MgR2FtZSBvZiBMaWZlOiBvbmUgcGl4ZWwncyBzdGF0ZSBpcyBkZXRlcm1pbmVkXG4gKiBieSBpdHMgc3Vycm91bmRpbmdzIGZyb20gdGhlIHRpbWUtc3RlcCBiZWZvcmUuXG4gKlxuICogVGhpcyByZW5kZXJlciBhbHNvIGlsbHVzdHJhdGVzIGFub3RoZXIgY29tbW9uIHRlY2huaXF1ZSBpbiBXZWJHTDogYGZyYW1lYnVmZmVyLXBpbmctcG9uZ2AuXG4gKiBUaGlzIGlzIHdoZXJlIHRoZSBvdXRwdXQgb2Ygb25lIHNoYWRlciBpcyBzdG9yZWQgb24gYSBmcmFtZWJ1ZmZlciBhbmQgdGhlbiBwYXNzZWQgdG8gYSBzdWJzZXF1ZW50IHNoYWRlci5cbiAqIFdpdGggdGhpcywgd2UgY2FuIGNyZWF0ZSBhIG11bHRpLXN0ZXAtcGlwZWxpbmUsIHdoZXJlIGVhY2ggc2hhZGVyIHVzZXMgdGhlIHByZXZpb3VzXG4gKiBvbmUncyBvdXRwdXQgYXMgaXRzIG93biBpbnB1dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcnRpY2xlUmVuZGVyZXIgZXh0ZW5kcyBMYXllclJlbmRlcmVyPFZlY3RvckxheWVyPiB7XG5cblxuICAgIHJlYWRvbmx5IGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgcmVhZG9ubHkgZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dDtcbiAgICByZWFkb25seSBpbnRlcnBvbGF0aW9uU2hhZGVyOiBTaGFkZXI7XG4gICAgcmVhZG9ubHkgcGFydGljbGVTaGFkZXI6IFNoYWRlcjtcbiAgICByZWFkb25seSB0ZXh0dXJlTWl4U2hhZGVyOiBTaGFkZXI7XG4gICAgcmVhZG9ubHkgaW50ZXJwb2xGYjogRnJhbWVidWZmZXI7XG4gICAgcmVhZG9ubHkgcGFydGljbGVGYjE6IEZyYW1lYnVmZmVyO1xuICAgIHJlYWRvbmx5IHBhcnRpY2xlRmIyOiBGcmFtZWJ1ZmZlcjtcbiAgICBwcml2YXRlIGZwcyA9IDMwO1xuXG4gICAgY29uc3RydWN0b3IobGF5ZXI6IFZlY3RvckxheWVyKSB7XG4gICAgICAgIHN1cGVyKGxheWVyKTtcblxuICAgICAgICAvLyBzZXR0aW5nIHVwIGNhbnZhc1xuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gMTAwMDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IDEwMDA7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cblxuICAgICAgICAvLyBwcmVwYXJpbmcgZGF0YVxuICAgICAgICBjb25zdCBzb3VyY2UgPSBsYXllci5nZXRTb3VyY2UoKTtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBzb3VyY2UuZ2V0RmVhdHVyZXMoKSBhcyBGZWF0dXJlPFBvaW50PltdO1xuICAgICAgICBjb25zdCBhT2JzZXJ2YXRpb24gPSB0aGlzLnBvaW50c1RvT2JzZXJ2YXRpb25zKGZlYXR1cmVzKTtcblxuICAgICAgICBjb25zdCBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbCcpO1xuICAgICAgICBjb25zdCByZWN0ID0gcmVjdGFuZ2xlQSgyLjAsIDIuMCk7XG5cblxuXG4gICAgICAgIC8vIC0tLS0tLS0tLSBTdGVwIDE6IGludGVycG9sYXRpbmcgZmllbGQgYmV0d2VlbiBkYXRhIHBvaW50cy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgY29uc3QgaW50ZXJwb2xQcm9ncmFtID0gbmV3IFByb2dyYW0oZ2wsIGBcbiAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfb2JzZXJ2YXRpb247XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV93b3JsZDJwaXg7XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV9waXgyY2FudjtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3ZhbHVlO1xuXG4gICAgICAgICAgICB2b2lkIG1haW4oKSB7XG4gICAgICAgICAgICAgICAgdmVjMyBwaXhlbFBvc2l0aW9uID0gdV93b3JsZDJwaXggKiB2ZWMzKGFfb2JzZXJ2YXRpb24ueCwgYV9vYnNlcnZhdGlvbi55LCAxLik7XG4gICAgICAgICAgICAgICAgdmVjMyBjYW52YXNQb3NpdGlvbiA9IHVfcGl4MmNhbnYgKiBwaXhlbFBvc2l0aW9uO1xuICAgICAgICAgICAgICAgIHZfdmFsdWUgPSAoYV9vYnNlcnZhdGlvbi56dyAvIDIuMCkgKyAwLjU7XG4gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGNhbnZhc1Bvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsIGBcbiAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdmFsdWU7XG5cbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFsdWUueHksIDAuMCwgMS4wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCk7XG5cbiAgICAgICAgY29uc3QgaW50ZXJwb2xTaGFkZXIgPSBuZXcgU2hhZGVyKGludGVycG9sUHJvZ3JhbSwgW1xuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZShnbCwgaW50ZXJwb2xQcm9ncmFtLCAnYV9vYnNlcnZhdGlvbicsIGFPYnNlcnZhdGlvbilcbiAgICAgICAgXSwgW1xuICAgICAgICAgICAgbmV3IFVuaWZvcm0oZ2wsIGludGVycG9sUHJvZ3JhbSwgJ3Vfd29ybGQycGl4JywgJ21hdDMnLCBmbGF0dGVuUmVjdXJzaXZlKFtcbiAgICAgICAgICAgICAgICBbMS4sIDAuLCAwLl0sXG4gICAgICAgICAgICAgICAgWzAuLCAxLiwgMC5dLFxuICAgICAgICAgICAgICAgIFswLiwgMC4sIDEuXVxuICAgICAgICAgICAgXSkpLFxuICAgICAgICAgICAgbmV3IFVuaWZvcm0oZ2wsIGludGVycG9sUHJvZ3JhbSwgJ3VfcGl4MmNhbnYnLCAnbWF0MycsIGZsYXR0ZW5SZWN1cnNpdmUoW1xuICAgICAgICAgICAgICAgIFsxLiAvICAoY2FudmFzLndpZHRoIC8gMiksICAwLiwgICAgICAgICAgICAgICAgICAgICAgICAwLiBdLFxuICAgICAgICAgICAgICAgIFswLCAgICAgICAgICAgICAgICAgICAgICAgIC0xLiAvIChjYW52YXMuaGVpZ2h0IC8gMiksICAwLiBdLFxuICAgICAgICAgICAgICAgIFstMS4sICAgICAgICAgICAgICAgICAgICAgIDEuLCAgICAgICAgICAgICAgICAgICAgICAgICAxLiBdXG4gICAgICAgICAgICBdKSlcbiAgICAgICAgXSwgW10pO1xuXG4gICAgICAgIGNvbnN0IGludGVycG9sRmIgPSBuZXcgRnJhbWVidWZmZXIoZ2wsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cblxuXG5cbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tIFN0ZXAgMjogbW92aW5nIHBhcnRpY2xlcyBhbG9uZyBmb3JjZSBmaWVsZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICBjb25zdCBwYXJ0aWNsZUZiMSA9IG5ldyBGcmFtZWJ1ZmZlcihnbCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgY29uc3QgcGFydGljbGVGYjIgPSBuZXcgRnJhbWVidWZmZXIoZ2wsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgICAgY29uc3QgcGFydGljbGVQcm9ncmFtID0gbmV3IFByb2dyYW0oZ2wsIGBcbiAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfdmVydGV4O1xuICAgICAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlQ29vcmQ7XG4gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlQ29vcmQ7XG4gICAgICAgICAgICB2b2lkIG1haW4oKSB7XG4gICAgICAgICAgICAgICAgdl90ZXh0dXJlQ29vcmQgPSBhX3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV92ZXJ0ZXgueHl6LCAxLjApO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLCBgXG4gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X2ZvcmNlVGV4dHVyZTtcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdV9wYXJ0aWNsZVRleHR1cmU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9kZWx0YVQ7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVDb29yZDtcblxuICAgICAgICBmbG9hdCByYW5kKHZlYzIgY28pe1xuICAgICAgICAgICAgcmV0dXJuIGZyYWN0KHNpbihkb3QoY28ueHkgLHZlYzIoMTIuOTg5OCw3OC4yMzMpKSkgKiA0Mzc1OC41NDUzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgIC8vIG1vdmluZyBwYXJ0aWNsZXNcbiAgICAgICAgICAgIHZlYzIgc3BlZWQgPSAoKHRleHR1cmUyRCh1X2ZvcmNlVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmQpIC0gMC41ICkgKiAyLjApLnh5O1xuICAgICAgICAgICAgdmVjMiBzYW1wbGVQb2ludCA9IHZfdGV4dHVyZUNvb3JkIC0gc3BlZWQgKiB1X2RlbHRhVCAqIDAuMTtcbiAgICAgICAgICAgIHNhbXBsZVBvaW50ID0gbW9kKHNhbXBsZVBvaW50LCAxLjApO1xuICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVfcGFydGljbGVUZXh0dXJlLCBzYW1wbGVQb2ludCk7XG5cbiAgICAgICAgICAgIC8vIGZhZGUgb3V0XG4gICAgICAgICAgICBmbG9hdCBmYWRlUmF0ZSA9IDAuOTU7XG4gICAgICAgICAgICBpZiAoZ2xfRnJhZ0NvbG9yLnggIT0gMS4wKSB7XG4gICAgICAgICAgICAgICAgdmVjNCBsYXN0Q29sb3IgPSB0ZXh0dXJlMkQodV9wYXJ0aWNsZVRleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTtcbiAgICAgICAgICAgICAgICB2ZWM0IGZhZGVkQ29sb3IgPSB2ZWM0KGxhc3RDb2xvci54eXogKiBmYWRlUmF0ZSwgMS4wKTtcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBmYWRlZENvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzcGF3biBhbmQgZGllLW9mZlxuICAgICAgICAgICAgZmxvYXQgc3Bhd25DaGFuY2UgPSAwLjAwMDU7XG4gICAgICAgICAgICBmbG9hdCBkaWVDaGFuY2UgPSAwLjI7XG4gICAgICAgICAgICBmbG9hdCByYW5kVmFsID0gcmFuZCh2X3RleHR1cmVDb29yZCAqIGFicyhzaW4odV9kZWx0YVQpKSAqIDAuMDEpO1xuICAgICAgICAgICAgaWYgKHJhbmRWYWwgPiAoMS4gLSBzcGF3bkNoYW5jZSkpIHsgIC8vIHNwYXduXG4gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApO1xuICAgICAgICAgICAgfSBpZiAocmFuZFZhbCA8IGRpZUNoYW5jZSkgeyAgIC8vIGRpZSBvZmZcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG5vIHBhcnRpY2xlcyBvdXRzaWRlIHRleHR1cmVcbiAgICAgICAgICAgIGlmICh0ZXh0dXJlMkQodV9mb3JjZVRleHR1cmUsIHZfdGV4dHVyZUNvb3JkKSA9PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkpIHtcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYCk7XG5cbiAgICAgICAgY29uc3QgcGFydGljbGVTaGFkZXIgPSBuZXcgU2hhZGVyKHBhcnRpY2xlUHJvZ3JhbSwgW1xuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZShnbCwgcGFydGljbGVQcm9ncmFtLCAnYV92ZXJ0ZXgnLCByZWN0LnZlcnRpY2VzKSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoZ2wsIHBhcnRpY2xlUHJvZ3JhbSwgJ2FfdGV4dHVyZUNvb3JkJywgcmVjdC50ZXh0dXJlUG9zaXRpb25zKVxuICAgICAgICBdLCBbXG4gICAgICAgICAgICBuZXcgVW5pZm9ybShnbCwgcGFydGljbGVQcm9ncmFtLCAndV9kZWx0YVQnLCAnZmxvYXQnLCBbMC4wMV0pXG4gICAgICAgIF0sIFtcbiAgICAgICAgICAgIG5ldyBUZXh0dXJlKGdsLCBwYXJ0aWNsZVByb2dyYW0sICd1X2ZvcmNlVGV4dHVyZScsIGludGVycG9sRmIuZmJvLnRleHR1cmUsIDApLFxuICAgICAgICAgICAgbmV3IFRleHR1cmUoZ2wsIHBhcnRpY2xlUHJvZ3JhbSwgJ3VfcGFydGljbGVUZXh0dXJlJywgcGFydGljbGVGYjEuZmJvLnRleHR1cmUsIDEpXG4gICAgICAgIF0pO1xuXG5cblxuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLSBTdGVwIDM6IE1peGluZyBiYWNrZ3JvdW5kLWZpZWxkIGFuZCBwYXJ0aWNsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgY29uc3QgdGV4dHVyZU1peFByb2dyYW0gPSBuZXcgUHJvZ3JhbShnbCwgYFxuICAgICAgICAgICAgYXR0cmlidXRlIHZlYzMgYV92ZXJ0ZXg7XG4gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICB2X3RleHR1cmVDb29yZCA9IGFfdGV4dHVyZUNvb3JkO1xuICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3ZlcnRleC54eXosIDEuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsIGBcbiAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdV9iZ1RleHR1cmU7XG4gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3BhcnRpY2xlVGV4dHVyZTtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICB2ZWM0IGJnQ29sb3IgPSB0ZXh0dXJlMkQodV9iZ1RleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTtcbiAgICAgICAgICAgICAgICB2ZWM0IHBhcnRpY2xlQ29sb3IgPSB0ZXh0dXJlMkQodV9wYXJ0aWNsZVRleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTtcbiAgICAgICAgICAgICAgICB2ZWM0IGNvbG9yTWl4ID0gbWF4KHBhcnRpY2xlQ29sb3IsIGJnQ29sb3IpO1xuICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yTWl4O1xuICAgICAgICAgICAgfVxuICAgICAgICBgKTtcbiAgICAgICAgY29uc3QgdGV4dHVyZU1peFNoYWRlciA9IG5ldyBTaGFkZXIodGV4dHVyZU1peFByb2dyYW0sIFtcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoZ2wsIHRleHR1cmVNaXhQcm9ncmFtLCAnYV92ZXJ0ZXgnLCByZWN0LnZlcnRpY2VzKSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoZ2wsIHRleHR1cmVNaXhQcm9ncmFtLCAnYV90ZXh0dXJlQ29vcmQnLCByZWN0LnRleHR1cmVQb3NpdGlvbnMpXG4gICAgICAgIF0sIFtdLCBbXG4gICAgICAgICAgICBuZXcgVGV4dHVyZShnbCwgdGV4dHVyZU1peFByb2dyYW0sICd1X2JnVGV4dHVyZScsIGludGVycG9sRmIuZmJvLnRleHR1cmUsIDApLFxuICAgICAgICAgICAgbmV3IFRleHR1cmUoZ2wsIHRleHR1cmVNaXhQcm9ncmFtLCAndV9wYXJ0aWNsZVRleHR1cmUnLCBwYXJ0aWNsZUZiMS5mYm8udGV4dHVyZSwgMSlcbiAgICAgICAgXSk7XG5cblxuICAgICAgICAvLyBTZXR1cFxuICAgICAgICBpbnRlcnBvbFNoYWRlci5iaW5kKGdsKTtcbiAgICAgICAgaW50ZXJwb2xTaGFkZXIucmVuZGVyKGdsLCBbMCwgMCwgMCwgMF0sIGludGVycG9sRmIuZmJvKTtcbiAgICAgICAgdGV4dHVyZU1peFNoYWRlci5iaW5kKGdsKTtcbiAgICAgICAgdGV4dHVyZU1peFNoYWRlci5yZW5kZXIoZ2wpO1xuICAgICAgICBwYXJ0aWNsZVNoYWRlci5iaW5kKGdsKTtcblxuICAgICAgICAvLyBtYWtpbmcgZGF0YSBhdmFpbGFibGUgZm9yIGxhdGVyXG4gICAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xuICAgICAgICB0aGlzLmdsID0gZ2w7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlciA9IGludGVycG9sU2hhZGVyO1xuICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyID0gcGFydGljbGVTaGFkZXI7XG4gICAgICAgIHRoaXMudGV4dHVyZU1peFNoYWRlciA9IHRleHR1cmVNaXhTaGFkZXI7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xGYiA9IGludGVycG9sRmI7XG4gICAgICAgIHRoaXMucGFydGljbGVGYjEgPSBwYXJ0aWNsZUZiMTtcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUZiMiA9IHBhcnRpY2xlRmIyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIGNvdWxkIGFsc28gaGF2ZSBqdXN0IHN0YXJ0ZWQgdGhlIGFuaW1hdGlvbiByaWdodCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogSW5zdGVhZCB3ZSBjcmVhdGVkIGEgc2VwYXJhdGUgYHN0YXJ0QW5pbWF0aW9uYCBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiBvcHRpb25hbGx5IGJlIHJ1biBvdXRzaWRlIGFuZ3VsYXIncyB6b25lLFxuICAgICAqIHByZXZlbnRpbmcgaXQgZnJvbSBmaXJpbmcgdG9vIG1hbnkgY2hhbmdlIGN5Y2xlcy5cbiAgICAgKiBXZSBsZWF2ZSB0aGlzIGRlY2lzaW9uIHRvIHRoZSB1c2VyLCBob3dldmVyLCBiZWNhdXNlIGl0IGlzIG5vdCBhbiBvbC1yZW5kZXJlcnMgZHV0eSB0byBoYW5kbGUgYW55IGFuZ3VsYXItbG9naWMuXG4gICAgICovXG4gICAgc3RhcnRBbmltYXRpb24oZnBzOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mcHMgPSBmcHM7XG5cbiAgICAgICAgLy8gQW5pbWF0aW9uIGxvb3BcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgZmJJbjtcbiAgICAgICAgbGV0IGZiT3V0O1xuICAgICAgICByZW5kZXJMb29wKHRoaXMuZnBzLCAoZGVsdGFUOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGkgKz0gMTtcblxuICAgICAgICAgICAgLy8gZnJhbWVidWZmZXIgcGluZy1wb25nXG4gICAgICAgICAgICBpZiAoaSAlIDIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBmYkluID0gdGhpcy5wYXJ0aWNsZUZiMTtcbiAgICAgICAgICAgICAgICBmYk91dCA9IHRoaXMucGFydGljbGVGYjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZiSW4gPSB0aGlzLnBhcnRpY2xlRmIyO1xuICAgICAgICAgICAgICAgIGZiT3V0ID0gdGhpcy5wYXJ0aWNsZUZiMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcGFydGljbGUgc2hhZGVyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyLnRleHR1cmVzWzFdLnRleHR1cmUgPSBmYkluLmZiby50ZXh0dXJlO1xuICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV9kZWx0YVQnLCBbZGVsdGFUXSk7XG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyLnJlbmRlcih0aGlzLmdsLCBudWxsLCBmYk91dC5mYm8pO1xuXG4gICAgICAgICAgICAvLyB0ZXh0dXJlIHRvIG91dHB1dFxuICAgICAgICAgICAgdGhpcy50ZXh0dXJlTWl4U2hhZGVyLnRleHR1cmVzWzFdLnRleHR1cmUgPSBmYk91dC5mYm8udGV4dHVyZTtcbiAgICAgICAgICAgIHRoaXMudGV4dHVyZU1peFNoYWRlci5iaW5kKHRoaXMuZ2wpO1xuICAgICAgICAgICAgdGhpcy50ZXh0dXJlTWl4U2hhZGVyLnJlbmRlcih0aGlzLmdsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RvcEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mcHMgPSAwO1xuICAgIH1cblxuXG4gICAgcHJlcGFyZUZyYW1lKGZyYW1lU3RhdGU6IEZyYW1lU3RhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbGF5ZXJTdGF0ZSA9IGZyYW1lU3RhdGUubGF5ZXJTdGF0ZXNBcnJheVtmcmFtZVN0YXRlLmxheWVySW5kZXhdO1xuICAgICAgICBjb25zdCBzaXplID0gZnJhbWVTdGF0ZS5zaXplO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gbGF5ZXJTdGF0ZS5vcGFjaXR5O1xuICAgICAgICBpZiAoc2l6ZVswXSAhPT0gdGhpcy5jYW52YXMud2lkdGggfHwgc2l6ZVsxXSAhPT0gdGhpcy5jYW52YXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHNpemVbMF07XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBzaXplWzFdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLm9wYWNpdHkgPSBgJHtvcGFjaXR5fWA7XG5cbiAgICAgICAgLy8gdXBkYXRlIHdvcmxkMnBpeFxuICAgICAgICBjb25zdCBjMnBUID0gZnJhbWVTdGF0ZS5jb29yZGluYXRlVG9QaXhlbFRyYW5zZm9ybTtcbiAgICAgICAgY29uc3Qgd29ybGRUb1BpeGVsVHJhbnNmb3JtID0gW1xuICAgICAgICAgICAgW2MycFRbMF0sICAgYzJwVFsxXSwgICAgMC4gXSxcbiAgICAgICAgICAgIFtjMnBUWzJdLCAgIGMycFRbM10sICAgIDAuIF0sXG4gICAgICAgICAgICBbYzJwVFs0XSwgICBjMnBUWzVdLCAgICAxLiBdXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV93b3JsZDJwaXgnLCBmbGF0dGVuUmVjdXJzaXZlKHdvcmxkVG9QaXhlbFRyYW5zZm9ybSkpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBwaXgyY2FudmFzXG4gICAgICAgIGNvbnN0IHBpeDJjYW52ID0gW1xuICAgICAgICAgICAgWzEuIC8gICh0aGlzLmNhbnZhcy53aWR0aCAvIDIpLCAgMC4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4gXSxcbiAgICAgICAgICAgIFswLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLiAvICh0aGlzLmNhbnZhcy5oZWlnaHQgLyAyKSwgIDAuIF0sXG4gICAgICAgICAgICBbLTEuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiBdXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV9waXgyY2FudicsIGZsYXR0ZW5SZWN1cnNpdmUocGl4MmNhbnYpKTtcblxuICAgICAgICAvLyBiaW5kIG5ldyBkYXRhIGFuZCByZW5kZXJcbiAgICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uU2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlci5yZW5kZXIodGhpcy5nbCwgWzAsIDAsIDAsIDBdLCB0aGlzLmludGVycG9sRmIuZmJvKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuICAgIHJlbmRlckZyYW1lKGZyYW1lU3RhdGU6IEZyYW1lU3RhdGUsIHRhcmdldDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbnZhcztcbiAgICB9XG5cbiAgICBcbiAgICByZW5kZXJEZWNsdXR0ZXIoZnJhbWVTdGF0ZTogRnJhbWVTdGF0ZSkge1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBwb2ludHNUb09ic2VydmF0aW9ucyhmZWF0dXJlczogRmVhdHVyZTxQb2ludD5bXSk6IG51bWJlcltdW10ge1xuXG4gICAgICAgIGNvbnN0IHBvaW50VG9PYnNlcnZhdGlvbiA9IChmZWF0dXJlOiBGZWF0dXJlPFBvaW50Pik6IG51bWJlcltdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkcyA9IGZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRDb29yZGluYXRlcygpO1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBmZWF0dXJlLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHJldHVybiBbY29vcmRzWzBdLCBjb29yZHNbMV0sIHByb3BzLndpbmRbMF0sIHByb3BzLndpbmRbMV1dO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmVhdHVyZXMubWFwKGYgPT4gZi5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCkpO1xuICAgICAgICBjb25zdCBkZWxhdW5leSA9IERlbGF1bmF0b3IuZnJvbShjb29yZGluYXRlcyk7XG4gICAgICAgIGNvbnN0IGluZGljZXMgPSBkZWxhdW5leS50cmlhbmdsZXM7XG4gICAgICAgIGNvbnN0IGFPYnNlcnZhdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG8gPSBwb2ludFRvT2JzZXJ2YXRpb24oZmVhdHVyZXNbaV0pO1xuICAgICAgICAgICAgYU9ic2VydmF0aW9ucy5wdXNoKG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFPYnNlcnZhdGlvbnM7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGVfcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy9saWIvb2wvY3VzdG9tUmVuZGVyZXJzL3BhcnRpY2xlX3JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3JELE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztJQUMzQyxZQUFZLE9BQU87UUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3RCLGFBQWE7UUFDWixJQUFJLENBQUMsV0FBVyxFQUF1QixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0o7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQTBCO0lBYTVELFlBQVksS0FBa0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSFQsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUtiLG9CQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxD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R0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRTtZQUNyQixNQUFNLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ29sJztcbmltcG9ydCB7IEZyYW1lU3RhdGUgfSBmcm9tICdvbC9QbHVnZ2FibGVNYXAnO1xuaW1wb3J0IExheWVyUmVuZGVyZXIgZnJvbSAnb2wvcmVuZGVyZXIvTGF5ZXInO1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgUG9pbnQgZnJvbSAnb2wvZ2VvbS9Qb2ludCc7XG5pbXBvcnQgRGVsYXVuYXRvciBmcm9tICdkZWxhdW5hdG9yJztcbmltcG9ydCB7IFNoYWRlciwgRnJhbWVidWZmZXIsIFByb2dyYW0sIFVuaWZvcm0sIFRleHR1cmUsIHJlbmRlckxvb3AsIEF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL3dlYmdsL2VuZ2luZS5jb3JlJztcbmltcG9ydCB7IHJlY3RhbmdsZUEgfSBmcm9tICcuLi8uLi93ZWJnbC9lbmdpbmUuc2hhcGVzJztcbmltcG9ydCB7IGZsYXR0ZW5SZWN1cnNpdmUgfSBmcm9tICcuLi8uLi93ZWJnbC91dGlscyc7XG5cblxuZXhwb3J0IGNsYXNzIFdpbmRGaWVsZExheWVyIGV4dGVuZHMgVmVjdG9yTGF5ZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVuZGVyZXIoKTogUGFydGljbGVSZW5kZXJlciB7XG4gICAgICAgIHJldHVybiBuZXcgUGFydGljbGVSZW5kZXJlcih0aGlzKTtcbiAgICB9XG5cbiAgICBzdGFydEFuaW1hdGlvbihmcHM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICh0aGlzLmdldFJlbmRlcmVyKCkgYXMgUGFydGljbGVSZW5kZXJlcikuc3RhcnRBbmltYXRpb24oZnBzKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhpcyByZW5kZXJlciBpbGx1c3RyYXRlcyBob3cgV2ViR0wgY2FuIGJlIHVzZWQgdG8gdG8gcGl4ZWwtYnktcGl4ZWwgY2FsY3VsYXRpb25zXG4gKiB0aGF0IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgb24gYSBDUFUgYnV0IGFyZSBlYXNpbHkgZG9uZSBvbiBhIEdQVS5cbiAqIEluIG91ciBzaGFkZXIgd2UgZ28gdGhyb3VnaCBldmVyeSBwaXhlbCBhbmQgY2FsY3VsYXRlIGl0cyBuZXcgc3RhdGUgZnJvbVxuICogaXRzIG9sZCBzdGF0ZSBhbmQgdGhhdCBvZiBpdCdzIGVudmlyb25tZW50LlxuICpcbiAqIE5vdGUgaG93IHNpbWlsYXIgaW4gcHJpbmNpcGxlIHRoaXMgaXMgdG8gQ29ud2F5J3MgR2FtZSBvZiBMaWZlOiBvbmUgcGl4ZWwncyBzdGF0ZSBpcyBkZXRlcm1pbmVkXG4gKiBieSBpdHMgc3Vycm91bmRpbmdzIGZyb20gdGhlIHRpbWUtc3RlcCBiZWZvcmUuXG4gKlxuICogVGhpcyByZW5kZXJlciBhbHNvIGlsbHVzdHJhdGVzIGFub3RoZXIgY29tbW9uIHRlY2huaXF1ZSBpbiBXZWJHTDogYGZyYW1lYnVmZmVyLXBpbmctcG9uZ2AuXG4gKiBUaGlzIGlzIHdoZXJlIHRoZSBvdXRwdXQgb2Ygb25lIHNoYWRlciBpcyBzdG9yZWQgb24gYSBmcmFtZWJ1ZmZlciBhbmQgdGhlbiBwYXNzZWQgdG8gYSBzdWJzZXF1ZW50IHNoYWRlci5cbiAqIFdpdGggdGhpcywgd2UgY2FuIGNyZWF0ZSBhIG11bHRpLXN0ZXAtcGlwZWxpbmUsIHdoZXJlIGVhY2ggc2hhZGVyIHVzZXMgdGhlIHByZXZpb3VzXG4gKiBvbmUncyBvdXRwdXQgYXMgaXRzIG93biBpbnB1dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcnRpY2xlUmVuZGVyZXIgZXh0ZW5kcyBMYXllclJlbmRlcmVyPFZlY3RvckxheWVyPiB7XG5cblxuICAgIHJlYWRvbmx5IGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgcmVhZG9ubHkgZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dDtcbiAgICByZWFkb25seSBpbnRlcnBvbGF0aW9uU2hhZGVyOiBTaGFkZXI7XG4gICAgcmVhZG9ubHkgcGFydGljbGVTaGFkZXI6IFNoYWRlcjtcbiAgICByZWFkb25seSB0ZXh0dXJlTWl4U2hhZGVyOiBTaGFkZXI7XG4gICAgcmVhZG9ubHkgaW50ZXJwb2xGYjogRnJhbWVidWZmZXI7XG4gICAgcmVhZG9ubHkgcGFydGljbGVGYjE6IEZyYW1lYnVmZmVyO1xuICAgIHJlYWRvbmx5IHBhcnRpY2xlRmIyOiBGcmFtZWJ1ZmZlcjtcbiAgICBwcml2YXRlIGZwcyA9IDMwO1xuXG4gICAgY29uc3RydWN0b3IobGF5ZXI6IFZlY3RvckxheWVyKSB7XG4gICAgICAgIHN1cGVyKGxheWVyKTtcblxuICAgICAgICAvLyBzZXR0aW5nIHVwIGNhbnZhc1xuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gMTAwMDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IDEwMDA7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cblxuICAgICAgICAvLyBwcmVwYXJpbmcgZGF0YVxuICAgICAgICBjb25zdCBzb3VyY2UgPSBsYXllci5nZXRTb3VyY2UoKTtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBzb3VyY2UuZ2V0RmVhdHVyZXMoKSBhcyBGZWF0dXJlPFBvaW50PltdO1xuICAgICAgICBjb25zdCBhT2JzZXJ2YXRpb24gPSB0aGlzLnBvaW50c1RvT2JzZXJ2YXRpb25zKGZlYXR1cmVzKTtcblxuICAgICAgICBjb25zdCBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbCcpO1xuICAgICAgICBjb25zdCByZWN0ID0gcmVjdGFuZ2xlQSgyLjAsIDIuMCk7XG5cblxuXG4gICAgICAgIC8vIC0tLS0tLS0tLSBTdGVwIDE6IGludGVycG9sYXRpbmcgZmllbGQgYmV0d2VlbiBkYXRhIHBvaW50cy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgY29uc3QgaW50ZXJwb2xQcm9ncmFtID0gbmV3IFByb2dyYW0oZ2wsIGBcbiAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfb2JzZXJ2YXRpb247XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV93b3JsZDJwaXg7XG4gICAgICAgICAgICB1bmlmb3JtIG1hdDMgdV9waXgyY2FudjtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3ZhbHVlO1xuXG4gICAgICAgICAgICB2b2lkIG1haW4oKSB7XG4gICAgICAgICAgICAgICAgdmVjMyBwaXhlbFBvc2l0aW9uID0gdV93b3JsZDJwaXggKiB2ZWMzKGFfb2JzZXJ2YXRpb24ueCwgYV9vYnNlcnZhdGlvbi55LCAxLik7XG4gICAgICAgICAgICAgICAgdmVjMyBjYW52YXNQb3NpdGlvbiA9IHVfcGl4MmNhbnYgKiBwaXhlbFBvc2l0aW9uO1xuICAgICAgICAgICAgICAgIHZfdmFsdWUgPSAoYV9vYnNlcnZhdGlvbi56dyAvIDIuMCkgKyAwLjU7XG4gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGNhbnZhc1Bvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsIGBcbiAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdmFsdWU7XG5cbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFsdWUueHksIDAuMCwgMS4wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCk7XG5cbiAgICAgICAgY29uc3QgaW50ZXJwb2xTaGFkZXIgPSBuZXcgU2hhZGVyKGludGVycG9sUHJvZ3JhbSwgW1xuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZShnbCwgaW50ZXJwb2xQcm9ncmFtLCAnYV9vYnNlcnZhdGlvbicsIGFPYnNlcnZhdGlvbilcbiAgICAgICAgXSwgW1xuICAgICAgICAgICAgbmV3IFVuaWZvcm0oZ2wsIGludGVycG9sUHJvZ3JhbSwgJ3Vfd29ybGQycGl4JywgJ21hdDMnLCBmbGF0dGVuUmVjdXJzaXZlKFtcbiAgICAgICAgICAgICAgICBbMS4sIDAuLCAwLl0sXG4gICAgICAgICAgICAgICAgWzAuLCAxLiwgMC5dLFxuICAgICAgICAgICAgICAgIFswLiwgMC4sIDEuXVxuICAgICAgICAgICAgXSkpLFxuICAgICAgICAgICAgbmV3IFVuaWZvcm0oZ2wsIGludGVycG9sUHJvZ3JhbSwgJ3VfcGl4MmNhbnYnLCAnbWF0MycsIGZsYXR0ZW5SZWN1cnNpdmUoW1xuICAgICAgICAgICAgICAgIFsxLiAvICAoY2FudmFzLndpZHRoIC8gMiksICAwLiwgICAgICAgICAgICAgICAgICAgICAgICAwLiBdLFxuICAgICAgICAgICAgICAgIFswLCAgICAgICAgICAgICAgICAgICAgICAgIC0xLiAvIChjYW52YXMuaGVpZ2h0IC8gMiksICAwLiBdLFxuICAgICAgICAgICAgICAgIFstMS4sICAgICAgICAgICAgICAgICAgICAgIDEuLCAgICAgICAgICAgICAgICAgICAgICAgICAxLiBdXG4gICAgICAgICAgICBdKSlcbiAgICAgICAgXSwgW10pO1xuXG4gICAgICAgIGNvbnN0IGludGVycG9sRmIgPSBuZXcgRnJhbWVidWZmZXIoZ2wsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cblxuXG5cbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tIFN0ZXAgMjogbW92aW5nIHBhcnRpY2xlcyBhbG9uZyBmb3JjZSBmaWVsZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgICBjb25zdCBwYXJ0aWNsZUZiMSA9IG5ldyBGcmFtZWJ1ZmZlcihnbCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgY29uc3QgcGFydGljbGVGYjIgPSBuZXcgRnJhbWVidWZmZXIoZ2wsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgICAgY29uc3QgcGFydGljbGVQcm9ncmFtID0gbmV3IFByb2dyYW0oZ2wsIGBcbiAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfdmVydGV4O1xuICAgICAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlQ29vcmQ7XG4gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlQ29vcmQ7XG4gICAgICAgICAgICB2b2lkIG1haW4oKSB7XG4gICAgICAgICAgICAgICAgdl90ZXh0dXJlQ29vcmQgPSBhX3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV92ZXJ0ZXgueHl6LCAxLjApO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLCBgXG4gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X2ZvcmNlVGV4dHVyZTtcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdV9wYXJ0aWNsZVRleHR1cmU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9kZWx0YVQ7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVDb29yZDtcblxuICAgICAgICBmbG9hdCByYW5kKHZlYzIgY28pe1xuICAgICAgICAgICAgcmV0dXJuIGZyYWN0KHNpbihkb3QoY28ueHkgLHZlYzIoMTIuOTg5OCw3OC4yMzMpKSkgKiA0Mzc1OC41NDUzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgIC8vIG1vdmluZyBwYXJ0aWNsZXNcbiAgICAgICAgICAgIHZlYzIgc3BlZWQgPSAoKHRleHR1cmUyRCh1X2ZvcmNlVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmQpIC0gMC41ICkgKiAyLjApLnh5O1xuICAgICAgICAgICAgdmVjMiBzYW1wbGVQb2ludCA9IHZfdGV4dHVyZUNvb3JkIC0gc3BlZWQgKiB1X2RlbHRhVCAqIDAuMTtcbiAgICAgICAgICAgIHNhbXBsZVBvaW50ID0gbW9kKHNhbXBsZVBvaW50LCAxLjApO1xuICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVfcGFydGljbGVUZXh0dXJlLCBzYW1wbGVQb2ludCk7XG5cbiAgICAgICAgICAgIC8vIGZhZGUgb3V0XG4gICAgICAgICAgICBmbG9hdCBmYWRlUmF0ZSA9IDAuOTU7XG4gICAgICAgICAgICBpZiAoZ2xfRnJhZ0NvbG9yLnggIT0gMS4wKSB7XG4gICAgICAgICAgICAgICAgdmVjNCBsYXN0Q29sb3IgPSB0ZXh0dXJlMkQodV9wYXJ0aWNsZVRleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTtcbiAgICAgICAgICAgICAgICB2ZWM0IGZhZGVkQ29sb3IgPSB2ZWM0KGxhc3RDb2xvci54eXogKiBmYWRlUmF0ZSwgMS4wKTtcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBmYWRlZENvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzcGF3biBhbmQgZGllLW9mZlxuICAgICAgICAgICAgZmxvYXQgc3Bhd25DaGFuY2UgPSAwLjAwMDU7XG4gICAgICAgICAgICBmbG9hdCBkaWVDaGFuY2UgPSAwLjI7XG4gICAgICAgICAgICBmbG9hdCByYW5kVmFsID0gcmFuZCh2X3RleHR1cmVDb29yZCAqIGFicyhzaW4odV9kZWx0YVQpKSAqIDAuMDEpO1xuICAgICAgICAgICAgaWYgKHJhbmRWYWwgPiAoMS4gLSBzcGF3bkNoYW5jZSkpIHsgIC8vIHNwYXduXG4gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApO1xuICAgICAgICAgICAgfSBpZiAocmFuZFZhbCA8IGRpZUNoYW5jZSkgeyAgIC8vIGRpZSBvZmZcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG5vIHBhcnRpY2xlcyBvdXRzaWRlIHRleHR1cmVcbiAgICAgICAgICAgIGlmICh0ZXh0dXJlMkQodV9mb3JjZVRleHR1cmUsIHZfdGV4dHVyZUNvb3JkKSA9PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCkpIHtcbiAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYCk7XG5cbiAgICAgICAgY29uc3QgcGFydGljbGVTaGFkZXIgPSBuZXcgU2hhZGVyKHBhcnRpY2xlUHJvZ3JhbSwgW1xuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZShnbCwgcGFydGljbGVQcm9ncmFtLCAnYV92ZXJ0ZXgnLCByZWN0LnZlcnRpY2VzKSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoZ2wsIHBhcnRpY2xlUHJvZ3JhbSwgJ2FfdGV4dHVyZUNvb3JkJywgcmVjdC50ZXh0dXJlUG9zaXRpb25zKVxuICAgICAgICBdLCBbXG4gICAgICAgICAgICBuZXcgVW5pZm9ybShnbCwgcGFydGljbGVQcm9ncmFtLCAndV9kZWx0YVQnLCAnZmxvYXQnLCBbMC4wMV0pXG4gICAgICAgIF0sIFtcbiAgICAgICAgICAgIG5ldyBUZXh0dXJlKGdsLCBwYXJ0aWNsZVByb2dyYW0sICd1X2ZvcmNlVGV4dHVyZScsIGludGVycG9sRmIuZmJvLnRleHR1cmUsIDApLFxuICAgICAgICAgICAgbmV3IFRleHR1cmUoZ2wsIHBhcnRpY2xlUHJvZ3JhbSwgJ3VfcGFydGljbGVUZXh0dXJlJywgcGFydGljbGVGYjEuZmJvLnRleHR1cmUsIDEpXG4gICAgICAgIF0pO1xuXG5cblxuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLSBTdGVwIDM6IE1peGluZyBiYWNrZ3JvdW5kLWZpZWxkIGFuZCBwYXJ0aWNsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgY29uc3QgdGV4dHVyZU1peFByb2dyYW0gPSBuZXcgUHJvZ3JhbShnbCwgYFxuICAgICAgICAgICAgYXR0cmlidXRlIHZlYzMgYV92ZXJ0ZXg7XG4gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICB2X3RleHR1cmVDb29yZCA9IGFfdGV4dHVyZUNvb3JkO1xuICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3ZlcnRleC54eXosIDEuMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsIGBcbiAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdV9iZ1RleHR1cmU7XG4gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3BhcnRpY2xlVGV4dHVyZTtcbiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleHR1cmVDb29yZDtcbiAgICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgICAgICB2ZWM0IGJnQ29sb3IgPSB0ZXh0dXJlMkQodV9iZ1RleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTtcbiAgICAgICAgICAgICAgICB2ZWM0IHBhcnRpY2xlQ29sb3IgPSB0ZXh0dXJlMkQodV9wYXJ0aWNsZVRleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTtcbiAgICAgICAgICAgICAgICB2ZWM0IGNvbG9yTWl4ID0gbWF4KHBhcnRpY2xlQ29sb3IsIGJnQ29sb3IpO1xuICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yTWl4O1xuICAgICAgICAgICAgfVxuICAgICAgICBgKTtcbiAgICAgICAgY29uc3QgdGV4dHVyZU1peFNoYWRlciA9IG5ldyBTaGFkZXIodGV4dHVyZU1peFByb2dyYW0sIFtcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoZ2wsIHRleHR1cmVNaXhQcm9ncmFtLCAnYV92ZXJ0ZXgnLCByZWN0LnZlcnRpY2VzKSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoZ2wsIHRleHR1cmVNaXhQcm9ncmFtLCAnYV90ZXh0dXJlQ29vcmQnLCByZWN0LnRleHR1cmVQb3NpdGlvbnMpXG4gICAgICAgIF0sIFtdLCBbXG4gICAgICAgICAgICBuZXcgVGV4dHVyZShnbCwgdGV4dHVyZU1peFByb2dyYW0sICd1X2JnVGV4dHVyZScsIGludGVycG9sRmIuZmJvLnRleHR1cmUsIDApLFxuICAgICAgICAgICAgbmV3IFRleHR1cmUoZ2wsIHRleHR1cmVNaXhQcm9ncmFtLCAndV9wYXJ0aWNsZVRleHR1cmUnLCBwYXJ0aWNsZUZiMS5mYm8udGV4dHVyZSwgMSlcbiAgICAgICAgXSk7XG5cblxuICAgICAgICAvLyBTZXR1cFxuICAgICAgICBpbnRlcnBvbFNoYWRlci5iaW5kKGdsKTtcbiAgICAgICAgaW50ZXJwb2xTaGFkZXIucmVuZGVyKGdsLCBbMCwgMCwgMCwgMF0sIGludGVycG9sRmIuZmJvKTtcbiAgICAgICAgdGV4dHVyZU1peFNoYWRlci5iaW5kKGdsKTtcbiAgICAgICAgdGV4dHVyZU1peFNoYWRlci5yZW5kZXIoZ2wpO1xuICAgICAgICBwYXJ0aWNsZVNoYWRlci5iaW5kKGdsKTtcblxuICAgICAgICAvLyBtYWtpbmcgZGF0YSBhdmFpbGFibGUgZm9yIGxhdGVyXG4gICAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xuICAgICAgICB0aGlzLmdsID0gZ2w7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlciA9IGludGVycG9sU2hhZGVyO1xuICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyID0gcGFydGljbGVTaGFkZXI7XG4gICAgICAgIHRoaXMudGV4dHVyZU1peFNoYWRlciA9IHRleHR1cmVNaXhTaGFkZXI7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xGYiA9IGludGVycG9sRmI7XG4gICAgICAgIHRoaXMucGFydGljbGVGYjEgPSBwYXJ0aWNsZUZiMTtcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUZiMiA9IHBhcnRpY2xlRmIyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIGNvdWxkIGFsc28gaGF2ZSBqdXN0IHN0YXJ0ZWQgdGhlIGFuaW1hdGlvbiByaWdodCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogSW5zdGVhZCB3ZSBjcmVhdGVkIGEgc2VwYXJhdGUgYHN0YXJ0QW5pbWF0aW9uYCBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiBvcHRpb25hbGx5IGJlIHJ1biBvdXRzaWRlIGFuZ3VsYXIncyB6b25lLFxuICAgICAqIHByZXZlbnRpbmcgaXQgZnJvbSBmaXJpbmcgdG9vIG1hbnkgY2hhbmdlIGN5Y2xlcy5cbiAgICAgKiBXZSBsZWF2ZSB0aGlzIGRlY2lzaW9uIHRvIHRoZSB1c2VyLCBob3dldmVyLCBiZWNhdXNlIGl0IGlzIG5vdCBhbiBvbC1yZW5kZXJlcnMgZHV0eSB0byBoYW5kbGUgYW55IGFuZ3VsYXItbG9naWMuXG4gICAgICovXG4gICAgc3RhcnRBbmltYXRpb24oZnBzOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mcHMgPSBmcHM7XG5cbiAgICAgICAgLy8gQW5pbWF0aW9uIGxvb3BcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgZmJJbjtcbiAgICAgICAgbGV0IGZiT3V0O1xuICAgICAgICByZW5kZXJMb29wKHRoaXMuZnBzLCAoZGVsdGFUOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGkgKz0gMTtcblxuICAgICAgICAgICAgLy8gZnJhbWVidWZmZXIgcGluZy1wb25nXG4gICAgICAgICAgICBpZiAoaSAlIDIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBmYkluID0gdGhpcy5wYXJ0aWNsZUZiMTtcbiAgICAgICAgICAgICAgICBmYk91dCA9IHRoaXMucGFydGljbGVGYjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZiSW4gPSB0aGlzLnBhcnRpY2xlRmIyO1xuICAgICAgICAgICAgICAgIGZiT3V0ID0gdGhpcy5wYXJ0aWNsZUZiMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcGFydGljbGUgc2hhZGVyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyLnRleHR1cmVzWzFdLnRleHR1cmUgPSBmYkluLmZiby50ZXh0dXJlO1xuICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV9kZWx0YVQnLCBbZGVsdGFUXSk7XG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlU2hhZGVyLnJlbmRlcih0aGlzLmdsLCBudWxsLCBmYk91dC5mYm8pO1xuXG4gICAgICAgICAgICAvLyB0ZXh0dXJlIHRvIG91dHB1dFxuICAgICAgICAgICAgdGhpcy50ZXh0dXJlTWl4U2hhZGVyLnRleHR1cmVzWzFdLnRleHR1cmUgPSBmYk91dC5mYm8udGV4dHVyZTtcbiAgICAgICAgICAgIHRoaXMudGV4dHVyZU1peFNoYWRlci5iaW5kKHRoaXMuZ2wpO1xuICAgICAgICAgICAgdGhpcy50ZXh0dXJlTWl4U2hhZGVyLnJlbmRlcih0aGlzLmdsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RvcEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mcHMgPSAwO1xuICAgIH1cblxuXG4gICAgcHJlcGFyZUZyYW1lKGZyYW1lU3RhdGU6IEZyYW1lU3RhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbGF5ZXJTdGF0ZSA9IGZyYW1lU3RhdGUubGF5ZXJTdGF0ZXNBcnJheVtmcmFtZVN0YXRlLmxheWVySW5kZXhdO1xuICAgICAgICBjb25zdCBzaXplID0gZnJhbWVTdGF0ZS5zaXplO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gbGF5ZXJTdGF0ZS5vcGFjaXR5O1xuICAgICAgICBpZiAoc2l6ZVswXSAhPT0gdGhpcy5jYW52YXMud2lkdGggfHwgc2l6ZVsxXSAhPT0gdGhpcy5jYW52YXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHNpemVbMF07XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBzaXplWzFdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLm9wYWNpdHkgPSBgJHtvcGFjaXR5fWA7XG5cbiAgICAgICAgLy8gdXBkYXRlIHdvcmxkMnBpeFxuICAgICAgICBjb25zdCBjMnBUID0gZnJhbWVTdGF0ZS5jb29yZGluYXRlVG9QaXhlbFRyYW5zZm9ybTtcbiAgICAgICAgY29uc3Qgd29ybGRUb1BpeGVsVHJhbnNmb3JtID0gW1xuICAgICAgICAgICAgW2MycFRbMF0sICAgYzJwVFsxXSwgICAgMC4gXSxcbiAgICAgICAgICAgIFtjMnBUWzJdLCAgIGMycFRbM10sICAgIDAuIF0sXG4gICAgICAgICAgICBbYzJwVFs0XSwgICBjMnBUWzVdLCAgICAxLiBdXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV93b3JsZDJwaXgnLCBmbGF0dGVuUmVjdXJzaXZlKHdvcmxkVG9QaXhlbFRyYW5zZm9ybSkpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBwaXgyY2FudmFzXG4gICAgICAgIGNvbnN0IHBpeDJjYW52ID0gW1xuICAgICAgICAgICAgWzEuIC8gICh0aGlzLmNhbnZhcy53aWR0aCAvIDIpLCAgMC4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4gXSxcbiAgICAgICAgICAgIFswLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLiAvICh0aGlzLmNhbnZhcy5oZWlnaHQgLyAyKSwgIDAuIF0sXG4gICAgICAgICAgICBbLTEuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiBdXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlci51cGRhdGVVbmlmb3JtRGF0YSh0aGlzLmdsLCAndV9waXgyY2FudicsIGZsYXR0ZW5SZWN1cnNpdmUocGl4MmNhbnYpKTtcblxuICAgICAgICAvLyBiaW5kIG5ldyBkYXRhIGFuZCByZW5kZXJcbiAgICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uU2hhZGVyLmJpbmQodGhpcy5nbCk7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGlvblNoYWRlci5yZW5kZXIodGhpcy5nbCwgWzAsIDAsIDAsIDBdLCB0aGlzLmludGVycG9sRmIuZmJvKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuICAgIHJlbmRlckZyYW1lKGZyYW1lU3RhdGU6IEZyYW1lU3RhdGUsIHRhcmdldDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbnZhcztcbiAgICB9XG5cbiAgICBcbiAgICByZW5kZXJEZWNsdXR0ZXIoZnJhbWVTdGF0ZTogRnJhbWVTdGF0ZSkge1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBwb2ludHNUb09ic2VydmF0aW9ucyhmZWF0dXJlczogRmVhdHVyZTxQb2ludD5bXSk6IG51bWJlcltdW10ge1xuXG4gICAgICAgIGNvbnN0IHBvaW50VG9PYnNlcnZhdGlvbiA9IChmZWF0dXJlOiBGZWF0dXJlPFBvaW50Pik6IG51bWJlcltdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkcyA9IGZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRDb29yZGluYXRlcygpO1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBmZWF0dXJlLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHJldHVybiBbY29vcmRzWzBdLCBjb29yZHNbMV0sIHByb3BzLndpbmRbMF0sIHByb3BzLndpbmRbMV1dO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmVhdHVyZXMubWFwKGYgPT4gZi5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCkpO1xuICAgICAgICBjb25zdCBkZWxhdW5leSA9IERlbGF1bmF0b3IuZnJvbShjb29yZGluYXRlcyk7XG4gICAgICAgIGNvbnN0IGluZGljZXMgPSBkZWxhdW5leS50cmlhbmdsZXM7XG4gICAgICAgIGNvbnN0IGFPYnNlcnZhdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG8gPSBwb2ludFRvT2JzZXJ2YXRpb24oZmVhdHVyZXNbaV0pO1xuICAgICAgICAgICAgYU9ic2VydmF0aW9ucy5wdXNoKG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFPYnNlcnZhdGlvbnM7XG4gICAgfVxufVxuIl19

@@ -162,2 +162,2 @@ import LayerGroup from 'ol/layer/Group';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMtb2wuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvIiwic291cmNlcyI6WyJsaWIvb2wvdXRpbHMtb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU94QyxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQW1CO0lBQzdDLElBQUksZUFBZSxHQUFpQixFQUFFLENBQUM7SUFDdkMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDeEIsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFO1lBQzdCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxlQUFlLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDakY7YUFBTTtZQUNILHVFQUF1RTtZQUN2RSxpSEFBaUg7WUFDakgsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFtQixDQUFDLENBQUM7U0FDN0M7S0FDSjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUM7QUFJRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFRLEVBQUUsWUFBaUQsRUFDekYsTUFBMEUsRUFBRSxVQUFVLEdBQUcsS0FBSztJQUU5RixrQ0FBa0M7SUFDbEMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hC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QyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksbUJBQW1CLElBQUksa0JBQWtCLEVBQUU7UUFDM0MsOEZBQThGO1FBQzlGLDBEQUEwRDtRQUMxRCxpRUFBaUU7UUFDakUsc0VBQXNFO1FBQ3RFLFlBQVksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsWUFBWSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztLQUM3QztJQUVELHVCQUF1QixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUV6RCw0QkFBNEI7UUFDNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUM5QyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcCwgVmlldyB9IGZyb20gJ29sJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IEJhc2VMYXllciBmcm9tICdvbC9sYXllci9CYXNlJztcbmltcG9ydCBMYXllckdyb3VwIGZyb20gJ29sL2xheWVyL0dyb3VwJztcbmltcG9ydCBSZW5kZXJFdmVudCBmcm9tICdvbC9yZW5kZXIvRXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRzS2V5IH0gZnJvbSAnb2wvZXZlbnRzJztcbmltcG9ydCB7IHVuQnlLZXkgfSBmcm9tICdvbC9PYnNlcnZhYmxlJztcbmltcG9ydCBJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbi9JbnRlcmFjdGlvbic7XG5cblxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5MYXllcnMobGF5ZXJzOiBCYXNlTGF5ZXJbXSk6IExheWVyPGFueT5bXSB7XG4gICAgbGV0IGZsYXR0ZW5lZExheWVyczogTGF5ZXI8YW55PltdID0gW107XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTGF5ZXJHcm91cCkge1xuICAgICAgICAgICAgY29uc3Qgc3ViTGF5ZXJzID0gbGF5ZXIuZ2V0TGF5ZXJzKCkuZ2V0QXJyYXkoKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZFN1YkxheWVycyA9IGZsYXR0ZW5MYXllcnMoc3ViTGF5ZXJzKTtcbiAgICAgICAgICAgIGZsYXR0ZW5lZExheWVycyA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQoZmxhdHRlbmVkTGF5ZXJzLCBmbGF0dGVuZWRTdWJMYXllcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBjYXN0IGlzIG9rOiBzaW5jZSBgbGF5ZXJgIGlzIG5vIExheWVyR3JvdXAsIGl0IG11c3QgYmUgYSBMYXllci5cbiAgICAgICAgICAgIC8vIFNlZSB0aGUgYFN1YmNsYXNzZXNgIHNlY3Rpb24gaGVyZTogaHR0cHM6Ly9vcGVubGF5ZXJzLm9yZy9lbi9sYXRlc3QvYXBpZG9jL21vZHVsZS1vbF9sYXllcl9CYXNlLUJhc2VMYXllci5odG1sXG4gICAgICAgICAgICBmbGF0dGVuZWRMYXllcnMucHVzaChsYXllciBhcyBMYXllcjxhbnk+KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdHRlbmVkTGF5ZXJzO1xufVxuXG5cblxuLyoqXG4gKiBNZXJnZXMgYWxsIGxheWVycyBvZiBhIG1hcCBpbnRvIG9uZSBjYW52YXMgaW1hZ2UuXG4gKiBBc3N1bWVzIHRoYXQgdGhlIGBgdGFyZ2V0Q2FudmFzYGAgaGFzIHRoZSBzYW1lIHNpemUgYXMgdGhlIG1hcCEgSWYgaXQgZG9lc24ndCwgdXNlIGBzY2FsZWRNYXBUb1NpbmdsZUNhbnZhc2AgaW5zdGVhZC5cbiAqIENyZWF0ZSBhIHRhcmdldC1jYW52YXMgb2YgYW4gYXBwcm9wcmlhdGUgc2l6ZS5cbiAqICAxLiBUcmlnZ2VyIGEgbGF5ZXItcmUtcmVuZGVyLlxuICogIDIuIEZvciBlYWNoIGxheWVyLCB3ZSBjYXB0dXJlIHRoZSAncG9zdHJlbmRlcicgZXZlbnQgLi4uXG4gKiAgMy4gLi4uIGFuZCBjb3B5IHRoZSBjYW52YXMtYml0bWFwIGludG8gdGhlIHRhcmdldC5cbiAqXG4gKiBOb3RlOiBpZiB0aGUgdXNlciBtb3ZlcyB0aGUgb3JpZ2luYWwgbWFwIHdoaWxlIHRoZSByZW5kZXItcHJvY2VzcyBpcyBzdGlsbCBvbmdvaW5nLCB0aGlzIGNhbiBkaXN0b3J0IHRoZSBvdXRwdXQuXG4gKiBXZSB3b3VsZCBzdWdnZXN0IHRvIGRlYWN0aXZhdGUgdXNlci1pbnRlcmFjdGlvbnMgdW50aWwgdGhlICdvbkRvbmUnIGNhbGxiYWNrIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIE5vdGUgYWxzbzogQmVmb3JlIHBhc3NpbmcgdGhlIGNhbnZhcywgc2V0IGl0cyBkcmF3aW5nLWJ1ZmZlciBzaXplOiBgY2FudmFzLndpZHRoYCBhbmQgYGNhbnZhcy5oZWlnaHRgLlxuICogVGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgYWN0dWFsbHkgZHJhd24gaW1hZ2UgaW4gcGl4ZWxzLlxuICogTm90ZSB0aGF0IHRoaXMgdmFsdWUgbWF5IGRpZmZlciBmcm9tIGNsaWVudFdpZHRoL2NsaWVudEhlaWdodDogdGhhdCBpcyB0aGUgc2l6ZSB0byB3aGljaCB0aGUgYWN0dWFsIGltYWdlIGlzIHNjYWxlZCB0byBpbiB0aGUgRE9NLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9TaW5nbGVDYW52YXMobWFwOiBNYXAsIHRhcmdldENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXMsXG4gICAgb25Eb25lOiAodXBkYXRlZFRhcmdldENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXMpID0+IHZvaWQsIGtlZXBTeW5jZWQgPSBmYWxzZSk6IHZvaWQge1xuXG4gICAgLy8gU3RlcCAwOiBpbnNwZWN0aW5nIHRhcmdldENhbnZhc1xuICAgIGNvbnN0IHRhcmdldENvbnRleHQgPSB0YXJnZXRDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoIXRhcmdldENvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdGFyZ2V0LWNhbnZhcyBuZWVkcyB0byB1c2UgYSAyZC1jb250ZXh0LicpO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldENhbnZhcy53aWR0aCB8fCAhdGFyZ2V0Q2FudmFzLmhlaWdodCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldENhbnZhczogd2lkdGggb3IgaGVpZ2h0IGhhdmUgbm90IGJlZW4gc2V0LicpO1xuICAgIH1cbiAgICB0YXJnZXRDb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0YXJnZXRDYW52YXMud2lkdGgsIHRhcmdldENhbnZhcy5oZWlnaHQpO1xuXG4gICAgY29uc3QgbWFwU2l6ZSA9IG1hcC5nZXRTaXplKCk7XG4gICAgY29uc3QgbWFwUmVzb2x1dGlvbiA9IG1hcC5nZXRWaWV3KCkuZ2V0UmVzb2x1dGlvbigpO1xuICAgIHRhcmdldENhbnZhcy53aWR0aCA9IG1hcFNpemVbMF07XG4gICAgdGFyZ2V0Q2FudmFzLmhlaWdodCA9IG1hcFNpemVbMV07XG5cbiAgICBjb25zdCBsYXllcnMgPSBmbGF0dGVuTGF5ZXJzKG1hcC5nZXRMYXllcnMoKS5nZXRBcnJheSgpKTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBFdmVudHNLZXlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICAgIGlmIChsYXllci5nZXRWaXNpYmxlKCkgJiYgbGF5ZXIuZ2V0T3BhY2l0eSgpID4gMC4wKSB7XG4gICAgICAgICAgICAvLyBTdGVwIDI6IGNhdGNoIGVhY2ggbGF5ZXIncyBwb3N0cmVuZGVyIGV2ZW50LlxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IG9sL3JlbmRlcmVyL3dlYmdsLyogZG9lcyBub3QgY2FsbCBgdGhpcy5wb3N0UmVuZGVyKGNvbnRleHQsIGZyYW1lU3RhdGUpYFxuICAgICAgICAgICAgLy8gaW4gYHJlbmRlckZyYW1lYCAtIHNvIGhlYXRtYXBzIHdvbid0IGJlIGNvcGllZCBoZXJlIVxuICAgICAgICAgICAgY29uc3Qga2V5ID0gbGF5ZXIub24oJ3Bvc3RyZW5kZXInLCAoZXZlbnQ6IFJlbmRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlQ29udGV4dCA9IGV2ZW50LmNvbnRleHQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlQ2FudmFzID0gc291cmNlQ29udGV4dC5jYW52YXM7XG4gICAgICAgICAgICAgICAgLy8gU3RlcCAzOiBjb3B5IHNvdXJjZSBiaXRtYXAgdG8gdGFyZ2V0LWNhbnZhcy5cbiAgICAgICAgICAgICAgICB0YXJnZXRDb250ZXh0LmRyYXdJbWFnZShzb3VyY2VDYW52YXMsIDAsIDAsIHNvdXJjZUNhbnZhcy5jbGllbnRXaWR0aCwgc291cmNlQ2FudmFzLmNsaWVudEhlaWdodCwgMCwgMCwgdGFyZ2V0Q2FudmFzLndpZHRoLCB0YXJnZXRDYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSl7XG4gICAgICAgICAgICAgIGtleS5tYXAoayA9PiBzdWJzY3JpcHRpb25zLnB1c2goaykpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtlZXBTeW5jZWQpIHtcbiAgICAgICAgbWFwLm9uKCdyZW5kZXJjb21wbGV0ZScsIChldnQ6IFJlbmRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICBvbkRvbmUodGFyZ2V0Q2FudmFzKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaWYgd2UgZG9uJ3Qgd2FudCB0aGUgY2FudmFzIHRvIHJlbWFpbiBpbiBzeW5jIHdpdGggdGhlIG1hcCwgd2UgdW5zdWJzY3JpYmUgdG8gZnVydGhlciBjaGFuZ2VzIGhlcmUuXG4gICAgICAgIG1hcC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsIChldnQ6IFJlbmRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBub3RlIHRoYXQgYSBtYXAtcmVuZGVyLWV2ZW50IGRvZXMgbm90IGhhdmUgYSBjb250ZXh0IC4uLiBjb250cmFyeSB0byBhIGxheWVyLXJlbmRlci1ldmVudC5cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB1bkJ5S2V5KGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkRvbmUodGFyZ2V0Q2FudmFzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAxOiB0cmlnZ2VyIGEgcmUtcmVuZGVyIG9mIHRoZSBtYXAuXG4gICAgbWFwLnJlbmRlclN5bmMoKTtcblxufVxuXG5cbi8qKlxuICogQ29waWVzIGEgbWFwJ3MgbGF5ZXJzIG9udG8gYSBzaW5nbGUgY2FudmFzLlxuICogRm9yIHRoaXMsIHdlIC4uLlxuICogIDEuIFVwZGF0ZSB0aGUgb3JpZ2luYWwgbWFwJ3Mgc2l6ZSB0byBtYXRjaCB0aGUgdGFyZ2V0LWNhbnZhcy5cbiAqICAyLiBHZXQgYW4gaW1hZ2Ugb2YgdGhlIHNjYWxlZCBtYXBcbiAqICAzLiBSZXNldCB0aGUgbWFwJ3MgZGltZW5zaW9ucyB0byB0aGUgaW5pdGlhbCB2YWx1ZXMuXG4gKlxuICogTm90ZTogaWYgdGhlIHVzZXIgbW92ZXMgdGhlIG9yaWdpbmFsIG1hcCB3aGlsZSB0aGUgcmVuZGVyLXByb2Nlc3MgaXMgc3RpbGwgb25nb2luZywgdGhpcyBjYW4gZGlzdG9ydCB0aGUgb3V0cHV0LlxuICogV2Ugd291bGQgc3VnZ2VzdCB0byBkZWFjdGl2YXRlIHVzZXItaW50ZXJhY3Rpb25zIHVudGlsIHRoZSAnZG9uZScgY2FsbGJhY2sgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogTm90ZSBhbHNvOiBCZWZvcmUgcGFzc2luZyB0aGUgY2FudmFzLCBzZXQgaXRzIGRyYXdpbmctYnVmZmVyIHNpemU6IGBjYW52YXMud2lkdGhgIGFuZCBgY2FudmFzLmhlaWdodGAuXG4gKiBUaGlzIGlzIHRoZSBzaXplIG9mIHRoZSBhY3R1YWxseSBkcmF3biBpbWFnZSBpbiBwaXhlbHMuXG4gKiBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBtYXkgZGlmZmVyIGZyb20gY2xpZW50V2lkdGgvY2xpZW50SGVpZ2h0OiB0aGF0IGlzIHRoZSBzaXplIHRvIHdoaWNoIHRoZSBhY3R1YWwgaW1hZ2UgaXMgc2NhbGVkIHRvIGluIHRoZSBET00uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZWRNYXBUb1NpbmdsZUNhbnZhcyhtYXA6IE1hcCwgdGFyZ2V0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcyxcbiAgICBvbkRvbmU6ICh1cGRhdGVkVGFyZ2V0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcykgPT4gdm9pZCwga2VlcFN5bmNlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgLyogQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggd291bGQgYmUgdG8gY3JlYXRlIGEgbmV3IG1hcCB3aXRoIHRoZSBkZXNpcmVkIHNpemUgYW5kIGNvcGllcyBvZiB0aGUgb2xkIG1hcCdzIGxheWVycy5cbiAgICAgKiBUaGlzIHdheSB3ZSB3b3VsZG4ndCBoYXZlIHRvIG1lc3Mgd2l0aCB0aGUgb3JpZ2luYWwgbWFwJ3Mgc2l6ZS5cbiAgICAgKiBCdXQgdW5mb3J0dW5hdGVseSBvcGVubGF5ZXJzIHByb3ZpZGVzIG5vIG1lYW5zIG9mIGNsb25pbmcgYSBsYXllci5cbiAgICAgKiBJIGNvdWxkIG5vdCBmaW5kIG9uZSwgZWl0aGVyOiBuZWl0aGVyIG9mIEpTT04ucGFyc2UsIGxvZGFzaC5jbG9uZURlZXAsIHJhbWRhLmNsb25lIG9yIHJmZGMgd29ya3MgaGVyZS5cbiAgICAgKi9cblxuICAgIC8vIFN0ZXAgMTogYWRqdXN0IG1hcC1zaXplIHRvIG1hdGNoIHRhcmdldENhbnZhcy5cbiAgICBjb25zdCBpbml0aWFsTWFwU2l6ZSA9IG1hcC5nZXRTaXplKCk7XG4gICAgY29uc3QgaW5pdGlhbE1hcFJlc29sdXRpb24gPSBtYXAuZ2V0VmlldygpLmdldFJlc29sdXRpb24oKTtcbiAgICBtYXAuc2V0U2l6ZShbdGFyZ2V0Q2FudmFzLndpZHRoLCB0YXJnZXRDYW52YXMuaGVpZ2h0XSk7XG4gICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbih0YXJnZXRDYW52YXMud2lkdGggLyBpbml0aWFsTWFwU2l6ZVswXSwgdGFyZ2V0Q2FudmFzLmhlaWdodCAvIGluaXRpYWxNYXBTaXplWzFdKTtcbiAgICBtYXAuZ2V0VmlldygpLnNldFJlc29sdXRpb24oaW5pdGlhbE1hcFJlc29sdXRpb24gLyBzY2FsZSk7XG5cbiAgICAvLyBTdGVwIDI6IGdldCBpbWFnZSBvZiBzY2FsZWQgbWFwXG4gICAgbWFwVG9TaW5nbGVDYW52YXMobWFwLCB0YXJnZXRDYW52YXMsICh1cGRhdGVkVGFyZ2V0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4ge1xuICAgICAgICAvLyBTdGVwIDM6IHNldCBtYXAtc2l6ZSBiYWNrIHRvIGluaXRpYWwgdmFsdWVzLlxuICAgICAgICBtYXAuc2V0U2l6ZShpbml0aWFsTWFwU2l6ZSk7XG4gICAgICAgIG1hcC5nZXRWaWV3KCkuc2V0UmVzb2x1dGlvbihpbml0aWFsTWFwUmVzb2x1dGlvbik7XG4gICAgICAgIG9uRG9uZSh1cGRhdGVkVGFyZ2V0Q2FudmFzKTtcbiAgICB9LCBrZWVwU3luY2VkKTtcbn1cblxuXG4vKipcbiAqIEEgY29tZm9ydC1mdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHNuYXBzaG90IG9mIGEgbWFwIGludG8gYSBjYW52YXMuXG4gKiBIYWx0cyBhbGwgbWFwLWludGVyYWN0aW9ucyB0byBwcmV2ZW50IHRoZSB1c2VyIGZyb20gcGFubmluZyB0aGUgbWFwIGR1cmluZyByZW5kZXJpbmcuXG4gKiBTZXRzIHRoZSBjYW52YXMnIGludGVybmFsIGRyYXdpbmctYnVmZmVyLXNpemU6IHRoaXMgd2F5LCB0aGUgY2FudmFzJyBjb250ZW50cyBjYW4gYmUgZXhwb3J0ZWRcbiAqIGluIHRoZSBkcmF3aW5nLWJ1ZmZlci1zaXplLCB3aGljaCBtYXkgZGlmZmVyIGZyb20gdGhlIGRpc3BsYXktc2l6ZSAodGhlIGxhdHRlciBpcyBzZXQgYnkgdGhlIERPTS9DU1MpLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiBgYGBcbiAqICAgcHJldmlld0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAqICAgc2ltcGxlTWFwVG9DYW52YXMobWFwLCBwcmV2aWV3Q2FudmFzLCBwYXBlci53aWR0aFB4LCBwYXBlci5oZWlnaHRQeCwgKHVwZGF0ZWQpID0+IHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdkb25lJyk7XG4gKiAgIH0pO1xuICogICBkb3dubG9hZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAqICAgICAgZG93bmxvYWRVcmwocHJldmlld0NhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpLCAnZnVsbCcpO1xuICogICB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxlTWFwVG9DYW52YXMobWFwOiBNYXAsIHRhcmdldENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXMsIGRyYXdpbmdCdWZmZXJXaWR0aD86IG51bWJlciwgZHJhd2luZ0J1ZmZlckhlaWdodD86IG51bWJlcixcbiAgICBvbkRvbmU/OiAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcykgPT4gdm9pZCwga2VlcFN5bmNlZCA9IGZhbHNlKSB7XG5cbiAgICAvLyBIYWx0aW5nIGludGVyYWN0aW9uczogcHJldmVudHMgdXNlciBmcm9tIHBhbm5pbmcgbWFwIGR1cmluZyBkcmF3aW5nIHByb2Nlc3MuXG4gICAgY29uc3QgaW50ZXJhY3Rpb25zID0gbWFwLmdldEludGVyYWN0aW9ucygpO1xuICAgIGludGVyYWN0aW9ucy5mb3JFYWNoKChpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24pID0+IHtcbiAgICAgICAgaW50ZXJhY3Rpb24uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGlmIChkcmF3aW5nQnVmZmVySGVpZ2h0ICYmIGRyYXdpbmdCdWZmZXJXaWR0aCkge1xuICAgICAgICAvLyBCZWZvcmUgcGFzc2luZyB0aGUgY2FudmFzLCBzZXQgaXRzIGRyYXdpbmctYnVmZmVyIHNpemU6IGBjYW52YXMud2lkdGhgIGFuZCBgY2FudmFzLmhlaWdodGAuXG4gICAgICAgIC8vIFRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIGFjdHVhbGx5IGRyYXduIGltYWdlIGluIHBpeGVscy5cbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgdmFsdWUgbWF5IGRpZmZlciBmcm9tIGNsaWVudFdpZHRoL2NsaWVudEhlaWdodDpcbiAgICAgICAgLy8gdGhhdCBpcyB0aGUgc2l6ZSB0byB3aGljaCB0aGUgYWN0dWFsIGltYWdlIGlzIHNjYWxlZCB0byBpbiB0aGUgRE9NLlxuICAgICAgICB0YXJnZXRDYW52YXMud2lkdGggPSBkcmF3aW5nQnVmZmVyV2lkdGg7XG4gICAgICAgIHRhcmdldENhbnZhcy5oZWlnaHQgPSBkcmF3aW5nQnVmZmVySGVpZ2h0O1xuICAgIH1cblxuICAgIHNjYWxlZE1hcFRvU2luZ2xlQ2FudmFzKG1hcCwgdGFyZ2V0Q2FudmFzLCAodXBkYXRlZENhbnZhcykgPT4ge1xuXG4gICAgICAgIC8vIHJlYWN0aXZhdGluZyBpbnRlcmFjdGlvbnNcbiAgICAgICAgaW50ZXJhY3Rpb25zLmZvckVhY2goKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaW50ZXJhY3Rpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAob25Eb25lKSB7XG4gICAgICAgICAgICBvbkRvbmUodXBkYXRlZENhbnZhcyk7XG4gICAgICAgIH1cbiAgICB9LCBrZWVwU3luY2VkKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMtb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy9saWIvb2wvdXRpbHMtb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU94QyxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQW1CO0lBQzdDLElBQUksZUFBZSxHQUFpQixFQUFFLENBQUM7SUFDdkMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDeEIsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFO1lBQzdCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxlQUFlLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDakY7YUFBTTtZQUNILHVFQUF1RTtZQUN2RSxpSEFBaUg7WUFDakgsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFtQixDQUFDLENBQUM7U0FDN0M7S0FDSjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUM7QUFJRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFRLEVBQUUsWUFBaUQsRUFDekYsTUFBMEUsRUFBRSxVQUFVLEdBQUcsS0FBSztJQUU5RixrQ0FBa0M7SUFDbEMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztLQUNuRTtJQUNELElB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QW1CLElBQUksa0JBQWtCLEVBQUU7UUFDM0MsOEZBQThGO1FBQzlGLDBEQUEwRDtRQUMxRCxpRUFBaUU7UUFDakUsc0VBQXNFO1FBQ3RFLFlBQVksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsWUFBWSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztLQUM3QztJQUVELHVCQUF1QixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUV6RCw0QkFBNEI7UUFDNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUM5QyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcCwgVmlldyB9IGZyb20gJ29sJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IEJhc2VMYXllciBmcm9tICdvbC9sYXllci9CYXNlJztcbmltcG9ydCBMYXllckdyb3VwIGZyb20gJ29sL2xheWVyL0dyb3VwJztcbmltcG9ydCBSZW5kZXJFdmVudCBmcm9tICdvbC9yZW5kZXIvRXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRzS2V5IH0gZnJvbSAnb2wvZXZlbnRzJztcbmltcG9ydCB7IHVuQnlLZXkgfSBmcm9tICdvbC9PYnNlcnZhYmxlJztcbmltcG9ydCBJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbi9JbnRlcmFjdGlvbic7XG5cblxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5MYXllcnMobGF5ZXJzOiBCYXNlTGF5ZXJbXSk6IExheWVyPGFueT5bXSB7XG4gICAgbGV0IGZsYXR0ZW5lZExheWVyczogTGF5ZXI8YW55PltdID0gW107XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTGF5ZXJHcm91cCkge1xuICAgICAgICAgICAgY29uc3Qgc3ViTGF5ZXJzID0gbGF5ZXIuZ2V0TGF5ZXJzKCkuZ2V0QXJyYXkoKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZFN1YkxheWVycyA9IGZsYXR0ZW5MYXllcnMoc3ViTGF5ZXJzKTtcbiAgICAgICAgICAgIGZsYXR0ZW5lZExheWVycyA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQoZmxhdHRlbmVkTGF5ZXJzLCBmbGF0dGVuZWRTdWJMYXllcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBjYXN0IGlzIG9rOiBzaW5jZSBgbGF5ZXJgIGlzIG5vIExheWVyR3JvdXAsIGl0IG11c3QgYmUgYSBMYXllci5cbiAgICAgICAgICAgIC8vIFNlZSB0aGUgYFN1YmNsYXNzZXNgIHNlY3Rpb24gaGVyZTogaHR0cHM6Ly9vcGVubGF5ZXJzLm9yZy9lbi9sYXRlc3QvYXBpZG9jL21vZHVsZS1vbF9sYXllcl9CYXNlLUJhc2VMYXllci5odG1sXG4gICAgICAgICAgICBmbGF0dGVuZWRMYXllcnMucHVzaChsYXllciBhcyBMYXllcjxhbnk+KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdHRlbmVkTGF5ZXJzO1xufVxuXG5cblxuLyoqXG4gKiBNZXJnZXMgYWxsIGxheWVycyBvZiBhIG1hcCBpbnRvIG9uZSBjYW52YXMgaW1hZ2UuXG4gKiBBc3N1bWVzIHRoYXQgdGhlIGBgdGFyZ2V0Q2FudmFzYGAgaGFzIHRoZSBzYW1lIHNpemUgYXMgdGhlIG1hcCEgSWYgaXQgZG9lc24ndCwgdXNlIGBzY2FsZWRNYXBUb1NpbmdsZUNhbnZhc2AgaW5zdGVhZC5cbiAqIENyZWF0ZSBhIHRhcmdldC1jYW52YXMgb2YgYW4gYXBwcm9wcmlhdGUgc2l6ZS5cbiAqICAxLiBUcmlnZ2VyIGEgbGF5ZXItcmUtcmVuZGVyLlxuICogIDIuIEZvciBlYWNoIGxheWVyLCB3ZSBjYXB0dXJlIHRoZSAncG9zdHJlbmRlcicgZXZlbnQgLi4uXG4gKiAgMy4gLi4uIGFuZCBjb3B5IHRoZSBjYW52YXMtYml0bWFwIGludG8gdGhlIHRhcmdldC5cbiAqXG4gKiBOb3RlOiBpZiB0aGUgdXNlciBtb3ZlcyB0aGUgb3JpZ2luYWwgbWFwIHdoaWxlIHRoZSByZW5kZXItcHJvY2VzcyBpcyBzdGlsbCBvbmdvaW5nLCB0aGlzIGNhbiBkaXN0b3J0IHRoZSBvdXRwdXQuXG4gKiBXZSB3b3VsZCBzdWdnZXN0IHRvIGRlYWN0aXZhdGUgdXNlci1pbnRlcmFjdGlvbnMgdW50aWwgdGhlICdvbkRvbmUnIGNhbGxiYWNrIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIE5vdGUgYWxzbzogQmVmb3JlIHBhc3NpbmcgdGhlIGNhbnZhcywgc2V0IGl0cyBkcmF3aW5nLWJ1ZmZlciBzaXplOiBgY2FudmFzLndpZHRoYCBhbmQgYGNhbnZhcy5oZWlnaHRgLlxuICogVGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgYWN0dWFsbHkgZHJhd24gaW1hZ2UgaW4gcGl4ZWxzLlxuICogTm90ZSB0aGF0IHRoaXMgdmFsdWUgbWF5IGRpZmZlciBmcm9tIGNsaWVudFdpZHRoL2NsaWVudEhlaWdodDogdGhhdCBpcyB0aGUgc2l6ZSB0byB3aGljaCB0aGUgYWN0dWFsIGltYWdlIGlzIHNjYWxlZCB0byBpbiB0aGUgRE9NLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9TaW5nbGVDYW52YXMobWFwOiBNYXAsIHRhcmdldENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXMsXG4gICAgb25Eb25lOiAodXBkYXRlZFRhcmdldENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXMpID0+IHZvaWQsIGtlZXBTeW5jZWQgPSBmYWxzZSk6IHZvaWQge1xuXG4gICAgLy8gU3RlcCAwOiBpbnNwZWN0aW5nIHRhcmdldENhbnZhc1xuICAgIGNvbnN0IHRhcmdldENvbnRleHQgPSB0YXJnZXRDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoIXRhcmdldENvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdGFyZ2V0LWNhbnZhcyBuZWVkcyB0byB1c2UgYSAyZC1jb250ZXh0LicpO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldENhbnZhcy53aWR0aCB8fCAhdGFyZ2V0Q2FudmFzLmhlaWdodCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldENhbnZhczogd2lkdGggb3IgaGVpZ2h0IGhhdmUgbm90IGJlZW4gc2V0LicpO1xuICAgIH1cbiAgICB0YXJnZXRDb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0YXJnZXRDYW52YXMud2lkdGgsIHRhcmdldENhbnZhcy5oZWlnaHQpO1xuXG4gICAgY29uc3QgbWFwU2l6ZSA9IG1hcC5nZXRTaXplKCk7XG4gICAgY29uc3QgbWFwUmVzb2x1dGlvbiA9IG1hcC5nZXRWaWV3KCkuZ2V0UmVzb2x1dGlvbigpO1xuICAgIHRhcmdldENhbnZhcy53aWR0aCA9IG1hcFNpemVbMF07XG4gICAgdGFyZ2V0Q2FudmFzLmhlaWdodCA9IG1hcFNpemVbMV07XG5cbiAgICBjb25zdCBsYXllcnMgPSBmbGF0dGVuTGF5ZXJzKG1hcC5nZXRMYXllcnMoKS5nZXRBcnJheSgpKTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBFdmVudHNLZXlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICAgIGlmIChsYXllci5nZXRWaXNpYmxlKCkgJiYgbGF5ZXIuZ2V0T3BhY2l0eSgpID4gMC4wKSB7XG4gICAgICAgICAgICAvLyBTdGVwIDI6IGNhdGNoIGVhY2ggbGF5ZXIncyBwb3N0cmVuZGVyIGV2ZW50LlxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IG9sL3JlbmRlcmVyL3dlYmdsLyogZG9lcyBub3QgY2FsbCBgdGhpcy5wb3N0UmVuZGVyKGNvbnRleHQsIGZyYW1lU3RhdGUpYFxuICAgICAgICAgICAgLy8gaW4gYHJlbmRlckZyYW1lYCAtIHNvIGhlYXRtYXBzIHdvbid0IGJlIGNvcGllZCBoZXJlIVxuICAgICAgICAgICAgY29uc3Qga2V5ID0gbGF5ZXIub24oJ3Bvc3RyZW5kZXInLCAoZXZlbnQ6IFJlbmRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlQ29udGV4dCA9IGV2ZW50LmNvbnRleHQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlQ2FudmFzID0gc291cmNlQ29udGV4dC5jYW52YXM7XG4gICAgICAgICAgICAgICAgLy8gU3RlcCAzOiBjb3B5IHNvdXJjZSBiaXRtYXAgdG8gdGFyZ2V0LWNhbnZhcy5cbiAgICAgICAgICAgICAgICB0YXJnZXRDb250ZXh0LmRyYXdJbWFnZShzb3VyY2VDYW52YXMsIDAsIDAsIHNvdXJjZUNhbnZhcy5jbGllbnRXaWR0aCwgc291cmNlQ2FudmFzLmNsaWVudEhlaWdodCwgMCwgMCwgdGFyZ2V0Q2FudmFzLndpZHRoLCB0YXJnZXRDYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSl7XG4gICAgICAgICAgICAgIGtleS5tYXAoayA9PiBzdWJzY3JpcHRpb25zLnB1c2goaykpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtlZXBTeW5jZWQpIHtcbiAgICAgICAgbWFwLm9uKCdyZW5kZXJjb21wbGV0ZScsIChldnQ6IFJlbmRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICBvbkRvbmUodGFyZ2V0Q2FudmFzKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaWYgd2UgZG9uJ3Qgd2FudCB0aGUgY2FudmFzIHRvIHJlbWFpbiBpbiBzeW5jIHdpdGggdGhlIG1hcCwgd2UgdW5zdWJzY3JpYmUgdG8gZnVydGhlciBjaGFuZ2VzIGhlcmUuXG4gICAgICAgIG1hcC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsIChldnQ6IFJlbmRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBub3RlIHRoYXQgYSBtYXAtcmVuZGVyLWV2ZW50IGRvZXMgbm90IGhhdmUgYSBjb250ZXh0IC4uLiBjb250cmFyeSB0byBhIGxheWVyLXJlbmRlci1ldmVudC5cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB1bkJ5S2V5KGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkRvbmUodGFyZ2V0Q2FudmFzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAxOiB0cmlnZ2VyIGEgcmUtcmVuZGVyIG9mIHRoZSBtYXAuXG4gICAgbWFwLnJlbmRlclN5bmMoKTtcblxufVxuXG5cbi8qKlxuICogQ29waWVzIGEgbWFwJ3MgbGF5ZXJzIG9udG8gYSBzaW5nbGUgY2FudmFzLlxuICogRm9yIHRoaXMsIHdlIC4uLlxuICogIDEuIFVwZGF0ZSB0aGUgb3JpZ2luYWwgbWFwJ3Mgc2l6ZSB0byBtYXRjaCB0aGUgdGFyZ2V0LWNhbnZhcy5cbiAqICAyLiBHZXQgYW4gaW1hZ2Ugb2YgdGhlIHNjYWxlZCBtYXBcbiAqICAzLiBSZXNldCB0aGUgbWFwJ3MgZGltZW5zaW9ucyB0byB0aGUgaW5pdGlhbCB2YWx1ZXMuXG4gKlxuICogTm90ZTogaWYgdGhlIHVzZXIgbW92ZXMgdGhlIG9yaWdpbmFsIG1hcCB3aGlsZSB0aGUgcmVuZGVyLXByb2Nlc3MgaXMgc3RpbGwgb25nb2luZywgdGhpcyBjYW4gZGlzdG9ydCB0aGUgb3V0cHV0LlxuICogV2Ugd291bGQgc3VnZ2VzdCB0byBkZWFjdGl2YXRlIHVzZXItaW50ZXJhY3Rpb25zIHVudGlsIHRoZSAnZG9uZScgY2FsbGJhY2sgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogTm90ZSBhbHNvOiBCZWZvcmUgcGFzc2luZyB0aGUgY2FudmFzLCBzZXQgaXRzIGRyYXdpbmctYnVmZmVyIHNpemU6IGBjYW52YXMud2lkdGhgIGFuZCBgY2FudmFzLmhlaWdodGAuXG4gKiBUaGlzIGlzIHRoZSBzaXplIG9mIHRoZSBhY3R1YWxseSBkcmF3biBpbWFnZSBpbiBwaXhlbHMuXG4gKiBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBtYXkgZGlmZmVyIGZyb20gY2xpZW50V2lkdGgvY2xpZW50SGVpZ2h0OiB0aGF0IGlzIHRoZSBzaXplIHRvIHdoaWNoIHRoZSBhY3R1YWwgaW1hZ2UgaXMgc2NhbGVkIHRvIGluIHRoZSBET00uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZWRNYXBUb1NpbmdsZUNhbnZhcyhtYXA6IE1hcCwgdGFyZ2V0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcyxcbiAgICBvbkRvbmU6ICh1cGRhdGVkVGFyZ2V0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcykgPT4gdm9pZCwga2VlcFN5bmNlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgLyogQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggd291bGQgYmUgdG8gY3JlYXRlIGEgbmV3IG1hcCB3aXRoIHRoZSBkZXNpcmVkIHNpemUgYW5kIGNvcGllcyBvZiB0aGUgb2xkIG1hcCdzIGxheWVycy5cbiAgICAgKiBUaGlzIHdheSB3ZSB3b3VsZG4ndCBoYXZlIHRvIG1lc3Mgd2l0aCB0aGUgb3JpZ2luYWwgbWFwJ3Mgc2l6ZS5cbiAgICAgKiBCdXQgdW5mb3J0dW5hdGVseSBvcGVubGF5ZXJzIHByb3ZpZGVzIG5vIG1lYW5zIG9mIGNsb25pbmcgYSBsYXllci5cbiAgICAgKiBJIGNvdWxkIG5vdCBmaW5kIG9uZSwgZWl0aGVyOiBuZWl0aGVyIG9mIEpTT04ucGFyc2UsIGxvZGFzaC5jbG9uZURlZXAsIHJhbWRhLmNsb25lIG9yIHJmZGMgd29ya3MgaGVyZS5cbiAgICAgKi9cblxuICAgIC8vIFN0ZXAgMTogYWRqdXN0IG1hcC1zaXplIHRvIG1hdGNoIHRhcmdldENhbnZhcy5cbiAgICBjb25zdCBpbml0aWFsTWFwU2l6ZSA9IG1hcC5nZXRTaXplKCk7XG4gICAgY29uc3QgaW5pdGlhbE1hcFJlc29sdXRpb24gPSBtYXAuZ2V0VmlldygpLmdldFJlc29sdXRpb24oKTtcbiAgICBtYXAuc2V0U2l6ZShbdGFyZ2V0Q2FudmFzLndpZHRoLCB0YXJnZXRDYW52YXMuaGVpZ2h0XSk7XG4gICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbih0YXJnZXRDYW52YXMud2lkdGggLyBpbml0aWFsTWFwU2l6ZVswXSwgdGFyZ2V0Q2FudmFzLmhlaWdodCAvIGluaXRpYWxNYXBTaXplWzFdKTtcbiAgICBtYXAuZ2V0VmlldygpLnNldFJlc29sdXRpb24oaW5pdGlhbE1hcFJlc29sdXRpb24gLyBzY2FsZSk7XG5cbiAgICAvLyBTdGVwIDI6IGdldCBpbWFnZSBvZiBzY2FsZWQgbWFwXG4gICAgbWFwVG9TaW5nbGVDYW52YXMobWFwLCB0YXJnZXRDYW52YXMsICh1cGRhdGVkVGFyZ2V0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4ge1xuICAgICAgICAvLyBTdGVwIDM6IHNldCBtYXAtc2l6ZSBiYWNrIHRvIGluaXRpYWwgdmFsdWVzLlxuICAgICAgICBtYXAuc2V0U2l6ZShpbml0aWFsTWFwU2l6ZSk7XG4gICAgICAgIG1hcC5nZXRWaWV3KCkuc2V0UmVzb2x1dGlvbihpbml0aWFsTWFwUmVzb2x1dGlvbik7XG4gICAgICAgIG9uRG9uZSh1cGRhdGVkVGFyZ2V0Q2FudmFzKTtcbiAgICB9LCBrZWVwU3luY2VkKTtcbn1cblxuXG4vKipcbiAqIEEgY29tZm9ydC1mdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHNuYXBzaG90IG9mIGEgbWFwIGludG8gYSBjYW52YXMuXG4gKiBIYWx0cyBhbGwgbWFwLWludGVyYWN0aW9ucyB0byBwcmV2ZW50IHRoZSB1c2VyIGZyb20gcGFubmluZyB0aGUgbWFwIGR1cmluZyByZW5kZXJpbmcuXG4gKiBTZXRzIHRoZSBjYW52YXMnIGludGVybmFsIGRyYXdpbmctYnVmZmVyLXNpemU6IHRoaXMgd2F5LCB0aGUgY2FudmFzJyBjb250ZW50cyBjYW4gYmUgZXhwb3J0ZWRcbiAqIGluIHRoZSBkcmF3aW5nLWJ1ZmZlci1zaXplLCB3aGljaCBtYXkgZGlmZmVyIGZyb20gdGhlIGRpc3BsYXktc2l6ZSAodGhlIGxhdHRlciBpcyBzZXQgYnkgdGhlIERPTS9DU1MpLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiBgYGBcbiAqICAgcHJldmlld0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAqICAgc2ltcGxlTWFwVG9DYW52YXMobWFwLCBwcmV2aWV3Q2FudmFzLCBwYXBlci53aWR0aFB4LCBwYXBlci5oZWlnaHRQeCwgKHVwZGF0ZWQpID0+IHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdkb25lJyk7XG4gKiAgIH0pO1xuICogICBkb3dubG9hZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAqICAgICAgZG93bmxvYWRVcmwocHJldmlld0NhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpLCAnZnVsbCcpO1xuICogICB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxlTWFwVG9DYW52YXMobWFwOiBNYXAsIHRhcmdldENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBPZmZzY3JlZW5DYW52YXMsIGRyYXdpbmdCdWZmZXJXaWR0aD86IG51bWJlciwgZHJhd2luZ0J1ZmZlckhlaWdodD86IG51bWJlcixcbiAgICBvbkRvbmU/OiAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcykgPT4gdm9pZCwga2VlcFN5bmNlZCA9IGZhbHNlKSB7XG5cbiAgICAvLyBIYWx0aW5nIGludGVyYWN0aW9uczogcHJldmVudHMgdXNlciBmcm9tIHBhbm5pbmcgbWFwIGR1cmluZyBkcmF3aW5nIHByb2Nlc3MuXG4gICAgY29uc3QgaW50ZXJhY3Rpb25zID0gbWFwLmdldEludGVyYWN0aW9ucygpO1xuICAgIGludGVyYWN0aW9ucy5mb3JFYWNoKChpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24pID0+IHtcbiAgICAgICAgaW50ZXJhY3Rpb24uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGlmIChkcmF3aW5nQnVmZmVySGVpZ2h0ICYmIGRyYXdpbmdCdWZmZXJXaWR0aCkge1xuICAgICAgICAvLyBCZWZvcmUgcGFzc2luZyB0aGUgY2FudmFzLCBzZXQgaXRzIGRyYXdpbmctYnVmZmVyIHNpemU6IGBjYW52YXMud2lkdGhgIGFuZCBgY2FudmFzLmhlaWdodGAuXG4gICAgICAgIC8vIFRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIGFjdHVhbGx5IGRyYXduIGltYWdlIGluIHBpeGVscy5cbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgdmFsdWUgbWF5IGRpZmZlciBmcm9tIGNsaWVudFdpZHRoL2NsaWVudEhlaWdodDpcbiAgICAgICAgLy8gdGhhdCBpcyB0aGUgc2l6ZSB0byB3aGljaCB0aGUgYWN0dWFsIGltYWdlIGlzIHNjYWxlZCB0byBpbiB0aGUgRE9NLlxuICAgICAgICB0YXJnZXRDYW52YXMud2lkdGggPSBkcmF3aW5nQnVmZmVyV2lkdGg7XG4gICAgICAgIHRhcmdldENhbnZhcy5oZWlnaHQgPSBkcmF3aW5nQnVmZmVySGVpZ2h0O1xuICAgIH1cblxuICAgIHNjYWxlZE1hcFRvU2luZ2xlQ2FudmFzKG1hcCwgdGFyZ2V0Q2FudmFzLCAodXBkYXRlZENhbnZhcykgPT4ge1xuXG4gICAgICAgIC8vIHJlYWN0aXZhdGluZyBpbnRlcmFjdGlvbnNcbiAgICAgICAgaW50ZXJhY3Rpb25zLmZvckVhY2goKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaW50ZXJhY3Rpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAob25Eb25lKSB7XG4gICAgICAgICAgICBvbkRvbmUodXBkYXRlZENhbnZhcyk7XG4gICAgICAgIH1cbiAgICB9LCBrZWVwU3luY2VkKTtcbn1cbiJdfQ==

@@ -306,2 +306,2 @@ import { createShaderProgram, setup3dScene, createFloatBuffer, getAttributeLocation, bindBufferToAttribute, getUniformLocation, bindValueToUniform, clearBackground, bindProgram, createTexture, bindTextureToUniform, bindFramebuffer, bindOutputCanvasToFramebuffer, updateBufferData, bindTextureToFramebuffer, createEmptyTexture, createFramebuffer, updateTexture, createIndexBuffer, drawArray, drawElements, bindIndexBuffer, createDataTexture } from './webgl';

export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmNvcmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvIiwic291cmNlcyI6WyJsaWIvd2ViZ2wvZW5naW5lLmNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQW1DLFdBQVcsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQW9DLGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFrQixNQUFNLFNBQVMsQ0FBQztBQUcvaUIsb0VBQW9FO0FBQ3BFLE1BQU0sSUFBSSxHQUFHLFVBQVMsQ0FBUztJQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hCO0lBQ0QsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2xCLENBQUMsQ0FBQzs7QUFXRixNQUFNLE9BQU8sT0FBTztJQUtoQixZQUFZLEVBQXlCLEVBQ3hCLGtCQUEwQixFQUMxQixvQkFBNEI7UUFENUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBUTtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxvQkFB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RTtZQUMxQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNoYWRlclByb2dyYW0sIHNldHVwM2RTY2VuZSwgY3JlYXRlRmxvYXRCdWZmZXIsIGdldEF0dHJpYnV0ZUxvY2F0aW9uLCBiaW5kQnVmZmVyVG9BdHRyaWJ1dGUsIGdldFVuaWZvcm1Mb2NhdGlvbiwgYmluZFZhbHVlVG9Vbmlmb3JtLCBjbGVhckJhY2tncm91bmQsIEJ1ZmZlck9iamVjdCwgV2ViR0xWYXJpYWJsZVR5cGUsIGJpbmRQcm9ncmFtLCBjcmVhdGVUZXh0dXJlLCBiaW5kVGV4dHVyZVRvVW5pZm9ybSwgVGV4dHVyZU9iamVjdCwgRnJhbWVidWZmZXJPYmplY3QsIGJpbmRGcmFtZWJ1ZmZlciwgYmluZE91dHB1dENhbnZhc1RvRnJhbWVidWZmZXIsIHVwZGF0ZUJ1ZmZlckRhdGEsIGJpbmRUZXh0dXJlVG9GcmFtZWJ1ZmZlciwgY3JlYXRlRW1wdHlUZXh0dXJlLCBjcmVhdGVGcmFtZWJ1ZmZlciwgdXBkYXRlVGV4dHVyZSwgY3JlYXRlSW5kZXhCdWZmZXIsIEluZGV4QnVmZmVyT2JqZWN0LCBkcmF3QXJyYXksIGRyYXdFbGVtZW50cywgYmluZEluZGV4QnVmZmVyLCBjcmVhdGVEYXRhVGV4dHVyZSwgdXBkYXRlVmlld1BvcnQgfSBmcm9tICcuL3dlYmdsJztcblxuXG4vLyBkZWFkLXNpbXBsZSBoYXNoIGZ1bmN0aW9uIC0gbm90IGludGVuZGVkIHRvIGJlIHNlY3VyZSBpbiBhbnkgd2F5LlxuY29uc3QgaGFzaCA9IGZ1bmN0aW9uKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGggPSAwO1xuICAgIGZvciAoY29uc3QgYyBvZiBzKSB7XG4gICAgICAgIGggKz0gYy5jaGFyQ29kZUF0KDApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7aH1gO1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmFtIHtcbiAgICBwcm9ncmFtOiBXZWJHTFByb2dyYW07XG4gICAgaWQ6IHN0cmluZztcbiAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2U6IHN0cmluZztcbiAgICBmcmFnbWVudFNoYWRlclNvdXJjZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIGltcGxlbWVudHMgSVByb2dyYW0ge1xuXG4gICAgcmVhZG9ubHkgcHJvZ3JhbTogV2ViR0xQcm9ncmFtO1xuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LFxuICAgICAgICByZWFkb25seSB2ZXJ0ZXhTaGFkZXJTb3VyY2U6IHN0cmluZyxcbiAgICAgICAgcmVhZG9ubHkgZnJhZ21lbnRTaGFkZXJTb3VyY2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLnByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKGdsLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTtcbiAgICAgICAgdGhpcy5pZCA9IGhhc2godmVydGV4U2hhZGVyU291cmNlICsgZnJhZ21lbnRTaGFkZXJTb3VyY2UpO1xuICAgIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIElVbmlmb3JtIHtcbiAgICBsb2NhdGlvbjogV2ViR0xVbmlmb3JtTG9jYXRpb247XG4gICAgdHlwZTogV2ViR0xWYXJpYWJsZVR5cGU7XG4gICAgdmFsdWU6IG51bWJlcltdO1xuICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBVbmlmb3JtIGltcGxlbWVudHMgSVVuaWZvcm0ge1xuXG4gICAgcmVhZG9ubHkgbG9jYXRpb246IFdlYkdMVW5pZm9ybUxvY2F0aW9uO1xuICAgIHJlYWRvbmx5IHR5cGU6IFdlYkdMVmFyaWFibGVUeXBlO1xuICAgIHJlYWRvbmx5IHZhbHVlOiBudW1iZXJbXTtcbiAgICByZWFkb25seSB2YXJpYWJsZU5hbWU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHByb2dyYW06IElQcm9ncmFtLCB2YXJpYWJsZU5hbWU6IHN0cmluZywgdHlwZTogV2ViR0xWYXJpYWJsZVR5cGUsIGRhdGE6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0ucHJvZ3JhbSwgdmFyaWFibGVOYW1lKTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGE7XG4gICAgICAgIHRoaXMudmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lO1xuICAgIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIElUZXh0dXJlIHtcbiAgICBsb2NhdGlvbjogV2ViR0xVbmlmb3JtTG9jYXRpb247XG4gICAgYmluZFBvaW50OiBudW1iZXI7XG4gICAgdGV4dHVyZTogVGV4dHVyZU9iamVjdDtcbiAgICB2YXJpYWJsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRleHR1cmUgaW1wbGVtZW50cyBJVGV4dHVyZSB7XG5cbiAgICByZWFkb25seSBsb2NhdGlvbjogV2ViR0xVbmlmb3JtTG9jYXRpb247XG4gICAgcmVhZG9ubHkgYmluZFBvaW50OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgdGV4dHVyZTogVGV4dHVyZU9iamVjdDtcbiAgICByZWFkb25seSB2YXJpYWJsZU5hbWU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHByb2dyYW06IElQcm9ncmFtLCB2YXJpYWJsZU5hbWU6IHN0cmluZywgaW06IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MQ2FudmFzRWxlbWVudCB8IFRleHR1cmVPYmplY3QsIGJpbmRQb2ludDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0ucHJvZ3JhbSwgdmFyaWFibGVOYW1lKTtcbiAgICAgICAgaWYgKGltIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCB8fCBpbSBpbnN0YW5jZW9mICBIVE1MQ2FudmFzRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gY3JlYXRlVGV4dHVyZShnbCwgaW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gaW07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaW5kUG9pbnQgPSBiaW5kUG9pbnQ7XG4gICAgICAgIHRoaXMudmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFUZXh0dXJlIGltcGxlbWVudHMgSVRleHR1cmUge1xuICAgIHJlYWRvbmx5IGxvY2F0aW9uOiBXZWJHTFVuaWZvcm1Mb2NhdGlvbjtcbiAgICByZWFkb25seSBiaW5kUG9pbnQ6IG51bWJlcjtcbiAgICByZWFkb25seSB0ZXh0dXJlOiBUZXh0dXJlT2JqZWN0O1xuICAgIHJlYWRvbmx5IHZhcmlhYmxlTmFtZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgcHJvZ3JhbTogSVByb2dyYW0sIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBkYXRhOiBudW1iZXJbXVtdW10sIGJpbmRQb2ludDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0ucHJvZ3JhbSwgdmFyaWFibGVOYW1lKTtcbiAgICAgICAgdGhpcy50ZXh0dXJlID0gY3JlYXRlRGF0YVRleHR1cmUoZ2wsIGRhdGEpO1xuICAgICAgICB0aGlzLmJpbmRQb2ludCA9IGJpbmRQb2ludDtcbiAgICAgICAgdGhpcy52YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUF0dHJpYnV0ZSB7XG4gICAgbG9jYXRpb246IG51bWJlcjtcbiAgICB2YWx1ZTogQnVmZmVyT2JqZWN0O1xuICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCB0eXBlIEdsRHJhd2luZ01vZGUgPSAndHJpYW5nbGVzJyB8ICdwb2ludHMnIHwgJ2xpbmVzJztcblxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZSBpbXBsZW1lbnRzIElBdHRyaWJ1dGUge1xuXG4gICAgcmVhZG9ubHkgbG9jYXRpb246IG51bWJlcjtcbiAgICByZWFkb25seSB2YWx1ZTogQnVmZmVyT2JqZWN0O1xuICAgIHJlYWRvbmx5IHZhcmlhYmxlTmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGRyYXdpbmdNb2RlOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBwcm9ncmFtOiBJUHJvZ3JhbSwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIGRhdGE6IG51bWJlcltdW10sIGRyYXdpbmdNb2RlOiBHbERyYXdpbmdNb2RlID0gJ3RyaWFuZ2xlcycpIHtcbiAgICAgICAgbGV0IGdsRHJhd2luZ01vZGU6IG51bWJlcjtcbiAgICAgICAgc3dpdGNoIChkcmF3aW5nTW9kZSkge1xuICAgICAgICAgICAgY2FzZSAndHJpYW5nbGVzJzpcbiAgICAgICAgICAgICAgICBnbERyYXdpbmdNb2RlID0gZ2wuVFJJQU5HTEVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGluZXMnOlxuICAgICAgICAgICAgICAgIGdsRHJhd2luZ01vZGUgPSBnbC5MSU5FUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BvaW50cyc6XG4gICAgICAgICAgICAgICAgZ2xEcmF3aW5nTW9kZSA9IGdsLlBPSU5UUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRyYXdpbmcgbW9kZSAke2RyYXdpbmdNb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRBdHRyaWJ1dGVMb2NhdGlvbihnbCwgcHJvZ3JhbS5wcm9ncmFtLCB2YXJpYWJsZU5hbWUpO1xuICAgICAgICB0aGlzLnZhbHVlID0gY3JlYXRlRmxvYXRCdWZmZXIoZ2wsIGRhdGEsIGdsRHJhd2luZ01vZGUpO1xuICAgICAgICB0aGlzLnZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZTtcbiAgICAgICAgdGhpcy5kcmF3aW5nTW9kZSA9IGdsRHJhd2luZ01vZGU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBJbmRleCB7XG4gICAgcmVhZG9ubHkgaW5kZXg6IEluZGV4QnVmZmVyT2JqZWN0O1xuXG4gICAgY29uc3RydWN0b3IoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgaW5kaWNlczogbnVtYmVyW11bXSwgZHJhd2luZ01vZGU6IEdsRHJhd2luZ01vZGUgPSAndHJpYW5nbGVzJykge1xuICAgICAgICBsZXQgZ2xEcmF3aW5nTW9kZTogbnVtYmVyO1xuICAgICAgICBzd2l0Y2ggKGRyYXdpbmdNb2RlKSB7XG4gICAgICAgICAgICBjYXNlICd0cmlhbmdsZXMnOlxuICAgICAgICAgICAgICAgIGdsRHJhd2luZ01vZGUgPSBnbC5UUklBTkdMRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsaW5lcyc6XG4gICAgICAgICAgICAgICAgZ2xEcmF3aW5nTW9kZSA9IGdsLkxJTkVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncG9pbnRzJzpcbiAgICAgICAgICAgICAgICBnbERyYXdpbmdNb2RlID0gZ2wuUE9JTlRTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZHJhd2luZyBtb2RlICR7ZHJhd2luZ01vZGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmRleCA9IGNyZWF0ZUluZGV4QnVmZmVyKGdsLCBpbmRpY2VzLCBnbERyYXdpbmdNb2RlKTtcbiAgICB9XG59XG5cblxuZnVuY3Rpb24gZmlyc3Q8VD4oYXJyOiBUW10sIGNvbmRpdGlvbjogKGVsOiBUKSA9PiBib29sZWFuKTogVCB8IG51bGwge1xuICAgIGZvciAoY29uc3QgZWwgb2YgYXJyKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24oZWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cblxuZnVuY3Rpb24gcGFyc2VQcm9ncmFtKHByb2dyYW06IElQcm9ncmFtKTogW3N0cmluZ1tdLCBzdHJpbmdbXSwgc3RyaW5nW10sIHN0cmluZ1tdXSB7XG4gICAgY29uc3QgYXR0cmlidXRlUmVnZXggPSAvXlxccyphdHRyaWJ1dGUgKGludHxmbG9hdHx2ZWMyfHZlYzN8dmVjNHxtYXQyfG1hdDN8bWF0NCkgKFxcdyopOy9nbTtcbiAgICBjb25zdCB1bmlmb3JtUmVnZXggPSAvXlxccyp1bmlmb3JtIChpbnR8ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDQpIChcXHcqKShcXFtcXGRcXF0pKjsvZ207XG4gICAgY29uc3QgdGV4dHVyZVJlZ2V4ID0gL15cXHMqdW5pZm9ybSBzYW1wbGVyMkQgKFxcdyopOy9nbTtcbiAgICBjb25zdCBwcmVjaXNpb25SZWdleCA9IC9eXFxzKnByZWNpc2lvbiAoXFx3KikgZmxvYXQ7L2dtO1xuXG4gICAgY29uc3Qgc2hhZGVyQ29kZSA9IHByb2dyYW0uZnJhZ21lbnRTaGFkZXJTb3VyY2UgKyAnXFxuXFxuXFxuJyArIHByb2dyYW0udmVydGV4U2hhZGVyU291cmNlO1xuXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICBsZXQgYXR0cmlidXRlTWF0Y2hlcztcbiAgICB3aGlsZSAoKGF0dHJpYnV0ZU1hdGNoZXMgPSBhdHRyaWJ1dGVSZWdleC5leGVjKHNoYWRlckNvZGUpKSAhPT0gbnVsbCkge1xuICAgICAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKGF0dHJpYnV0ZU1hdGNoZXNbMl0pO1xuICAgIH1cbiAgICBjb25zdCB1bmlmb3JtTmFtZXMgPSBbXTtcbiAgICBsZXQgdW5pZm9ybU1hdGNoZXM7XG4gICAgd2hpbGUgKCh1bmlmb3JtTWF0Y2hlcyA9IHVuaWZvcm1SZWdleC5leGVjKHNoYWRlckNvZGUpKSAhPT0gbnVsbCkge1xuICAgICAgICB1bmlmb3JtTmFtZXMucHVzaCh1bmlmb3JtTWF0Y2hlc1syXSk7XG4gICAgfVxuICAgIGNvbnN0IHRleHR1cmVOYW1lcyA9IFtdO1xuICAgIGxldCB0ZXh0dXJlTWF0Y2hlcztcbiAgICB3aGlsZSAoKHRleHR1cmVNYXRjaGVzID0gdGV4dHVyZVJlZ2V4LmV4ZWMoc2hhZGVyQ29kZSkpICE9PSBudWxsKSB7XG4gICAgICAgIHRleHR1cmVOYW1lcy5wdXNoKHRleHR1cmVNYXRjaGVzWzFdKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVjaXNpb25zID0gW107XG4gICAgbGV0IHByZWNpc2lvbk1hdGNoZXM7XG4gICAgd2hpbGUgKChwcmVjaXNpb25NYXRjaGVzID0gcHJlY2lzaW9uUmVnZXguZXhlYyhzaGFkZXJDb2RlKSkgIT09IG51bGwpIHtcbiAgICAgICAgcHJlY2lzaW9ucy5wdXNoKHByZWNpc2lvbk1hdGNoZXNbMV0pO1xuICAgIH1cblxuICAgIHJldHVybiBbYXR0cmlidXRlTmFtZXMsIHVuaWZvcm1OYW1lcywgdGV4dHVyZU5hbWVzLCBwcmVjaXNpb25zXTtcbn1cblxuXG5leHBvcnQgdHlwZSBSZW5kZXJNb2RlID0gJ3BvaW50cycgfCAnbGluZXMnIHwgJ3RyaWFuZ2xlcyc7XG5cbmludGVyZmFjZSBJU2hhZGVyIHtcbiAgICBwcm9ncmFtOiBJUHJvZ3JhbTtcbiAgICBpbmRleD86IEluZGV4O1xuICAgIGF0dHJpYnV0ZXM6IElBdHRyaWJ1dGVbXTtcbiAgICB1bmlmb3JtczogSVVuaWZvcm1bXTtcbiAgICB0ZXh0dXJlczogSVRleHR1cmVbXTtcbiAgICBiaW5kOiAoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCkgPT4gdm9pZDtcbiAgICByZW5kZXI6IChnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBiYWNrZ3JvdW5kPzogbnVtYmVyW10sIGZyYW1lQnVmZmVyPzogRnJhbWVidWZmZXJPYmplY3QsIHZpZXdwb3J0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pID0+IHZvaWQ7XG4gICAgdXBkYXRlQXR0cmlidXRlRGF0YTogKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBuZXdEYXRhOiBudW1iZXJbXVtdKSA9PiB2b2lkO1xuICAgIHVwZGF0ZVVuaWZvcm1EYXRhOiAoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0RhdGE6IG51bWJlcltdKSA9PiB2b2lkO1xuICAgIHVwZGF0ZVRleHR1cmVEYXRhOiAoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0ltYWdlOiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTaGFkZXIgaW1wbGVtZW50cyBJU2hhZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgcHJvZ3JhbTogSVByb2dyYW0sXG4gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IElBdHRyaWJ1dGVbXSxcbiAgICAgICAgcmVhZG9ubHkgdW5pZm9ybXM6IElVbmlmb3JtW10sXG4gICAgICAgIHJlYWRvbmx5IHRleHR1cmVzOiBJVGV4dHVyZVtdLFxuICAgICAgICByZWFkb25seSBpbmRleD86IEluZGV4XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IFthdHRyaWJ1dGVOYW1lcywgdW5pZm9ybU5hbWVzLCB0ZXh0dXJlTmFtZXMsIHByZWNpc2lvbnNdID0gcGFyc2VQcm9ncmFtKHByb2dyYW0pO1xuICAgICAgICBmb3IgKGNvbnN0IGF0dHJOYW1lIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGF0dHJpYnV0ZXMuZmlsdGVyKGEgPT4gYS52YXJpYWJsZU5hbWUgPT09IGF0dHJOYW1lKTtcbiAgICAgICAgICAgIGlmIChmb3VuZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkICR7Zm91bmQubGVuZ3RofSB2YWx1ZXMgZm9yIHNoYWRlcidzIGF0dHJpYnV0ZSAke2F0dHJOYW1lfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHVuaWZvcm1OYW1lIG9mIHVuaWZvcm1OYW1lcykge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSB1bmlmb3Jtcy5maWx0ZXIoYSA9PiBhLnZhcmlhYmxlTmFtZSA9PT0gdW5pZm9ybU5hbWUpO1xuICAgICAgICAgICAgaWYgKGZvdW5kLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZWQgJHtmb3VuZC5sZW5ndGh9IHZhbHVlcyBmb3Igc2hhZGVyJ3MgdW5pZm9ybSAke3VuaWZvcm1OYW1lfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHRleE5hbWUgb2YgdGV4dHVyZU5hbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHRleHR1cmVzLmZpbHRlcihhID0+IGEudmFyaWFibGVOYW1lID09PSB0ZXhOYW1lKTtcbiAgICAgICAgICAgIGlmIChmb3VuZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkICR7Zm91bmQubGVuZ3RofSB2YWx1ZXMgZm9yIHNoYWRlcidzIHRleHR1cmUgJHt0ZXhOYW1lfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlY2lzaW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91IGhhdmUgb25seSBwcm92aWRlZCBvbmUgcHJlY2lzaW9uIHF1YWxpZmllci5cbiAgICAgICAgICAgIFRoaXMgY2FuIGNhdXNlIGlzc3VlcyB3aGVuIHlvdSB3YW50IHRvIHVzZSBhIHVuaWZvcm0gaW4gYm90aCB0aGUgdmVydGV4LSBhbmQgdGhlIGZyYWdtZW50LXNoYWRlci5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhzID0gdGhpcy5hdHRyaWJ1dGVzLm1hcChhID0+IGEudmFsdWUudmVjdG9yQ291bnQpO1xuICAgICAgICBpZiAoTWF0aC5taW4oLi4ubGVuZ3RocykgIT09IE1hdGgubWF4KC4uLmxlbmd0aHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdXIgYXR0cmlidXRlcyBhcmUgbm90IG9mIHRoZSBzYW1lIGxlbmd0aCFgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBiaW5kKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgYmluZFByb2dyYW0oZ2wsIHRoaXMucHJvZ3JhbS5wcm9ncmFtKTtcbiAgICAgICAgZm9yIChjb25zdCBhIG9mIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgICAgICAgYmluZEJ1ZmZlclRvQXR0cmlidXRlKGdsLCBhLmxvY2F0aW9uLCBhLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHUgb2YgdGhpcy51bmlmb3Jtcykge1xuICAgICAgICAgICAgYmluZFZhbHVlVG9Vbmlmb3JtKGdsLCB1LmxvY2F0aW9uLCB1LnR5cGUsIHUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLnRleHR1cmVzKSB7XG4gICAgICAgICAgICBiaW5kVGV4dHVyZVRvVW5pZm9ybShnbCwgdC50ZXh0dXJlLnRleHR1cmUsIHQuYmluZFBvaW50LCB0LmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmRleCkge1xuICAgICAgICAgICAgYmluZEluZGV4QnVmZmVyKGdsLCB0aGlzLmluZGV4LmluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHVibGljIHJlbmRlcihnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBiYWNrZ3JvdW5kPzogbnVtYmVyW10sIGZyYW1lQnVmZmVyPzogRnJhbWVidWZmZXJPYmplY3QsIHZpZXdwb3J0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmcmFtZUJ1ZmZlcikge1xuICAgICAgICAgICAgYmluZE91dHB1dENhbnZhc1RvRnJhbWVidWZmZXIoZ2wsIHZpZXdwb3J0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJpbmRGcmFtZWJ1ZmZlcihnbCwgZnJhbWVCdWZmZXIsIHZpZXdwb3J0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFja2dyb3VuZCkge1xuICAgICAgICAgICAgY2xlYXJCYWNrZ3JvdW5kKGdsLCBiYWNrZ3JvdW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluZGV4KSB7XG4gICAgICAgICAgICBkcmF3RWxlbWVudHMoZ2wsIHRoaXMuaW5kZXguaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbMF07XG4gICAgICAgICAgICBkcmF3QXJyYXkoZ2wsIGZpcnN0QXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHVibGljIHVwZGF0ZUF0dHJpYnV0ZURhdGEoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0RhdGE6IG51bWJlcltdW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gZmlyc3Q8SUF0dHJpYnV0ZT4odGhpcy5hdHRyaWJ1dGVzLCBlbCA9PiBlbC52YXJpYWJsZU5hbWUgPT09IHZhcmlhYmxlTmFtZSk7XG4gICAgICAgIGlmICghYXR0cmlidXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggYXR0cmlidXRlICR7dmFyaWFibGVOYW1lfSB0byBiZSB1cGRhdGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZUJ1ZmZlckRhdGEoZ2wsIGF0dHJpYnV0ZS52YWx1ZSwgbmV3RGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVVuaWZvcm1EYXRhKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBuZXdEYXRhOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmlmb3JtID0gZmlyc3Q8SVVuaWZvcm0+KHRoaXMudW5pZm9ybXMsIGVsID0+IGVsLnZhcmlhYmxlTmFtZSA9PT0gdmFyaWFibGVOYW1lKTtcbiAgICAgICAgaWYgKCF1bmlmb3JtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggdW5pZm9ybSAke3ZhcmlhYmxlTmFtZX0gdG8gYmUgdXBkYXRlZC5gKTtcbiAgICAgICAgfVxuICAgICAgICB1bmlmb3JtLnZhbHVlID0gbmV3RGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlVGV4dHVyZURhdGEoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0ltYWdlOiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQgfCBudW1iZXJbXVtdW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBmaXJzdDxJVGV4dHVyZT4odGhpcy50ZXh0dXJlcywgdCA9PiB0LnZhcmlhYmxlTmFtZSA9PT0gdmFyaWFibGVOYW1lKTtcbiAgICAgICAgaWYgKCFvcmlnaW5hbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIHRleHR1cmUgJHt2YXJpYWJsZU5hbWV9IHRvIGJlIHVwZGF0ZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGV4dHVyZU9iamVjdCA9IHVwZGF0ZVRleHR1cmUoZ2wsIG9yaWdpbmFsLnRleHR1cmUsIG5ld0ltYWdlKTtcbiAgICAgICAgb3JpZ2luYWwudGV4dHVyZSA9IG5ld1RleHR1cmVPYmplY3Q7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBGcmFtZWJ1ZmZlciB7XG5cbiAgICByZWFkb25seSBmYm86IEZyYW1lYnVmZmVyT2JqZWN0O1xuXG4gICAgY29uc3RydWN0b3IoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZmIgPSBjcmVhdGVGcmFtZWJ1ZmZlcihnbCk7XG4gICAgICAgIGNvbnN0IGZiVGV4dHVyZSA9IGNyZWF0ZUVtcHR5VGV4dHVyZShnbCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGNvbnN0IGZibyA9IGJpbmRUZXh0dXJlVG9GcmFtZWJ1ZmZlcihnbCwgZmJUZXh0dXJlLCBmYik7XG4gICAgICAgIHRoaXMuZmJvID0gZmJvO1xuICAgIH1cbn1cblxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckxvb3AoZnBzOiBudW1iZXIsIHJlbmRlckZ1bmN0aW9uOiAodERlbHRhOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcblxuICAgIGNvbnN0IHREZWx0YVRhcmdldCA9IDEwMDAgKiAxLjAgLyBmcHM7XG4gICAgbGV0IHREZWx0YSA9IHREZWx0YVRhcmdldDtcbiAgICBsZXQgdFN0YXJ0LCB0Tm93LCB0U2xlZXA6IG51bWJlcjtcblxuICAgIGNvbnN0IHJlbmRlciA9ICgpID0+IHtcbiAgICAgICAgdFN0YXJ0ID0gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICAgIHJlbmRlckZ1bmN0aW9uKHREZWx0YSk7XG5cbiAgICAgICAgdE5vdyA9IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgdERlbHRhID0gdE5vdyAtIHRTdGFydDtcbiAgICAgICAgdFNsZWVwID0gTWF0aC5tYXgodERlbHRhVGFyZ2V0IC0gdERlbHRhLCAwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTtcbiAgICAgICAgfSwgdFNsZWVwKTtcblxuICAgIH07XG5cbiAgICByZW5kZXIoKTtcbn1cblxuXG5cblxuXG5cblxuaW50ZXJmYWNlIElFbnRpdHkge1xuICAgIHByb2dyYW06IElQcm9ncmFtO1xuICAgIGF0dHJpYnV0ZXM6IElBdHRyaWJ1dGVbXTsgLy8gbm90ZSB0aGF0IGF0dHJpYnV0ZXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZW50cmllcyFcbiAgICB1bmlmb3JtczogSVVuaWZvcm1bXTtcbiAgICB0ZXh0dXJlczogSVRleHR1cmVbXTtcbiAgICB1cGRhdGU6ICh0RGVsdGE6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBFbnRpdHkgaW1wbGVtZW50cyBJRW50aXR5IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBwcm9ncmFtOiBJUHJvZ3JhbSxcbiAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlczogSUF0dHJpYnV0ZVtdLFxuICAgICAgICByZWFkb25seSB1bmlmb3JtczogSVVuaWZvcm1bXSxcbiAgICAgICAgcmVhZG9ubHkgdGV4dHVyZXM6IElUZXh0dXJlW10sXG4gICAgICAgIHJlYWRvbmx5IHVwZGF0ZUZ1bmN0aW9uOiAodERlbHRhOiBudW1iZXIsIGF0dHJzOiBJQXR0cmlidXRlW10sIHVuaXM6IElVbmlmb3JtW10pID0+IHZvaWQpIHt9XG5cbiAgICB1cGRhdGUodERlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGdW5jdGlvbih0RGVsdGEsIHRoaXMuYXR0cmlidXRlcywgdGhpcy51bmlmb3Jtcyk7XG4gICAgfVxufVxuXG5cblxuXG5leHBvcnQgY2xhc3MgRW5naW5lIHtcblxuICAgIHJlYWRvbmx5IGVudGl0aWVzOiBJRW50aXR5W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyByZW5kZXJMb29wKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIGZwczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHNldHVwM2RTY2VuZShnbCk7XG5cbiAgICAgICAgY29uc3QgdERlbHRhVGFyZ2V0ID0gMTAwMCAqIDEuMCAvIGZwcztcbiAgICAgICAgbGV0IHRTdGFydCwgdE5vdzogbnVtYmVyLCB0RGVsdGE6IG51bWJlciwgdFNsZWVwO1xuICAgICAgICBsZXQgY3VycmVudFNoYWRlciA9ICcnO1xuICAgICAgICBjb25zdCByZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICB0U3RhcnQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgICAgICAgICAgIC8vIFBhcnQgMTogYWxsb3cgb2JqZWN0cyB0byB1cGRhdGUgdGhlaXIgc3RhdGVcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgZS51cGRhdGUodERlbHRhVGFyZ2V0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUGFydCAyOiBkbyB0aGUgYWN0dWFsIHJlbmRlcmluZyB3b3JrIGhlcmVcbiAgICAgICAgICAgIGNsZWFyQmFja2dyb3VuZChnbCwgWy43LCAuNywgLjcsIDFdKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUucHJvZ3JhbS5pZCAhPT0gY3VycmVudFNoYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBiaW5kUHJvZ3JhbShnbCwgZS5wcm9ncmFtLnByb2dyYW0pO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2hhZGVyID0gZS5wcm9ncmFtLmlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGEgb2YgZS5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRCdWZmZXJUb0F0dHJpYnV0ZShnbCwgYS5sb2NhdGlvbiwgYS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdSBvZiBlLnVuaWZvcm1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZVRvVW5pZm9ybShnbCwgdS5sb2NhdGlvbiwgdS50eXBlLCB1LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIGUudGV4dHVyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgYmluZFRleHR1cmVUb1VuaWZvcm0oZ2wsIHQudGV4dHVyZS50ZXh0dXJlLCB0LmJpbmRQb2ludCwgdC5sb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCBlLmF0dHJpYnV0ZXNbMF0udmFsdWUudmVjdG9yQ291bnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBQYXJ0IDM6IHRpbWUtbWFuYWdlbWVudFxuICAgICAgICAgICAgdE5vdyA9IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgICAgIHREZWx0YSA9IHROb3cgLSB0U3RhcnQ7XG4gICAgICAgICAgICB0U2xlZXAgPSBNYXRoLm1heCh0RGVsdGFUYXJnZXQgLSB0RGVsdGEsIDApO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7XG4gICAgICAgICAgICB9LCB0U2xlZXApO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgcmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEVudGl0eShlbnRpdHk6IElFbnRpdHkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKGVudGl0eSk7XG4gICAgICAgIHRoaXMuc29ydEVudGl0aWVzKCk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHNvcnRFbnRpdGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5zb3J0KChhOiBJRW50aXR5LCBiOiBJRW50aXR5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGEucHJvZ3JhbS5pZCA+IGIucHJvZ3JhbS5pZCkgPyAxIDogLTE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy9saWIvd2ViZ2wvZW5naW5lLmNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQW1DLFdBQVcsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQW9DLGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFrQixNQUFNLFNBQVMsQ0FBQztBQUcvaUIsb0VBQW9FO0FBQ3BFLE1BQU0sSUFBSSxHQUFHLFVBQVMsQ0FBUztJQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hCO0lBQ0QsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2xCLENBQUMsQ0FBQzs7QUFXRixNQUFNLE9BQU8sT0FBTztJQUtoQixZQUFZLEVBQXlCLEVBQ3hCLGtCQUEwQixFQUMxQixvQkFBNEI7UUFENUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBUTtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGtC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QyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNoYWRlclByb2dyYW0sIHNldHVwM2RTY2VuZSwgY3JlYXRlRmxvYXRCdWZmZXIsIGdldEF0dHJpYnV0ZUxvY2F0aW9uLCBiaW5kQnVmZmVyVG9BdHRyaWJ1dGUsIGdldFVuaWZvcm1Mb2NhdGlvbiwgYmluZFZhbHVlVG9Vbmlmb3JtLCBjbGVhckJhY2tncm91bmQsIEJ1ZmZlck9iamVjdCwgV2ViR0xWYXJpYWJsZVR5cGUsIGJpbmRQcm9ncmFtLCBjcmVhdGVUZXh0dXJlLCBiaW5kVGV4dHVyZVRvVW5pZm9ybSwgVGV4dHVyZU9iamVjdCwgRnJhbWVidWZmZXJPYmplY3QsIGJpbmRGcmFtZWJ1ZmZlciwgYmluZE91dHB1dENhbnZhc1RvRnJhbWVidWZmZXIsIHVwZGF0ZUJ1ZmZlckRhdGEsIGJpbmRUZXh0dXJlVG9GcmFtZWJ1ZmZlciwgY3JlYXRlRW1wdHlUZXh0dXJlLCBjcmVhdGVGcmFtZWJ1ZmZlciwgdXBkYXRlVGV4dHVyZSwgY3JlYXRlSW5kZXhCdWZmZXIsIEluZGV4QnVmZmVyT2JqZWN0LCBkcmF3QXJyYXksIGRyYXdFbGVtZW50cywgYmluZEluZGV4QnVmZmVyLCBjcmVhdGVEYXRhVGV4dHVyZSwgdXBkYXRlVmlld1BvcnQgfSBmcm9tICcuL3dlYmdsJztcblxuXG4vLyBkZWFkLXNpbXBsZSBoYXNoIGZ1bmN0aW9uIC0gbm90IGludGVuZGVkIHRvIGJlIHNlY3VyZSBpbiBhbnkgd2F5LlxuY29uc3QgaGFzaCA9IGZ1bmN0aW9uKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGggPSAwO1xuICAgIGZvciAoY29uc3QgYyBvZiBzKSB7XG4gICAgICAgIGggKz0gYy5jaGFyQ29kZUF0KDApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7aH1gO1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmFtIHtcbiAgICBwcm9ncmFtOiBXZWJHTFByb2dyYW07XG4gICAgaWQ6IHN0cmluZztcbiAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2U6IHN0cmluZztcbiAgICBmcmFnbWVudFNoYWRlclNvdXJjZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIGltcGxlbWVudHMgSVByb2dyYW0ge1xuXG4gICAgcmVhZG9ubHkgcHJvZ3JhbTogV2ViR0xQcm9ncmFtO1xuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LFxuICAgICAgICByZWFkb25seSB2ZXJ0ZXhTaGFkZXJTb3VyY2U6IHN0cmluZyxcbiAgICAgICAgcmVhZG9ubHkgZnJhZ21lbnRTaGFkZXJTb3VyY2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLnByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKGdsLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTtcbiAgICAgICAgdGhpcy5pZCA9IGhhc2godmVydGV4U2hhZGVyU291cmNlICsgZnJhZ21lbnRTaGFkZXJTb3VyY2UpO1xuICAgIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIElVbmlmb3JtIHtcbiAgICBsb2NhdGlvbjogV2ViR0xVbmlmb3JtTG9jYXRpb247XG4gICAgdHlwZTogV2ViR0xWYXJpYWJsZVR5cGU7XG4gICAgdmFsdWU6IG51bWJlcltdO1xuICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBVbmlmb3JtIGltcGxlbWVudHMgSVVuaWZvcm0ge1xuXG4gICAgcmVhZG9ubHkgbG9jYXRpb246IFdlYkdMVW5pZm9ybUxvY2F0aW9uO1xuICAgIHJlYWRvbmx5IHR5cGU6IFdlYkdMVmFyaWFibGVUeXBlO1xuICAgIHJlYWRvbmx5IHZhbHVlOiBudW1iZXJbXTtcbiAgICByZWFkb25seSB2YXJpYWJsZU5hbWU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHByb2dyYW06IElQcm9ncmFtLCB2YXJpYWJsZU5hbWU6IHN0cmluZywgdHlwZTogV2ViR0xWYXJpYWJsZVR5cGUsIGRhdGE6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0ucHJvZ3JhbSwgdmFyaWFibGVOYW1lKTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGE7XG4gICAgICAgIHRoaXMudmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lO1xuICAgIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIElUZXh0dXJlIHtcbiAgICBsb2NhdGlvbjogV2ViR0xVbmlmb3JtTG9jYXRpb247XG4gICAgYmluZFBvaW50OiBudW1iZXI7XG4gICAgdGV4dHVyZTogVGV4dHVyZU9iamVjdDtcbiAgICB2YXJpYWJsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRleHR1cmUgaW1wbGVtZW50cyBJVGV4dHVyZSB7XG5cbiAgICByZWFkb25seSBsb2NhdGlvbjogV2ViR0xVbmlmb3JtTG9jYXRpb247XG4gICAgcmVhZG9ubHkgYmluZFBvaW50OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgdGV4dHVyZTogVGV4dHVyZU9iamVjdDtcbiAgICByZWFkb25seSB2YXJpYWJsZU5hbWU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHByb2dyYW06IElQcm9ncmFtLCB2YXJpYWJsZU5hbWU6IHN0cmluZywgaW06IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MQ2FudmFzRWxlbWVudCB8IFRleHR1cmVPYmplY3QsIGJpbmRQb2ludDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0ucHJvZ3JhbSwgdmFyaWFibGVOYW1lKTtcbiAgICAgICAgaWYgKGltIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCB8fCBpbSBpbnN0YW5jZW9mICBIVE1MQ2FudmFzRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gY3JlYXRlVGV4dHVyZShnbCwgaW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gaW07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaW5kUG9pbnQgPSBiaW5kUG9pbnQ7XG4gICAgICAgIHRoaXMudmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFUZXh0dXJlIGltcGxlbWVudHMgSVRleHR1cmUge1xuICAgIHJlYWRvbmx5IGxvY2F0aW9uOiBXZWJHTFVuaWZvcm1Mb2NhdGlvbjtcbiAgICByZWFkb25seSBiaW5kUG9pbnQ6IG51bWJlcjtcbiAgICByZWFkb25seSB0ZXh0dXJlOiBUZXh0dXJlT2JqZWN0O1xuICAgIHJlYWRvbmx5IHZhcmlhYmxlTmFtZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgcHJvZ3JhbTogSVByb2dyYW0sIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBkYXRhOiBudW1iZXJbXVtdW10sIGJpbmRQb2ludDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0ucHJvZ3JhbSwgdmFyaWFibGVOYW1lKTtcbiAgICAgICAgdGhpcy50ZXh0dXJlID0gY3JlYXRlRGF0YVRleHR1cmUoZ2wsIGRhdGEpO1xuICAgICAgICB0aGlzLmJpbmRQb2ludCA9IGJpbmRQb2ludDtcbiAgICAgICAgdGhpcy52YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUF0dHJpYnV0ZSB7XG4gICAgbG9jYXRpb246IG51bWJlcjtcbiAgICB2YWx1ZTogQnVmZmVyT2JqZWN0O1xuICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCB0eXBlIEdsRHJhd2luZ01vZGUgPSAndHJpYW5nbGVzJyB8ICdwb2ludHMnIHwgJ2xpbmVzJztcblxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZSBpbXBsZW1lbnRzIElBdHRyaWJ1dGUge1xuXG4gICAgcmVhZG9ubHkgbG9jYXRpb246IG51bWJlcjtcbiAgICByZWFkb25seSB2YWx1ZTogQnVmZmVyT2JqZWN0O1xuICAgIHJlYWRvbmx5IHZhcmlhYmxlTmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGRyYXdpbmdNb2RlOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBwcm9ncmFtOiBJUHJvZ3JhbSwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIGRhdGE6IG51bWJlcltdW10sIGRyYXdpbmdNb2RlOiBHbERyYXdpbmdNb2RlID0gJ3RyaWFuZ2xlcycpIHtcbiAgICAgICAgbGV0IGdsRHJhd2luZ01vZGU6IG51bWJlcjtcbiAgICAgICAgc3dpdGNoIChkcmF3aW5nTW9kZSkge1xuICAgICAgICAgICAgY2FzZSAndHJpYW5nbGVzJzpcbiAgICAgICAgICAgICAgICBnbERyYXdpbmdNb2RlID0gZ2wuVFJJQU5HTEVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGluZXMnOlxuICAgICAgICAgICAgICAgIGdsRHJhd2luZ01vZGUgPSBnbC5MSU5FUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BvaW50cyc6XG4gICAgICAgICAgICAgICAgZ2xEcmF3aW5nTW9kZSA9IGdsLlBPSU5UUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRyYXdpbmcgbW9kZSAke2RyYXdpbmdNb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9jYXRpb24gPSBnZXRBdHRyaWJ1dGVMb2NhdGlvbihnbCwgcHJvZ3JhbS5wcm9ncmFtLCB2YXJpYWJsZU5hbWUpO1xuICAgICAgICB0aGlzLnZhbHVlID0gY3JlYXRlRmxvYXRCdWZmZXIoZ2wsIGRhdGEsIGdsRHJhd2luZ01vZGUpO1xuICAgICAgICB0aGlzLnZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZTtcbiAgICAgICAgdGhpcy5kcmF3aW5nTW9kZSA9IGdsRHJhd2luZ01vZGU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBJbmRleCB7XG4gICAgcmVhZG9ubHkgaW5kZXg6IEluZGV4QnVmZmVyT2JqZWN0O1xuXG4gICAgY29uc3RydWN0b3IoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgaW5kaWNlczogbnVtYmVyW11bXSwgZHJhd2luZ01vZGU6IEdsRHJhd2luZ01vZGUgPSAndHJpYW5nbGVzJykge1xuICAgICAgICBsZXQgZ2xEcmF3aW5nTW9kZTogbnVtYmVyO1xuICAgICAgICBzd2l0Y2ggKGRyYXdpbmdNb2RlKSB7XG4gICAgICAgICAgICBjYXNlICd0cmlhbmdsZXMnOlxuICAgICAgICAgICAgICAgIGdsRHJhd2luZ01vZGUgPSBnbC5UUklBTkdMRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsaW5lcyc6XG4gICAgICAgICAgICAgICAgZ2xEcmF3aW5nTW9kZSA9IGdsLkxJTkVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncG9pbnRzJzpcbiAgICAgICAgICAgICAgICBnbERyYXdpbmdNb2RlID0gZ2wuUE9JTlRTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZHJhd2luZyBtb2RlICR7ZHJhd2luZ01vZGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmRleCA9IGNyZWF0ZUluZGV4QnVmZmVyKGdsLCBpbmRpY2VzLCBnbERyYXdpbmdNb2RlKTtcbiAgICB9XG59XG5cblxuZnVuY3Rpb24gZmlyc3Q8VD4oYXJyOiBUW10sIGNvbmRpdGlvbjogKGVsOiBUKSA9PiBib29sZWFuKTogVCB8IG51bGwge1xuICAgIGZvciAoY29uc3QgZWwgb2YgYXJyKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24oZWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cblxuZnVuY3Rpb24gcGFyc2VQcm9ncmFtKHByb2dyYW06IElQcm9ncmFtKTogW3N0cmluZ1tdLCBzdHJpbmdbXSwgc3RyaW5nW10sIHN0cmluZ1tdXSB7XG4gICAgY29uc3QgYXR0cmlidXRlUmVnZXggPSAvXlxccyphdHRyaWJ1dGUgKGludHxmbG9hdHx2ZWMyfHZlYzN8dmVjNHxtYXQyfG1hdDN8bWF0NCkgKFxcdyopOy9nbTtcbiAgICBjb25zdCB1bmlmb3JtUmVnZXggPSAvXlxccyp1bmlmb3JtIChpbnR8ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDQpIChcXHcqKShcXFtcXGRcXF0pKjsvZ207XG4gICAgY29uc3QgdGV4dHVyZVJlZ2V4ID0gL15cXHMqdW5pZm9ybSBzYW1wbGVyMkQgKFxcdyopOy9nbTtcbiAgICBjb25zdCBwcmVjaXNpb25SZWdleCA9IC9eXFxzKnByZWNpc2lvbiAoXFx3KikgZmxvYXQ7L2dtO1xuXG4gICAgY29uc3Qgc2hhZGVyQ29kZSA9IHByb2dyYW0uZnJhZ21lbnRTaGFkZXJTb3VyY2UgKyAnXFxuXFxuXFxuJyArIHByb2dyYW0udmVydGV4U2hhZGVyU291cmNlO1xuXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICBsZXQgYXR0cmlidXRlTWF0Y2hlcztcbiAgICB3aGlsZSAoKGF0dHJpYnV0ZU1hdGNoZXMgPSBhdHRyaWJ1dGVSZWdleC5leGVjKHNoYWRlckNvZGUpKSAhPT0gbnVsbCkge1xuICAgICAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKGF0dHJpYnV0ZU1hdGNoZXNbMl0pO1xuICAgIH1cbiAgICBjb25zdCB1bmlmb3JtTmFtZXMgPSBbXTtcbiAgICBsZXQgdW5pZm9ybU1hdGNoZXM7XG4gICAgd2hpbGUgKCh1bmlmb3JtTWF0Y2hlcyA9IHVuaWZvcm1SZWdleC5leGVjKHNoYWRlckNvZGUpKSAhPT0gbnVsbCkge1xuICAgICAgICB1bmlmb3JtTmFtZXMucHVzaCh1bmlmb3JtTWF0Y2hlc1syXSk7XG4gICAgfVxuICAgIGNvbnN0IHRleHR1cmVOYW1lcyA9IFtdO1xuICAgIGxldCB0ZXh0dXJlTWF0Y2hlcztcbiAgICB3aGlsZSAoKHRleHR1cmVNYXRjaGVzID0gdGV4dHVyZVJlZ2V4LmV4ZWMoc2hhZGVyQ29kZSkpICE9PSBudWxsKSB7XG4gICAgICAgIHRleHR1cmVOYW1lcy5wdXNoKHRleHR1cmVNYXRjaGVzWzFdKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVjaXNpb25zID0gW107XG4gICAgbGV0IHByZWNpc2lvbk1hdGNoZXM7XG4gICAgd2hpbGUgKChwcmVjaXNpb25NYXRjaGVzID0gcHJlY2lzaW9uUmVnZXguZXhlYyhzaGFkZXJDb2RlKSkgIT09IG51bGwpIHtcbiAgICAgICAgcHJlY2lzaW9ucy5wdXNoKHByZWNpc2lvbk1hdGNoZXNbMV0pO1xuICAgIH1cblxuICAgIHJldHVybiBbYXR0cmlidXRlTmFtZXMsIHVuaWZvcm1OYW1lcywgdGV4dHVyZU5hbWVzLCBwcmVjaXNpb25zXTtcbn1cblxuXG5leHBvcnQgdHlwZSBSZW5kZXJNb2RlID0gJ3BvaW50cycgfCAnbGluZXMnIHwgJ3RyaWFuZ2xlcyc7XG5cbmludGVyZmFjZSBJU2hhZGVyIHtcbiAgICBwcm9ncmFtOiBJUHJvZ3JhbTtcbiAgICBpbmRleD86IEluZGV4O1xuICAgIGF0dHJpYnV0ZXM6IElBdHRyaWJ1dGVbXTtcbiAgICB1bmlmb3JtczogSVVuaWZvcm1bXTtcbiAgICB0ZXh0dXJlczogSVRleHR1cmVbXTtcbiAgICBiaW5kOiAoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCkgPT4gdm9pZDtcbiAgICByZW5kZXI6IChnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBiYWNrZ3JvdW5kPzogbnVtYmVyW10sIGZyYW1lQnVmZmVyPzogRnJhbWVidWZmZXJPYmplY3QsIHZpZXdwb3J0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pID0+IHZvaWQ7XG4gICAgdXBkYXRlQXR0cmlidXRlRGF0YTogKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBuZXdEYXRhOiBudW1iZXJbXVtdKSA9PiB2b2lkO1xuICAgIHVwZGF0ZVVuaWZvcm1EYXRhOiAoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0RhdGE6IG51bWJlcltdKSA9PiB2b2lkO1xuICAgIHVwZGF0ZVRleHR1cmVEYXRhOiAoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0ltYWdlOiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTaGFkZXIgaW1wbGVtZW50cyBJU2hhZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgcHJvZ3JhbTogSVByb2dyYW0sXG4gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IElBdHRyaWJ1dGVbXSxcbiAgICAgICAgcmVhZG9ubHkgdW5pZm9ybXM6IElVbmlmb3JtW10sXG4gICAgICAgIHJlYWRvbmx5IHRleHR1cmVzOiBJVGV4dHVyZVtdLFxuICAgICAgICByZWFkb25seSBpbmRleD86IEluZGV4XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IFthdHRyaWJ1dGVOYW1lcywgdW5pZm9ybU5hbWVzLCB0ZXh0dXJlTmFtZXMsIHByZWNpc2lvbnNdID0gcGFyc2VQcm9ncmFtKHByb2dyYW0pO1xuICAgICAgICBmb3IgKGNvbnN0IGF0dHJOYW1lIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGF0dHJpYnV0ZXMuZmlsdGVyKGEgPT4gYS52YXJpYWJsZU5hbWUgPT09IGF0dHJOYW1lKTtcbiAgICAgICAgICAgIGlmIChmb3VuZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkICR7Zm91bmQubGVuZ3RofSB2YWx1ZXMgZm9yIHNoYWRlcidzIGF0dHJpYnV0ZSAke2F0dHJOYW1lfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHVuaWZvcm1OYW1lIG9mIHVuaWZvcm1OYW1lcykge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSB1bmlmb3Jtcy5maWx0ZXIoYSA9PiBhLnZhcmlhYmxlTmFtZSA9PT0gdW5pZm9ybU5hbWUpO1xuICAgICAgICAgICAgaWYgKGZvdW5kLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZWQgJHtmb3VuZC5sZW5ndGh9IHZhbHVlcyBmb3Igc2hhZGVyJ3MgdW5pZm9ybSAke3VuaWZvcm1OYW1lfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHRleE5hbWUgb2YgdGV4dHVyZU5hbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHRleHR1cmVzLmZpbHRlcihhID0+IGEudmFyaWFibGVOYW1lID09PSB0ZXhOYW1lKTtcbiAgICAgICAgICAgIGlmIChmb3VuZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkICR7Zm91bmQubGVuZ3RofSB2YWx1ZXMgZm9yIHNoYWRlcidzIHRleHR1cmUgJHt0ZXhOYW1lfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlY2lzaW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91IGhhdmUgb25seSBwcm92aWRlZCBvbmUgcHJlY2lzaW9uIHF1YWxpZmllci5cbiAgICAgICAgICAgIFRoaXMgY2FuIGNhdXNlIGlzc3VlcyB3aGVuIHlvdSB3YW50IHRvIHVzZSBhIHVuaWZvcm0gaW4gYm90aCB0aGUgdmVydGV4LSBhbmQgdGhlIGZyYWdtZW50LXNoYWRlci5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhzID0gdGhpcy5hdHRyaWJ1dGVzLm1hcChhID0+IGEudmFsdWUudmVjdG9yQ291bnQpO1xuICAgICAgICBpZiAoTWF0aC5taW4oLi4ubGVuZ3RocykgIT09IE1hdGgubWF4KC4uLmxlbmd0aHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdXIgYXR0cmlidXRlcyBhcmUgbm90IG9mIHRoZSBzYW1lIGxlbmd0aCFgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBiaW5kKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgYmluZFByb2dyYW0oZ2wsIHRoaXMucHJvZ3JhbS5wcm9ncmFtKTtcbiAgICAgICAgZm9yIChjb25zdCBhIG9mIHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgICAgICAgYmluZEJ1ZmZlclRvQXR0cmlidXRlKGdsLCBhLmxvY2F0aW9uLCBhLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHUgb2YgdGhpcy51bmlmb3Jtcykge1xuICAgICAgICAgICAgYmluZFZhbHVlVG9Vbmlmb3JtKGdsLCB1LmxvY2F0aW9uLCB1LnR5cGUsIHUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLnRleHR1cmVzKSB7XG4gICAgICAgICAgICBiaW5kVGV4dHVyZVRvVW5pZm9ybShnbCwgdC50ZXh0dXJlLnRleHR1cmUsIHQuYmluZFBvaW50LCB0LmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmRleCkge1xuICAgICAgICAgICAgYmluZEluZGV4QnVmZmVyKGdsLCB0aGlzLmluZGV4LmluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHVibGljIHJlbmRlcihnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBiYWNrZ3JvdW5kPzogbnVtYmVyW10sIGZyYW1lQnVmZmVyPzogRnJhbWVidWZmZXJPYmplY3QsIHZpZXdwb3J0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmcmFtZUJ1ZmZlcikge1xuICAgICAgICAgICAgYmluZE91dHB1dENhbnZhc1RvRnJhbWVidWZmZXIoZ2wsIHZpZXdwb3J0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJpbmRGcmFtZWJ1ZmZlcihnbCwgZnJhbWVCdWZmZXIsIHZpZXdwb3J0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFja2dyb3VuZCkge1xuICAgICAgICAgICAgY2xlYXJCYWNrZ3JvdW5kKGdsLCBiYWNrZ3JvdW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluZGV4KSB7XG4gICAgICAgICAgICBkcmF3RWxlbWVudHMoZ2wsIHRoaXMuaW5kZXguaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbMF07XG4gICAgICAgICAgICBkcmF3QXJyYXkoZ2wsIGZpcnN0QXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHVibGljIHVwZGF0ZUF0dHJpYnV0ZURhdGEoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0RhdGE6IG51bWJlcltdW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gZmlyc3Q8SUF0dHJpYnV0ZT4odGhpcy5hdHRyaWJ1dGVzLCBlbCA9PiBlbC52YXJpYWJsZU5hbWUgPT09IHZhcmlhYmxlTmFtZSk7XG4gICAgICAgIGlmICghYXR0cmlidXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggYXR0cmlidXRlICR7dmFyaWFibGVOYW1lfSB0byBiZSB1cGRhdGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZUJ1ZmZlckRhdGEoZ2wsIGF0dHJpYnV0ZS52YWx1ZSwgbmV3RGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVVuaWZvcm1EYXRhKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBuZXdEYXRhOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmlmb3JtID0gZmlyc3Q8SVVuaWZvcm0+KHRoaXMudW5pZm9ybXMsIGVsID0+IGVsLnZhcmlhYmxlTmFtZSA9PT0gdmFyaWFibGVOYW1lKTtcbiAgICAgICAgaWYgKCF1bmlmb3JtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggdW5pZm9ybSAke3ZhcmlhYmxlTmFtZX0gdG8gYmUgdXBkYXRlZC5gKTtcbiAgICAgICAgfVxuICAgICAgICB1bmlmb3JtLnZhbHVlID0gbmV3RGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlVGV4dHVyZURhdGEoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdmFyaWFibGVOYW1lOiBzdHJpbmcsIG5ld0ltYWdlOiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQgfCBudW1iZXJbXVtdW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBmaXJzdDxJVGV4dHVyZT4odGhpcy50ZXh0dXJlcywgdCA9PiB0LnZhcmlhYmxlTmFtZSA9PT0gdmFyaWFibGVOYW1lKTtcbiAgICAgICAgaWYgKCFvcmlnaW5hbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIHRleHR1cmUgJHt2YXJpYWJsZU5hbWV9IHRvIGJlIHVwZGF0ZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGV4dHVyZU9iamVjdCA9IHVwZGF0ZVRleHR1cmUoZ2wsIG9yaWdpbmFsLnRleHR1cmUsIG5ld0ltYWdlKTtcbiAgICAgICAgb3JpZ2luYWwudGV4dHVyZSA9IG5ld1RleHR1cmVPYmplY3Q7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBGcmFtZWJ1ZmZlciB7XG5cbiAgICByZWFkb25seSBmYm86IEZyYW1lYnVmZmVyT2JqZWN0O1xuXG4gICAgY29uc3RydWN0b3IoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZmIgPSBjcmVhdGVGcmFtZWJ1ZmZlcihnbCk7XG4gICAgICAgIGNvbnN0IGZiVGV4dHVyZSA9IGNyZWF0ZUVtcHR5VGV4dHVyZShnbCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGNvbnN0IGZibyA9IGJpbmRUZXh0dXJlVG9GcmFtZWJ1ZmZlcihnbCwgZmJUZXh0dXJlLCBmYik7XG4gICAgICAgIHRoaXMuZmJvID0gZmJvO1xuICAgIH1cbn1cblxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckxvb3AoZnBzOiBudW1iZXIsIHJlbmRlckZ1bmN0aW9uOiAodERlbHRhOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcblxuICAgIGNvbnN0IHREZWx0YVRhcmdldCA9IDEwMDAgKiAxLjAgLyBmcHM7XG4gICAgbGV0IHREZWx0YSA9IHREZWx0YVRhcmdldDtcbiAgICBsZXQgdFN0YXJ0LCB0Tm93LCB0U2xlZXA6IG51bWJlcjtcblxuICAgIGNvbnN0IHJlbmRlciA9ICgpID0+IHtcbiAgICAgICAgdFN0YXJ0ID0gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICAgIHJlbmRlckZ1bmN0aW9uKHREZWx0YSk7XG5cbiAgICAgICAgdE5vdyA9IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgdERlbHRhID0gdE5vdyAtIHRTdGFydDtcbiAgICAgICAgdFNsZWVwID0gTWF0aC5tYXgodERlbHRhVGFyZ2V0IC0gdERlbHRhLCAwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTtcbiAgICAgICAgfSwgdFNsZWVwKTtcblxuICAgIH07XG5cbiAgICByZW5kZXIoKTtcbn1cblxuXG5cblxuXG5cblxuaW50ZXJmYWNlIElFbnRpdHkge1xuICAgIHByb2dyYW06IElQcm9ncmFtO1xuICAgIGF0dHJpYnV0ZXM6IElBdHRyaWJ1dGVbXTsgLy8gbm90ZSB0aGF0IGF0dHJpYnV0ZXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZW50cmllcyFcbiAgICB1bmlmb3JtczogSVVuaWZvcm1bXTtcbiAgICB0ZXh0dXJlczogSVRleHR1cmVbXTtcbiAgICB1cGRhdGU6ICh0RGVsdGE6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBFbnRpdHkgaW1wbGVtZW50cyBJRW50aXR5IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBwcm9ncmFtOiBJUHJvZ3JhbSxcbiAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlczogSUF0dHJpYnV0ZVtdLFxuICAgICAgICByZWFkb25seSB1bmlmb3JtczogSVVuaWZvcm1bXSxcbiAgICAgICAgcmVhZG9ubHkgdGV4dHVyZXM6IElUZXh0dXJlW10sXG4gICAgICAgIHJlYWRvbmx5IHVwZGF0ZUZ1bmN0aW9uOiAodERlbHRhOiBudW1iZXIsIGF0dHJzOiBJQXR0cmlidXRlW10sIHVuaXM6IElVbmlmb3JtW10pID0+IHZvaWQpIHt9XG5cbiAgICB1cGRhdGUodERlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGdW5jdGlvbih0RGVsdGEsIHRoaXMuYXR0cmlidXRlcywgdGhpcy51bmlmb3Jtcyk7XG4gICAgfVxufVxuXG5cblxuXG5leHBvcnQgY2xhc3MgRW5naW5lIHtcblxuICAgIHJlYWRvbmx5IGVudGl0aWVzOiBJRW50aXR5W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyByZW5kZXJMb29wKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIGZwczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHNldHVwM2RTY2VuZShnbCk7XG5cbiAgICAgICAgY29uc3QgdERlbHRhVGFyZ2V0ID0gMTAwMCAqIDEuMCAvIGZwcztcbiAgICAgICAgbGV0IHRTdGFydCwgdE5vdzogbnVtYmVyLCB0RGVsdGE6IG51bWJlciwgdFNsZWVwO1xuICAgICAgICBsZXQgY3VycmVudFNoYWRlciA9ICcnO1xuICAgICAgICBjb25zdCByZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICB0U3RhcnQgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgICAgICAgICAgIC8vIFBhcnQgMTogYWxsb3cgb2JqZWN0cyB0byB1cGRhdGUgdGhlaXIgc3RhdGVcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgZS51cGRhdGUodERlbHRhVGFyZ2V0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUGFydCAyOiBkbyB0aGUgYWN0dWFsIHJlbmRlcmluZyB3b3JrIGhlcmVcbiAgICAgICAgICAgIGNsZWFyQmFja2dyb3VuZChnbCwgWy43LCAuNywgLjcsIDFdKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUucHJvZ3JhbS5pZCAhPT0gY3VycmVudFNoYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBiaW5kUHJvZ3JhbShnbCwgZS5wcm9ncmFtLnByb2dyYW0pO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2hhZGVyID0gZS5wcm9ncmFtLmlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGEgb2YgZS5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRCdWZmZXJUb0F0dHJpYnV0ZShnbCwgYS5sb2NhdGlvbiwgYS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdSBvZiBlLnVuaWZvcm1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZVRvVW5pZm9ybShnbCwgdS5sb2NhdGlvbiwgdS50eXBlLCB1LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIGUudGV4dHVyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgYmluZFRleHR1cmVUb1VuaWZvcm0oZ2wsIHQudGV4dHVyZS50ZXh0dXJlLCB0LmJpbmRQb2ludCwgdC5sb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCBlLmF0dHJpYnV0ZXNbMF0udmFsdWUudmVjdG9yQ291bnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBQYXJ0IDM6IHRpbWUtbWFuYWdlbWVudFxuICAgICAgICAgICAgdE5vdyA9IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgICAgIHREZWx0YSA9IHROb3cgLSB0U3RhcnQ7XG4gICAgICAgICAgICB0U2xlZXAgPSBNYXRoLm1heCh0RGVsdGFUYXJnZXQgLSB0RGVsdGEsIDApO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7XG4gICAgICAgICAgICB9LCB0U2xlZXApO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgcmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEVudGl0eShlbnRpdHk6IElFbnRpdHkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKGVudGl0eSk7XG4gICAgICAgIHRoaXMuc29ydEVudGl0aWVzKCk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHNvcnRFbnRpdGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5zb3J0KChhOiBJRW50aXR5LCBiOiBJRW50aXR5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGEucHJvZ3JhbS5pZCA+IGIucHJvZ3JhbS5pZCkgPyAxIDogLTE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG59XG4iXX0=

@@ -85,2 +85,2 @@ import { createShaderProgram, createFloatBuffer, getAttributeLocation, bindBufferToAttribute, clearBackground, getUniformLocation, bindTextureToUniform, bindProgram, createTexture } from './webgl';

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvIiwic291cmNlcyI6WyJsaWIvd2ViZ2wvZW5naW5lLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFzQixhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeE8sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTdDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQXlCLEVBQUUsS0FBdUIsRUFBUSxFQUFFO0lBRXZGLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDakM7SUFFRCxNQUFNLGtCQUFrQixHQUFHOzs7Ozs7OztLQVExQixDQUFDO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRzs7Ozs7Ozs7O0tBUzVCLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNsRixXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXpCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFakMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNu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QUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFM0MsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dHVyZU9iamVjdCwgY3JlYXRlU2hhZGVyUHJvZ3JhbSwgY3JlYXRlRmxvYXRCdWZmZXIsIGdldEF0dHJpYnV0ZUxvY2F0aW9uLCBiaW5kQnVmZmVyVG9BdHRyaWJ1dGUsIGNsZWFyQmFja2dyb3VuZCwgZ2V0VW5pZm9ybUxvY2F0aW9uLCBiaW5kVGV4dHVyZVRvVW5pZm9ybSwgYmluZFByb2dyYW0sIGJpbmRWYWx1ZVRvVW5pZm9ybSwgY3JlYXRlVGV4dHVyZSB9IGZyb20gJy4vd2ViZ2wnO1xuaW1wb3J0IHsgcmVjdGFuZ2xlQSB9IGZyb20gJy4vZW5naW5lLnNoYXBlcyc7XG5cblxuXG5leHBvcnQgY29uc3QgZGlzcGxheUltYWdlT24gPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpOiB2b2lkID0+IHtcblxuICAgIGNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7XG4gICAgaWYgKCFnbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvbnRleHQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgXG4gICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7XG4gICAgYXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlQ29vcmQ7XG4gICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkO1xuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgdl90ZXh0dXJlQ29vcmQgPSBhX3RleHR1cmVDb29yZDtcbiAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3ZlcnRleDtcbiAgICB9XG4gICAgYDtcbiAgICBjb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGBcbiAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7XG4gICAgLy8gdW5pZm9ybSB2ZWMyIHVfdGV4dHVyZVNpemU7XG4gICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkO1xuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgLy8gdmVjMiBkZWx0YSA9IHZlYzIoMS4sIDEuKSAvIHVfdGV4dHVyZVNpemU7XG4gICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTsgLy8gICogMC4gKyB2ZWM0KDUuLCA1LiwgMC4sIDEuKTtcbiAgICB9XG4gICAgYDtcbiAgICBjb25zdCBwcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShnbCwgdmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7XG4gICAgYmluZFByb2dyYW0oZ2wsIHByb2dyYW0pO1xuXG4gICAgY29uc3QgcmN0ID0gcmVjdGFuZ2xlQSgxLjMsIDEuMyk7XG5cbiAgICBjb25zdCBieERhdGEgPSBjcmVhdGVGbG9hdEJ1ZmZlcihnbCwgcmN0LnZlcnRpY2VzKTtcbiAgICBjb25zdCBieExvYyA9IGdldEF0dHJpYnV0ZUxvY2F0aW9uKGdsLCBwcm9ncmFtLCAnYV92ZXJ0ZXgnKTtcbiAgICBiaW5kQnVmZmVyVG9BdHRyaWJ1dGUoZ2wsIGJ4TG9jLCBieERhdGEpO1xuXG4gICAgY29uc3QgdGV4Q29vcmRzID0gY3JlYXRlRmxvYXRCdWZmZXIoZ2wsIHJjdC50ZXh0dXJlUG9zaXRpb25zKTtcbiAgICBjb25zdCB0ZXhDb29yZHNMb2MgPSBnZXRBdHRyaWJ1dGVMb2NhdGlvbihnbCwgcHJvZ3JhbSwgJ2FfdGV4dHVyZUNvb3JkJyk7XG4gICAgYmluZEJ1ZmZlclRvQXR0cmlidXRlKGdsLCB0ZXhDb29yZHNMb2MsIHRleENvb3Jkcyk7XG5cbiAgICBjb25zdCB0ZXh0dXJlID0gY3JlYXRlVGV4dHVyZShnbCwgaW1hZ2UpO1xuICAgIGNvbnN0IHRleHR1cmVMb2MgPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0sICd1X3RleHR1cmUnKTtcbiAgICBiaW5kVGV4dHVyZVRvVW5pZm9ybShnbCwgdGV4dHVyZS50ZXh0dXJlLCAwLCB0ZXh0dXJlTG9jKTtcblxuICAgIGNsZWFyQmFja2dyb3VuZChnbCwgWy45LCAuOSwgLjksIDEuMF0pO1xuICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCByY3QudmVydGljZXMubGVuZ3RoKTtcbn07XG5cblxuXG5leHBvcnQgY29uc3QgY3JlYXRlVGV4dENhbnZhcyA9ICh0ZXh0OiBzdHJpbmcsIHdpZHRoOiBudW1iZXIgPSAyNTYsIGhlaWdodDogbnVtYmVyID0gMjU2LCBjb2xvcjogc3RyaW5nID0gJ3JlZCcpID0+IHtcbiAgICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmICghY3R4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gY29udGV4dCcpO1xuICAgIH1cbiAgICBjdHguY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY3R4LmNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY3R4LmZvbnQgPSBgYm9sZCAke2hlaWdodCAqIDUgLyA2IHwgMH1weCBzYW5zLXNlcmlmYDtcbiAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnO1xuICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICBjdHguZmlsbFRleHQodGV4dCwgd2lkdGggLyAyLCBoZWlnaHQgLyAyKTtcbiAgICByZXR1cm4gY3R4LmNhbnZhcztcbn07XG5cblxuZXhwb3J0IGNvbnN0IGNhbnZhc1RvSW1hZ2UgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCk6IEhUTUxJbWFnZUVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgaW1hZ2Uud2lkdGggPSBjYW52YXMud2lkdGg7XG4gICAgaW1hZ2UuaGVpZ2h0ID0gY2FudmFzLmhlaWdodDtcbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICByZXR1cm4gaW1hZ2U7XG59O1xuXG5leHBvcnQgY29uc3QgYXJyYXlUb0NhbnZhcyA9IChkYXRhOiBudW1iZXJbXVtdW10pID0+IHtcbiAgICBjb25zdCByb3dzID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgY29scyA9IGRhdGFbMF0ubGVuZ3RoO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGNvbHMgKiByb3dzICogNCk7XG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByb3dzOyByKyspIHtcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IChyICogY29scyArIGMpICogNDtcbiAgICAgICAgICAgIGJ1ZmZlcltwb3MgICAgXSA9IGRhdGFbcl1bY11bMF07XG4gICAgICAgICAgICBidWZmZXJbcG9zICsgMV0gPSBkYXRhW3JdW2NdWzFdO1xuICAgICAgICAgICAgYnVmZmVyW3BvcyArIDJdID0gZGF0YVtyXVtjXVsyXTtcbiAgICAgICAgICAgIGJ1ZmZlcltwb3MgKyAzXSA9IGRhdGFbcl1bY11bM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjYW52YXMud2lkdGggPSBjb2xzO1xuICAgIGNhbnZhcy5oZWlnaHQgPSByb3dzO1xuICAgIGNvbnN0IGltYWdlRGF0YUNvbnRhaW5lciA9IGN0eC5jcmVhdGVJbWFnZURhdGEoY29scywgcm93cyk7XG4gICAgaW1hZ2VEYXRhQ29udGFpbmVyLmRhdGEuc2V0KGJ1ZmZlcik7XG4gICAgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGFDb250YWluZXIsIDAsIDApO1xuXG4gICAgcmV0dXJuIGNhbnZhcztcbn07XG5cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy9saWIvd2ViZ2wvZW5naW5lLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFzQixhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeE8sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTdDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQXlCLEVBQUUsS0FBdUIsRUFBUSxFQUFFO0lBRXZGLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDakM7SUFFRCxNQUFNLGtCQUFrQixHQUFHOzs7Ozs7OztLQVExQixDQUFDO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRzs7Ozs7Ozs7O0tBUzVCLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNsRixXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXpCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFakMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVB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LENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFM0MsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dHVyZU9iamVjdCwgY3JlYXRlU2hhZGVyUHJvZ3JhbSwgY3JlYXRlRmxvYXRCdWZmZXIsIGdldEF0dHJpYnV0ZUxvY2F0aW9uLCBiaW5kQnVmZmVyVG9BdHRyaWJ1dGUsIGNsZWFyQmFja2dyb3VuZCwgZ2V0VW5pZm9ybUxvY2F0aW9uLCBiaW5kVGV4dHVyZVRvVW5pZm9ybSwgYmluZFByb2dyYW0sIGJpbmRWYWx1ZVRvVW5pZm9ybSwgY3JlYXRlVGV4dHVyZSB9IGZyb20gJy4vd2ViZ2wnO1xuaW1wb3J0IHsgcmVjdGFuZ2xlQSB9IGZyb20gJy4vZW5naW5lLnNoYXBlcyc7XG5cblxuXG5leHBvcnQgY29uc3QgZGlzcGxheUltYWdlT24gPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpOiB2b2lkID0+IHtcblxuICAgIGNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7XG4gICAgaWYgKCFnbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvbnRleHQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBgXG4gICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7XG4gICAgYXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlQ29vcmQ7XG4gICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkO1xuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgdl90ZXh0dXJlQ29vcmQgPSBhX3RleHR1cmVDb29yZDtcbiAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3ZlcnRleDtcbiAgICB9XG4gICAgYDtcbiAgICBjb25zdCBmcmFnbWVudFNoYWRlclNvdXJjZSA9IGBcbiAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7XG4gICAgLy8gdW5pZm9ybSB2ZWMyIHVfdGV4dHVyZVNpemU7XG4gICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkO1xuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgLy8gdmVjMiBkZWx0YSA9IHZlYzIoMS4sIDEuKSAvIHVfdGV4dHVyZVNpemU7XG4gICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4dHVyZUNvb3JkKTsgLy8gICogMC4gKyB2ZWM0KDUuLCA1LiwgMC4sIDEuKTtcbiAgICB9XG4gICAgYDtcbiAgICBjb25zdCBwcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShnbCwgdmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7XG4gICAgYmluZFByb2dyYW0oZ2wsIHByb2dyYW0pO1xuXG4gICAgY29uc3QgcmN0ID0gcmVjdGFuZ2xlQSgxLjMsIDEuMyk7XG5cbiAgICBjb25zdCBieERhdGEgPSBjcmVhdGVGbG9hdEJ1ZmZlcihnbCwgcmN0LnZlcnRpY2VzKTtcbiAgICBjb25zdCBieExvYyA9IGdldEF0dHJpYnV0ZUxvY2F0aW9uKGdsLCBwcm9ncmFtLCAnYV92ZXJ0ZXgnKTtcbiAgICBiaW5kQnVmZmVyVG9BdHRyaWJ1dGUoZ2wsIGJ4TG9jLCBieERhdGEpO1xuXG4gICAgY29uc3QgdGV4Q29vcmRzID0gY3JlYXRlRmxvYXRCdWZmZXIoZ2wsIHJjdC50ZXh0dXJlUG9zaXRpb25zKTtcbiAgICBjb25zdCB0ZXhDb29yZHNMb2MgPSBnZXRBdHRyaWJ1dGVMb2NhdGlvbihnbCwgcHJvZ3JhbSwgJ2FfdGV4dHVyZUNvb3JkJyk7XG4gICAgYmluZEJ1ZmZlclRvQXR0cmlidXRlKGdsLCB0ZXhDb29yZHNMb2MsIHRleENvb3Jkcyk7XG5cbiAgICBjb25zdCB0ZXh0dXJlID0gY3JlYXRlVGV4dHVyZShnbCwgaW1hZ2UpO1xuICAgIGNvbnN0IHRleHR1cmVMb2MgPSBnZXRVbmlmb3JtTG9jYXRpb24oZ2wsIHByb2dyYW0sICd1X3RleHR1cmUnKTtcbiAgICBiaW5kVGV4dHVyZVRvVW5pZm9ybShnbCwgdGV4dHVyZS50ZXh0dXJlLCAwLCB0ZXh0dXJlTG9jKTtcblxuICAgIGNsZWFyQmFja2dyb3VuZChnbCwgWy45LCAuOSwgLjksIDEuMF0pO1xuICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCByY3QudmVydGljZXMubGVuZ3RoKTtcbn07XG5cblxuXG5leHBvcnQgY29uc3QgY3JlYXRlVGV4dENhbnZhcyA9ICh0ZXh0OiBzdHJpbmcsIHdpZHRoOiBudW1iZXIgPSAyNTYsIGhlaWdodDogbnVtYmVyID0gMjU2LCBjb2xvcjogc3RyaW5nID0gJ3JlZCcpID0+IHtcbiAgICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmICghY3R4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gY29udGV4dCcpO1xuICAgIH1cbiAgICBjdHguY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY3R4LmNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY3R4LmZvbnQgPSBgYm9sZCAke2hlaWdodCAqIDUgLyA2IHwgMH1weCBzYW5zLXNlcmlmYDtcbiAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnO1xuICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICBjdHguZmlsbFRleHQodGV4dCwgd2lkdGggLyAyLCBoZWlnaHQgLyAyKTtcbiAgICByZXR1cm4gY3R4LmNhbnZhcztcbn07XG5cblxuZXhwb3J0IGNvbnN0IGNhbnZhc1RvSW1hZ2UgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCk6IEhUTUxJbWFnZUVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgaW1hZ2Uud2lkdGggPSBjYW52YXMud2lkdGg7XG4gICAgaW1hZ2UuaGVpZ2h0ID0gY2FudmFzLmhlaWdodDtcbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICByZXR1cm4gaW1hZ2U7XG59O1xuXG5leHBvcnQgY29uc3QgYXJyYXlUb0NhbnZhcyA9IChkYXRhOiBudW1iZXJbXVtdW10pID0+IHtcbiAgICBjb25zdCByb3dzID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgY29scyA9IGRhdGFbMF0ubGVuZ3RoO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGNvbHMgKiByb3dzICogNCk7XG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByb3dzOyByKyspIHtcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IChyICogY29scyArIGMpICogNDtcbiAgICAgICAgICAgIGJ1ZmZlcltwb3MgICAgXSA9IGRhdGFbcl1bY11bMF07XG4gICAgICAgICAgICBidWZmZXJbcG9zICsgMV0gPSBkYXRhW3JdW2NdWzFdO1xuICAgICAgICAgICAgYnVmZmVyW3BvcyArIDJdID0gZGF0YVtyXVtjXVsyXTtcbiAgICAgICAgICAgIGJ1ZmZlcltwb3MgKyAzXSA9IGRhdGFbcl1bY11bM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjYW52YXMud2lkdGggPSBjb2xzO1xuICAgIGNhbnZhcy5oZWlnaHQgPSByb3dzO1xuICAgIGNvbnN0IGltYWdlRGF0YUNvbnRhaW5lciA9IGN0eC5jcmVhdGVJbWFnZURhdGEoY29scywgcm93cyk7XG4gICAgaW1hZ2VEYXRhQ29udGFpbmVyLmRhdGEuc2V0KGJ1ZmZlcik7XG4gICAgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGFDb250YWluZXIsIDAsIDApO1xuXG4gICAgcmV0dXJuIGNhbnZhcztcbn07XG5cbiJdfQ==

@@ -76,2 +76,2 @@ /**

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNoYXBlcy5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay91a2lzLWZyb250ZW5kLWxpYnJhcmllcy91a2lzLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi93ZWJnbC9lbmdpbmUuc2hhcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQWlCSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFVLEVBQUU7SUFDL0QsT0FBTztRQUNILFFBQVEsRUFBRTtZQUNOLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBVSxDQUFDLEVBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDL0I7UUFDRCxnQkFBZ0IsRUFBRTtZQUNkLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNUO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQVUsRUFBRTtJQUMvRCxPQUFPO1FBQ0gsUUFBUSxFQUFFO1lBQ04sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFVLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELGdCQUFnQixFQUFFO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1Q7UUFDRCxhQUFhLEVBQUU7WUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1o7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBVSxFQUFFO0lBQ2hFLE9BQU87UUFDSCxRQUFRLEVBQUU7WUFDTixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFHLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELGdCQUFnQixFQUFFO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1Q7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBVSxFQUFFO0lBQ2hFLE9BQU87UUFDSCxRQUFRLEVBQUU7WUFDTixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELGdCQUFnQixFQUFFO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1Q7UUFDRCxhQUFhLEVBQUU7WUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNaO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2hpbGUgd2ViZ2wncyBjbGlwIHNwYWNlIGhhcyBjb29yZGluYXRlcyBbLTEsIDFdIChsZWZ0IHRvIHJpZ2h0KSwgWy0xLCAxXSAoYm90dG9tIHRvIHRvcCksXG4gKiB0ZXh0dXJlcyBnbyBmcm9tIFswLCAxXSAobGVmdCB0byByaWdodCksIFswLCAxXSAoYm90dG9tIHRvIHRvcCkuXG4gKi9cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcGVBIHtcbiAgICB2ZXJ0aWNlczogW251bWJlciwgbnVtYmVyLCBudW1iZXJdW107XG4gICAgdGV4dHVyZVBvc2l0aW9uczogW251bWJlciwgbnVtYmVyXVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXBlRSB7XG4gICAgdmVydGljZXM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXVtdO1xuICAgIHRleHR1cmVQb3NpdGlvbnM6IFtudW1iZXIsIG51bWJlcl1bXTtcbiAgICB2ZXJ0ZXhJbmRpY2VzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl1bXTtcbn1cblxuXG5cbmV4cG9ydCBjb25zdCB0cmlhbmdsZUEgPSAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBTaGFwZUEgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHZlcnRpY2VzOiBbXG4gICAgICAgICAgICBbLXdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdLFxuICAgICAgICAgICAgWyAgICAgICAgIDAsICBoZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgdGV4dHVyZVBvc2l0aW9uczogW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDFdLFxuICAgICAgICAgICAgWzEsIDBdXG4gICAgICAgIF1cbiAgICB9O1xufTtcblxuXG5leHBvcnQgY29uc3QgdHJpYW5nbGVFID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogU2hhcGVFID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2ZXJ0aWNlczogW1xuICAgICAgICAgICAgWy13aWR0aCAvIDIsIC1oZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgICAgICAgICAwLCAgaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbIHdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHRleHR1cmVQb3NpdGlvbnM6IFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAxXSxcbiAgICAgICAgICAgIFsxLCAwXVxuICAgICAgICBdLFxuICAgICAgICB2ZXJ0ZXhJbmRpY2VzOiBbXG4gICAgICAgICAgICBbMCwgMSwgMl1cbiAgICAgICAgXVxuICAgIH07XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWN0YW5nbGVBID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogU2hhcGVBID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2ZXJ0aWNlczogW1xuICAgICAgICAgICAgWy13aWR0aCAvIDIsICBoZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFstd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbIHdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdLFxuICAgICAgICAgICAgWy13aWR0aCAvIDIsICBoZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbIHdpZHRoIC8gMiwgIGhlaWdodCAvIDIsIDBdLFxuICAgICAgICBdLFxuICAgICAgICB0ZXh0dXJlUG9zaXRpb25zOiBbXG4gICAgICAgICAgICBbMCwgMV0sXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMSwgMF0sXG4gICAgICAgICAgICBbMCwgMV0sXG4gICAgICAgICAgICBbMSwgMF0sXG4gICAgICAgICAgICBbMSwgMV1cbiAgICAgICAgXVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdGFuZ2xlRSA9ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFNoYXBlRSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmVydGljZXM6IFtcbiAgICAgICAgICAgIFstd2lkdGggLyAyLCAgaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbLXdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdLFxuICAgICAgICAgICAgWyB3aWR0aCAvIDIsIC1oZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgd2lkdGggLyAyLCAgaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgIF0sXG4gICAgICAgIHRleHR1cmVQb3NpdGlvbnM6IFtcbiAgICAgICAgICAgIFswLCAxXSxcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFsxLCAwXSxcbiAgICAgICAgICAgIFsxLCAxXVxuICAgICAgICBdLFxuICAgICAgICB2ZXJ0ZXhJbmRpY2VzOiBbXG4gICAgICAgICAgICBbMCwgMSwgMl0sXG4gICAgICAgICAgICBbMCwgMiwgM11cbiAgICAgICAgXVxuICAgIH07XG59O1xuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNoYXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzLW1hcHMvc3JjL2xpYi93ZWJnbC9lbmdpbmUuc2hhcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQWlCSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFVLEVBQUU7SUFDL0QsT0FBTztRQUNILFFBQVEsRUFBRTtZQUNOLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBVSxDQUFDLEVBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDL0I7UUFDRCxnQkFBZ0IsRUFBRTtZQUNkLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNUO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQVUsRUFBRTtJQUMvRCxPQUFPO1FBQ0gsUUFBUSxFQUFFO1lBQ04sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFVLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELGdCQUFnQixFQUFFO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1Q7UUFDRCxhQUFhLEVBQUU7WUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1o7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBVSxFQUFFO0lBQ2hFLE9BQU87UUFDSCxRQUFRLEVBQUU7WUFDTixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFHLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELGdCQUFnQixFQUFFO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1Q7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBVSxFQUFFO0lBQ2hFLE9BQU87UUFDSCxRQUFRLEVBQUU7WUFDTixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUUsS0FBSyxHQUFHLENBQUMsRUFBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUNELGdCQUFnQixFQUFFO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ1Q7UUFDRCxhQUFhLEVBQUU7WUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNaO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2hpbGUgd2ViZ2wncyBjbGlwIHNwYWNlIGhhcyBjb29yZGluYXRlcyBbLTEsIDFdIChsZWZ0IHRvIHJpZ2h0KSwgWy0xLCAxXSAoYm90dG9tIHRvIHRvcCksXG4gKiB0ZXh0dXJlcyBnbyBmcm9tIFswLCAxXSAobGVmdCB0byByaWdodCksIFswLCAxXSAoYm90dG9tIHRvIHRvcCkuXG4gKi9cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcGVBIHtcbiAgICB2ZXJ0aWNlczogW251bWJlciwgbnVtYmVyLCBudW1iZXJdW107XG4gICAgdGV4dHVyZVBvc2l0aW9uczogW251bWJlciwgbnVtYmVyXVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXBlRSB7XG4gICAgdmVydGljZXM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXVtdO1xuICAgIHRleHR1cmVQb3NpdGlvbnM6IFtudW1iZXIsIG51bWJlcl1bXTtcbiAgICB2ZXJ0ZXhJbmRpY2VzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl1bXTtcbn1cblxuXG5cbmV4cG9ydCBjb25zdCB0cmlhbmdsZUEgPSAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBTaGFwZUEgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHZlcnRpY2VzOiBbXG4gICAgICAgICAgICBbLXdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdLFxuICAgICAgICAgICAgWyAgICAgICAgIDAsICBoZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgdGV4dHVyZVBvc2l0aW9uczogW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDFdLFxuICAgICAgICAgICAgWzEsIDBdXG4gICAgICAgIF1cbiAgICB9O1xufTtcblxuXG5leHBvcnQgY29uc3QgdHJpYW5nbGVFID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogU2hhcGVFID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2ZXJ0aWNlczogW1xuICAgICAgICAgICAgWy13aWR0aCAvIDIsIC1oZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgICAgICAgICAwLCAgaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbIHdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHRleHR1cmVQb3NpdGlvbnM6IFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAxXSxcbiAgICAgICAgICAgIFsxLCAwXVxuICAgICAgICBdLFxuICAgICAgICB2ZXJ0ZXhJbmRpY2VzOiBbXG4gICAgICAgICAgICBbMCwgMSwgMl1cbiAgICAgICAgXVxuICAgIH07XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWN0YW5nbGVBID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogU2hhcGVBID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2ZXJ0aWNlczogW1xuICAgICAgICAgICAgWy13aWR0aCAvIDIsICBoZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFstd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbIHdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdLFxuICAgICAgICAgICAgWy13aWR0aCAvIDIsICBoZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbIHdpZHRoIC8gMiwgIGhlaWdodCAvIDIsIDBdLFxuICAgICAgICBdLFxuICAgICAgICB0ZXh0dXJlUG9zaXRpb25zOiBbXG4gICAgICAgICAgICBbMCwgMV0sXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMSwgMF0sXG4gICAgICAgICAgICBbMCwgMV0sXG4gICAgICAgICAgICBbMSwgMF0sXG4gICAgICAgICAgICBbMSwgMV1cbiAgICAgICAgXVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdGFuZ2xlRSA9ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFNoYXBlRSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmVydGljZXM6IFtcbiAgICAgICAgICAgIFstd2lkdGggLyAyLCAgaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgICAgICBbLXdpZHRoIC8gMiwgLWhlaWdodCAvIDIsIDBdLFxuICAgICAgICAgICAgWyB3aWR0aCAvIDIsIC1oZWlnaHQgLyAyLCAwXSxcbiAgICAgICAgICAgIFsgd2lkdGggLyAyLCAgaGVpZ2h0IC8gMiwgMF0sXG4gICAgICAgIF0sXG4gICAgICAgIHRleHR1cmVQb3NpdGlvbnM6IFtcbiAgICAgICAgICAgIFswLCAxXSxcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFsxLCAwXSxcbiAgICAgICAgICAgIFsxLCAxXVxuICAgICAgICBdLFxuICAgICAgICB2ZXJ0ZXhJbmRpY2VzOiBbXG4gICAgICAgICAgICBbMCwgMSwgMl0sXG4gICAgICAgICAgICBbMCwgMiwgM11cbiAgICAgICAgXVxuICAgIH07XG59O1xuXG4iXX0=

@@ -39,2 +39,2 @@ export const flattenRecursive = (m) => {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtbWFwcy9zcmMvIiwic291cmNlcyI6WyJsaWIvd2ViZ2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFRLEVBQVksRUFBRTtJQUNuRCxJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDakIsSUFBSSxZQUFZLENBQUM7UUFDakIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsWUFBWSxHQUFHLEdBQUcsQ0FBQztTQUN0QjtRQUNELElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDckQ7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFHRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUFvQixFQUFFLEVBQUU7SUFDcEQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLFFBQVEsQ0FBQztLQUNsQjtTQUFNO1FBQ0osT0FBTyxTQUFTLENBQUM7S0FDbkI7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDdEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVksRUFBVyxFQUFFO0lBQzVELE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFZLEVBQVUsRUFBRTtJQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmbGF0dGVuUmVjdXJzaXZlID0gKG06IGFueVtdKTogbnVtYmVyW10gPT4ge1xuICAgIGxldCBmbGF0OiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgcm93IG9mIG0pIHtcbiAgICAgICAgbGV0IGZsYXR0ZW5lZFJvdztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93WzBdKSkge1xuICAgICAgICAgICAgZmxhdHRlbmVkUm93ID0gZmxhdHRlblJlY3Vyc2l2ZShyb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmxhdHRlbmVkUm93ID0gcm93O1xuICAgICAgICB9XG4gICAgICAgIGZsYXQgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0KGZsYXQsIGZsYXR0ZW5lZFJvdyk7XG4gICAgfVxuICAgIHJldHVybiBmbGF0O1xufTtcblxuXG5leHBvcnQgY29uc3QgY3JlYXRlTkRpbUFycmF5ID0gKGRpbWVuc2lvbnM6IG51bWJlcltdKSA9PiB7XG4gICAgaWYgKGRpbWVuc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBkaW0gPSBkaW1lbnNpb25zWzBdO1xuICAgICAgICBjb25zdCByZXN0ID0gZGltZW5zaW9ucy5zbGljZSgxKTtcbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSBuZXcgQXJyYXkoZGltKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW07IGkrKykge1xuICAgICAgICAgICAgbmV3QXJyYXlbaV0gPSBjcmVhdGVORGltQXJyYXkocmVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0FycmF5O1xuICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgbG9nTiA9ICh2YWw6IG51bWJlciwgcm9vdDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICByZXR1cm4gTWF0aC5sb2codmFsKSAvIE1hdGgubG9nKHJvb3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUG93ZXJPZiA9ICh2YWw6IG51bWJlciwgcm9vdDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGxvZ04odmFsLCByb290KSAlIDEgPT09IDA7XG59O1xuXG5leHBvcnQgY29uc3QgbmV4dFBvd2VyT2YgPSAodmFsOiBudW1iZXIsIHJvb3Q6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgY29uc3QgZXhwb25lbnQgPSBNYXRoLmNlaWwobG9nTih2YWwsIHJvb3QpKTtcbiAgICByZXR1cm4gTWF0aC5wb3coMiwgZXhwb25lbnQpO1xufTsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy9saWIvd2ViZ2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFRLEVBQVksRUFBRTtJQUNuRCxJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDakIsSUFBSSxZQUFZLENBQUM7UUFDakIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsWUFBWSxHQUFHLEdBQUcsQ0FBQztTQUN0QjtRQUNELElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDckQ7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFHRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUFvQixFQUFFLEVBQUU7SUFDcEQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLFFBQVEsQ0FBQztLQUNsQjtTQUFNO1FBQ0osT0FBTyxTQUFTLENBQUM7S0FDbkI7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDdEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVksRUFBVyxFQUFFO0lBQzVELE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFZLEVBQVUsRUFBRTtJQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmbGF0dGVuUmVjdXJzaXZlID0gKG06IGFueVtdKTogbnVtYmVyW10gPT4ge1xuICAgIGxldCBmbGF0OiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgcm93IG9mIG0pIHtcbiAgICAgICAgbGV0IGZsYXR0ZW5lZFJvdztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93WzBdKSkge1xuICAgICAgICAgICAgZmxhdHRlbmVkUm93ID0gZmxhdHRlblJlY3Vyc2l2ZShyb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmxhdHRlbmVkUm93ID0gcm93O1xuICAgICAgICB9XG4gICAgICAgIGZsYXQgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0KGZsYXQsIGZsYXR0ZW5lZFJvdyk7XG4gICAgfVxuICAgIHJldHVybiBmbGF0O1xufTtcblxuXG5leHBvcnQgY29uc3QgY3JlYXRlTkRpbUFycmF5ID0gKGRpbWVuc2lvbnM6IG51bWJlcltdKSA9PiB7XG4gICAgaWYgKGRpbWVuc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBkaW0gPSBkaW1lbnNpb25zWzBdO1xuICAgICAgICBjb25zdCByZXN0ID0gZGltZW5zaW9ucy5zbGljZSgxKTtcbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSBuZXcgQXJyYXkoZGltKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW07IGkrKykge1xuICAgICAgICAgICAgbmV3QXJyYXlbaV0gPSBjcmVhdGVORGltQXJyYXkocmVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0FycmF5O1xuICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgbG9nTiA9ICh2YWw6IG51bWJlciwgcm9vdDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICByZXR1cm4gTWF0aC5sb2codmFsKSAvIE1hdGgubG9nKHJvb3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUG93ZXJPZiA9ICh2YWw6IG51bWJlciwgcm9vdDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGxvZ04odmFsLCByb290KSAlIDEgPT09IDA7XG59O1xuXG5leHBvcnQgY29uc3QgbmV4dFBvd2VyT2YgPSAodmFsOiBudW1iZXIsIHJvb3Q6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgY29uc3QgZXhwb25lbnQgPSBNYXRoLmNlaWwobG9nTih2YWwsIHJvb3QpKTtcbiAgICByZXR1cm4gTWF0aC5wb3coMiwgZXhwb25lbnQpO1xufTsiXX0=

@@ -12,2 +12,2 @@ /*

export * from './lib/webgl/engine.shapes';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay91a2lzLWZyb250ZW5kLWxpYnJhcmllcy91a2lzLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy91dGlscy1tYXBzL3NyYy8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHV0aWxzLW1hcHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9vbC91dGlscy1vbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vbC9jdXN0b21SZW5kZXJlcnMvZHRtX3JlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29sL2N1c3RvbVJlbmRlcmVycy9pbnRlcnBvbGF0aW9uX3JlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29sL2N1c3RvbVJlbmRlcmVycy9wYXJ0aWNsZV9yZW5kZXJlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC93ZWJnbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC9lbmdpbmUuY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC9lbmdpbmUuaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC9lbmdpbmUuc2hhcGVzJztcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3V0aWxzLW1hcHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHV0aWxzLW1hcHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9vbC91dGlscy1vbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vbC9jdXN0b21SZW5kZXJlcnMvZHRtX3JlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29sL2N1c3RvbVJlbmRlcmVycy9pbnRlcnBvbGF0aW9uX3JlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29sL2N1c3RvbVJlbmRlcmVycy9wYXJ0aWNsZV9yZW5kZXJlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC93ZWJnbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC9lbmdpbmUuY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC9lbmdpbmUuaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJnbC9lbmdpbmUuc2hhcGVzJztcbiJdfQ==

@@ -1,1 +0,1 @@

{"name":"@dlr-eoc/utils-maps","main":"bundles/dlr-eoc-utils-maps.umd.js","version":"7.3.1","license":"Apache-2.0","peerDependencies":{},"dependencies":{"ol":"^6.5.0","delaunator":"^4.0.1","tslib":"^2.0.0"},"module":"fesm2015/dlr-eoc-utils-maps.js","es2015":"fesm2015/dlr-eoc-utils-maps.js","esm2015":"esm2015/dlr-eoc-utils-maps.js","fesm2015":"fesm2015/dlr-eoc-utils-maps.js","typings":"dlr-eoc-utils-maps.d.ts","metadata":"dlr-eoc-utils-maps.metadata.json","sideEffects":false,"repository":{"url":"git+https://github.com/dlr-eoc/ukis-frontend-libraries.git","type":"git"}}
{"name":"@dlr-eoc/utils-maps","main":"bundles/dlr-eoc-utils-maps.umd.js","version":"7.3.2-next.1","license":"Apache-2.0","peerDependencies":{},"dependencies":{"ol":"^6.5.0","delaunator":"^4.0.1","tslib":"^2.0.0"},"module":"fesm2015/dlr-eoc-utils-maps.js","es2015":"fesm2015/dlr-eoc-utils-maps.js","esm2015":"esm2015/dlr-eoc-utils-maps.js","fesm2015":"fesm2015/dlr-eoc-utils-maps.js","typings":"dlr-eoc-utils-maps.d.ts","metadata":"dlr-eoc-utils-maps.metadata.json","sideEffects":false,"repository":{"url":"git+https://github.com/dlr-eoc/ukis-frontend-libraries.git","type":"git"}}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc