diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml deleted file mode 100644 index ab14ad2..0000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Node.js CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [16.x, 18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci - - run: npm run lint diff --git a/README.md b/README.md index 715f31d..ecc8aee 100755 --- a/README.md +++ b/README.md @@ -29,19 +29,15 @@ Check out examples at [http://drawcall.github.io/Proton/](http://drawcall.github ## Features -- **Easy to use** It takes only a dozen lines of code to create a particle animation effect. -- **Multiple effects** Use Proton to create flames, fireworks, bullets, explosions, and more. -- **Any scene** You can use it in frameworks such as `react`, `vue`, `angular`, and `pixi.js`, `Phaser`, etc. -- **Efficient rendering** Its rendering efficiency is very high, you can render tens of thousands of particles in the page. -- **Simulated physics** Proton can simulate various physical properties including gravity and Brownian motion. -- **Several renderers** Proton provides a variety of renderers, of course you can also customize your own renderer - - `CanvasRenderer` - Proton's canvas renderer - - `DomRenderer` - Proton's dom renderer, supporting hardware acceleration. - - `WebGLRenderer` - Proton's webgl renderer. - - `PixelRenderer` - Proton's pixel renderer, It can implement pixel animation. - - `EaselRenderer` - Easeljs proton renderer. - - `EaselRenderer` - Pixi.js proton renderer. - - `CustomRenderer` - Use a custom renderer that can be applied to any scene. +- **Easy to use** - Particles can be emitted from a point, line, rectangle, circle, etc. +- **Powerful** - 16 different kinds of renderers, also you can easily customize your own renderer. +- **Three.js support** - Check out [three.proton](https://github.com/drawcall/three.proton/) +- **Perfect performance** - Push your particles to the max. +- **Reactive** - Watch and run emitters based on changes to properties. +- **Customizable** - Use your own update function, initialize function, particle factory, and renderer. +- **Compatibility** - Support for both Canvas, DOM, WebGL, Pixi.js (up to v8), EaselJS, and custom renderers. + +> **Note:** If you need 3D particle effects, please use [three.proton](https://github.com/drawcall/three.proton/). ## Documentation @@ -113,6 +109,48 @@ const renderer = new CanvasRenderer(canvas); proton.addRenderer(renderer); ``` +### Rendering with Pixi.js v8 + +Pixi.js v8 introduced several breaking changes to its API, particularly in the Graphics API. Proton Engine 7.2.0+ fully supports Pixi.js v8 with a new, compatible PixiRenderer. + +```javascript +// Create a Pixi.js v8 application (using async initialization) +const app = new PIXI.Application(); +(async function() { + // Initialize the Pixi app + await app.init({ + resizeTo: window, + background: '#000', + antialias: true + }); + + document.body.appendChild(app.canvas); + + // Create a Proton instance + // When using in browser with script tags, make sure to include proton.web.js + const proton = new Proton(); + + // Create an emitter + const emitter = new Proton.Emitter(); + // Configure your emitter... + + // Add the Pixi.js renderer to Proton + const renderer = new Proton.PixiRenderer(app.stage); + proton.addRenderer(renderer); + + // Start the emitter + emitter.emit(); + proton.addEmitter(emitter); + + // Update Proton in the Pixi.js animation loop + app.ticker.add(() => { + proton.update(); + }); +})(); +``` + +Check out a complete example in `example/pixiv8.html`. + ## Remarks - `Proton.Span` (or `Proton.getSpan`) is a very important concept of the Proton engine, it's everywhere. If you understand its usage, you can create almost any desired effect! diff --git a/build/proton.d.ts b/build/proton.d.ts index 88b117c..b714f4f 100644 --- a/build/proton.d.ts +++ b/build/proton.d.ts @@ -1849,22 +1849,43 @@ declare class Emitter$1 extends Particle$1 { dispatch(event: any, target: any): void; emitting(time: any): void; /** - * Creates a single particle. - * - * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects. - * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects. - * @returns {Particle} The created particle. - * + * Ultra-fast particle creation - no optional parameters, minimal overhead + * @param {Number} count - Number of particles to create + * @private */ - createParticle(initialize?: Object | any[], behaviour?: Object | any[]): Particle$1; + private _fastCreateParticles; + /** + * High-speed loop for creating many particles + * @private + */ + private _createParticlesLoop; + /** + * Bulk initialization for particles - more efficient for large batches + * @private + */ + private _initializeParticlesBulk; + /** + * High-performance batch particle creation for large quantities + * @param {Number} length - Number of particles to create + * @param {Object|Array} [initialize] - Initialization parameters + * @param {Object|Array} [behaviour] - Behavior parameters + */ + createParticlesBatch(length: number, initialize?: Object | any[], behaviour?: Object | any[]): void; + /** + * Internal method to create a chunk of particles + * @private + */ + private _createParticleChunk; + /** + * Creates a single particle - now optimized for performance + * but batch methods should be preferred for multiple particles + */ + createParticle(initialize: any, behaviour: any): any; /** * Sets up a particle with initialization and behavior. - * - * @param {Particle} particle - The particle to set up. - * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects. - * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects. + * @deprecated Use direct methods instead for better performance */ - setupParticle(particle: Particle$1, initialize?: Object | any[], behaviour?: Object | any[]): void; + setupParticle(particle: any, initialize: any, behaviour: any): void; /** * Removes all particles and stops the emitter. */ @@ -2089,6 +2110,9 @@ declare class PixiRenderer extends BaseRenderer { color: boolean; setColor: boolean; blendMode: any; + rendererId: number; + pixiPool: EmitterAwarePool; + emitterMap: Map; setPIXI(PIXI: any): void; createFromImage: any; /** @@ -2114,6 +2138,22 @@ declare class PixiRenderer extends BaseRenderer { destroy(particles: Array): void; } +/** + * A specialized pool that ensures particles are never shared between different emitters + */ +declare class EmitterAwarePool extends Pool { + constructor(); + emitterPools: Map; + /** + * Get an item from the pool, ensuring it's specific to the emitter + */ + get(target: any, params: any, emitterId: any): any; + /** + * Return an item to its emitter-specific pool + */ + expire(target: any, emitterId: any): any; +} + declare class MStack { mats: Float32Array[]; size: number; diff --git a/build/proton.js b/build/proton.js index 6240b71..a9a6574 100644 --- a/build/proton.js +++ b/build/proton.js @@ -4,37 +4,38 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Proton = {})); })(this, (function (exports) { 'use strict'; - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; } - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); + function _inheritsLoose(t, o) { + t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; } var WebGLUtil = { @@ -554,9 +555,7 @@ */; _proto.getCount = function getCount() { var count = 0; - for (var id in this.cache) { - count += this.cache[id].length; - } + for (var id in this.cache) count += this.cache[id].length; return count++; } @@ -836,10 +835,6 @@ }(); var Proton = /*#__PURE__*/function () { - // measure 1:100 - - // event name - /** * The constructor to add emitters * @@ -973,9 +968,7 @@ }; _proto.emittersUpdate = function emittersUpdate(elapsed) { var i = this.emitters.length; - while (i--) { - this.emitters[i].update(elapsed); - } + while (i--) this.emitters[i].update(elapsed); } /** @@ -1003,17 +996,13 @@ _proto.getCount = function getCount() { var total = 0; var i = this.emitters.length; - while (i--) { - total += this.emitters[i].particles.length; - } + while (i--) total += this.emitters[i].particles.length; return total; }; _proto.getAllParticles = function getAllParticles() { var particles = []; var i = this.emitters.length; - while (i--) { - particles = particles.concat(this.emitters[i].particles); - } + while (i--) particles = particles.concat(this.emitters[i].particles); return particles; }; _proto.destroyAllEmitters = function destroyAllEmitters() { @@ -1051,7 +1040,7 @@ destroyOther(); } }; - _createClass(Proton, [{ + return _createClass(Proton, [{ key: "fps", get: /** @@ -1066,12 +1055,13 @@ this._interval = fps === "auto" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7); } }]); - return Proton; }(); Proton.USE_CLOCK = false; + // measure 1:100 Proton.MEASURE = 100; Proton.EULER = "euler"; Proton.RK2 = "runge-kutta2"; + // event name Proton.PARTICLE_CREATED = "PARTICLE_CREATED"; Proton.PARTICLE_UPDATE = "PARTICLE_UPDATE"; Proton.PARTICLE_SLEEP = "PARTICLE_SLEEP"; @@ -1112,26 +1102,6 @@ * Represents a span of values or an array. */ var Span = /*#__PURE__*/function () { - /** - * @type {boolean} - * @private - */ - - /** - * @type {number|number[]} - * @private - */ - - /** - * @type {number} - * @private - */ - - /** - * @type {boolean} - * @private - */ - /** * Creates a new Span instance. * @param {number|number[]} a - The first value or an array of values. @@ -1139,9 +1109,25 @@ * @param {boolean} [center=false] - Whether to use center-based calculation. */ function Span(a, b, center) { + /** + * @type {boolean} + * @private + */ this.isArray = void 0; + /** + * @type {number|number[]} + * @private + */ this.a = void 0; + /** + * @type {number} + * @private + */ this.b = void 0; + /** + * @type {boolean} + * @private + */ this.center = void 0; if (Util.isArray(a)) { this.isArray = true; @@ -1348,17 +1334,15 @@ }; var Vector2D = /*#__PURE__*/function () { - /** @type {number} */ - - /** @type {number} */ - /** * Creates a new Vector2D instance. * @param {number} [x=0] - The x coordinate. * @param {number} [y=0] - The y coordinate. */ function Vector2D(x, y) { + /** @type {number} */ this.x = void 0; + /** @type {number} */ this.y = void 0; this.x = x || 0; this.y = y || 0; @@ -1628,34 +1612,26 @@ * @class Particle */ var Particle = /*#__PURE__*/function () { - /** @type {string} The unique identifier of the particle */ - - /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */ - - /** @type {object} Custom data associated with the particle */ - - /** @type {Behaviour[]} Array of behaviours applied to the particle */ - - /** @type {Vector2D} Current position of the particle */ - - /** @type {Vector2D} Current velocity of the particle */ - - /** @type {Vector2D} Current acceleration of the particle */ - - /** @type {Rgb} Color of the particle */ - /** * Creates a new Particle instance. * @param {Object} [conf] Configuration object for the particle */ function Particle(conf) { + /** @type {string} The unique identifier of the particle */ this.id = ""; + /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */ this.old = null; + /** @type {object} Custom data associated with the particle */ this.data = null; + /** @type {Behaviour[]} Array of behaviours applied to the particle */ this.behaviours = null; + /** @type {Vector2D} Current position of the particle */ this.p = null; + /** @type {Vector2D} Current velocity of the particle */ this.v = null; + /** @type {Vector2D} Current acceleration of the particle */ this.a = null; + /** @type {Rgb} Color of the particle */ this.rgb = null; this.name = "Particle"; this.id = Puid.id(this.name); @@ -1902,9 +1878,7 @@ return mat; }, set: function set(mat1, mat2) { - for (var i = 0; i < 9; i++) { - mat2[i] = mat1[i]; - } + for (var i = 0; i < 9; i++) mat2[i] = mat1[i]; return mat2; }, multiply: function multiply(mat, mat2, mat3) { @@ -1961,14 +1935,28 @@ } }; + /** + * Represents an ArraySpan, a subclass of Span that works with arrays. + * @extends Span + */ var ArraySpan = /*#__PURE__*/function (_Span) { - _inheritsLoose(ArraySpan, _Span); - function ArraySpan(color) { + /** + * Creates an instance of ArraySpan. + * @param {Array|*|any} arr - The array or value to be converted to an array. + */ + function ArraySpan(arr) { var _this; _this = _Span.call(this) || this; - _this._arr = Util.toArray(color); + _this._arr = Util.toArray(arr); return _this; } + + /** + * Gets a random value from the array. + * If the value is "random" or "Random", it returns a random color. + * @returns {*} A random value from the array or a random color. + */ + _inheritsLoose(ArraySpan, _Span); var _proto = ArraySpan.prototype; _proto.getValue = function getValue() { var val = Util.getRandFromArray(this._arr); @@ -1976,15 +1964,11 @@ } /** - * Make sure that the color is an instance of Proton.ArraySpan, if not it makes a new instance - * - * @method setSpanValue - * @memberof Proton#Proton.Color - * @instance - * - * @param {Proton.Particle} particle - * @param {Number} the integrate time 1/ms - * @param {Int} the particle index + * Creates an ArraySpan instance from the given array. + * If the input is already an ArraySpan instance, it returns the input. + * @static + * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance. + * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy. */; ArraySpan.createArraySpan = function createArraySpan(arr) { if (!arr) return null; @@ -2013,26 +1997,6 @@ * Rate class for controlling particle emission rate. */ var Rate = /*#__PURE__*/function () { - /** - * @type {Span} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {number} - * @private - */ - - /** - * @type {number} - * @private - */ - /** * Creates a new Rate instance. * The number of particles per second emission (a [particle]/b [s]). @@ -2043,9 +2007,25 @@ * new Rate(new Span(10, 20), new Span(0.1, 0.25)); */ function Rate(numpan, timepan) { + /** + * @type {Span} + * @private + */ this.numPan = void 0; + /** + * @type {Span} + * @private + */ this.timePan = void 0; + /** + * @type {number} + * @private + */ this.startTime = void 0; + /** + * @type {number} + * @private + */ this.nextTime = void 0; this.numPan = Span.setSpanValue(Util.initValue(numpan, 1)); this.timePan = Span.setSpanValue(Util.initValue(timepan, 1)); @@ -2108,16 +2088,6 @@ * @extends Initialize */ var Life = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Life, _Initialize); - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Life instance. * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range. @@ -2127,7 +2097,14 @@ function Life(a, b, c) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + * @private + */ _this.lifePan = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.lifePan = Span.setSpanValue(a, b, c); _this.name = "Life"; @@ -2138,6 +2115,7 @@ * Initializes the lifetime of a target particle. * @param {object} target - The target particle to initialize. */ + _inheritsLoose(Life, _Initialize); var _proto = Life.prototype; _proto.initialize = function initialize(target) { if (this.lifePan.a === Infinity) target.life = Infinity;else target.life = this.lifePan.getValue(); @@ -2166,7 +2144,6 @@ * @extends Zone */ var PointZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(PointZone, _Zone); /** * Creates a new PointZone. * @param {number} x - The x-coordinate of the point. @@ -2194,6 +2171,7 @@ * Gets the position of the point. * @returns {Object} An object representing the position vector. */ + _inheritsLoose(PointZone, _Zone); var _proto = PointZone.prototype; _proto.getPosition = function getPosition() { this.vector.x = this.x; @@ -2219,16 +2197,6 @@ * @extends Initialize */ var Position = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Position, _Initialize); - /** - * @type {PointZone|any} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Position instance. * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided. @@ -2236,7 +2204,14 @@ function Position(zone) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {PointZone|any} + * @private + */ _this.zone = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.zone = Util.initValue(zone, new PointZone()); _this.name = "Position"; @@ -2247,6 +2222,7 @@ * Resets this initializer's parameters. * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided. */ + _inheritsLoose(Position, _Initialize); var _proto = Position.prototype; _proto.reset = function reset(zone) { this.zone = Util.initValue(zone, new PointZone()); @@ -2272,21 +2248,6 @@ * @extends Initialize */ var Velocity = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Velocity, _Initialize); - /** - * @type {Span} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Velocity instance. * @param {number|Span} [rpan] - The radial component of the velocity or its range. @@ -2296,8 +2257,19 @@ function Velocity(rpan, thapan, type) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + * @private + */ _this.rPan = void 0; + /** + * @type {Span} + * @private + */ _this.thaPan = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.rPan = Span.setSpanValue(rpan); _this.thaPan = Span.setSpanValue(thapan); @@ -2312,6 +2284,7 @@ * @param {number|Span} [thapan] - The angular component of the velocity or its range. * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar'). */ + _inheritsLoose(Velocity, _Initialize); var _proto = Velocity.prototype; _proto.reset = function reset(rpan, thapan, type) { this.rPan = Span.setSpanValue(rpan); @@ -2351,16 +2324,6 @@ * @extends Initialize */ var Mass = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Mass, _Initialize); - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Mass instance. * @param {number|Span} a - The mass value or the lower bound of the mass range. @@ -2370,7 +2333,14 @@ function Mass(a, b, c) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + * @private + */ _this.massPan = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.massPan = Span.setSpanValue(a, b, c); _this.name = "Mass"; @@ -2381,6 +2351,7 @@ * Initializes the mass of a target particle. * @param {object} target - The target particle to initialize. */ + _inheritsLoose(Mass, _Initialize); var _proto = Mass.prototype; _proto.initialize = function initialize(target) { target.mass = this.massPan.getValue(); @@ -2393,15 +2364,6 @@ * @extends Initialize */ var Radius = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Radius, _Initialize); - /** - * @type {Span} - */ - - /** - * @type {string} - */ - /** * Creates a new Radius instance. * @param {number|Span} a - The radius value or the lower bound of the radius range. @@ -2411,7 +2373,13 @@ function Radius(a, b, c) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + */ _this.radius = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.radius = Span.setSpanValue(a, b, c); _this.name = "Radius"; @@ -2424,6 +2392,7 @@ * @param {number} [b] - The upper bound of the radius range (if a is a number). * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers). */ + _inheritsLoose(Radius, _Initialize); var _proto = Radius.prototype; _proto.reset = function reset(a, b, c) { this.radius = Span.setSpanValue(a, b, c); @@ -2445,26 +2414,23 @@ * @extends Initialize */ var Body = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Body, _Initialize); - /** - * @type {ArraySpan} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Body instance. - * @param {string|object|ArraySpan} image - The image source or object to use for the particle body. + * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body. * @param {number} [w=20] - The width of the particle body. * @param {number} [h] - The height of the particle body. Defaults to the width if not provided. */ function Body(image, w, h) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {ArraySpan} + * @private + */ _this.image = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.image = _this.setSpanValue(image); _this.w = Util.initValue(w, 20); @@ -2477,6 +2443,7 @@ * Initializes the particle's body. * @param {object} particle - The particle to initialize. */ + _inheritsLoose(Body, _Initialize); var _proto = Body.prototype; _proto.initialize = function initialize(particle) { var imageTarget = this.image.getValue(); @@ -2495,7 +2462,7 @@ /** * Sets the span value for the image. - * @param {string|object|ArraySpan} image - The image source or object to set as span value. + * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value. * @returns {ArraySpan} The ArraySpan instance. * @private */; @@ -2643,7 +2610,6 @@ Behaviour.id = 0; var Force = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Force, _Behaviour); /** * @memberof! Proton# * @augments Proton.Behaviour @@ -2677,6 +2643,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=ease.easeLinear] this behaviour's easing */ + _inheritsLoose(Force, _Behaviour); var _proto = Force.prototype; _proto.reset = function reset(fx, fy, life, easing) { this.force = this.normalizeForce(new Vector2D(fx, fy)); @@ -2707,7 +2674,6 @@ * @extends Behaviour */ var Attraction = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Attraction, _Behaviour); /** * Creates an instance of Attraction. * @param {Vector2D} targetPosition - The attraction point coordinates. @@ -2772,6 +2738,7 @@ * @param {number} [life=Infinity] - The new life span of this behaviour. * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour. */ + _inheritsLoose(Attraction, _Behaviour); var _proto = Attraction.prototype; _proto.reset = function reset(targetPosition, force, radius, life, easing) { this.targetPosition = Util.initValue(targetPosition, new Vector2D()); @@ -2805,7 +2772,6 @@ }(Behaviour); var RandomDrift = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(RandomDrift, _Behaviour); /** * @memberof! Proton# * @augments Behaviour @@ -2843,6 +2809,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(RandomDrift, _Behaviour); var _proto = RandomDrift.prototype; _proto.reset = function reset(driftX, driftY, delay, life, easing) { this.panFoce = new Vector2D(driftX, driftY); @@ -2877,7 +2844,6 @@ }(Behaviour); var Gravity = /*#__PURE__*/function (_Force) { - _inheritsLoose(Gravity, _Force); /** * @memberof! Proton# * @augments Proton#Proton.Force @@ -2908,6 +2874,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=ease.easeLinear] this behaviour's easing */ + _inheritsLoose(Gravity, _Force); var _proto = Gravity.prototype; _proto.reset = function reset(g, life, easing) { _Force.prototype.reset.call(this, 0, g, life, easing); @@ -2916,7 +2883,6 @@ }(Force); var Collision = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Collision, _Behaviour); /** * The callback after collision * @@ -2966,6 +2932,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=ease.easeLinear] this behaviour's easing */ + _inheritsLoose(Collision, _Behaviour); var _proto = Collision.prototype; _proto.reset = function reset(emitter, mass, callback, life, easing) { this.emitter = Util.initValue(emitter, null); @@ -3024,7 +2991,6 @@ }(Behaviour); var CrossZone = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(CrossZone, _Behaviour); /** * Defines what happens if the particles come to the end of the specified zone * @@ -3060,6 +3026,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(CrossZone, _Behaviour); var _proto = CrossZone.prototype; _proto.reset = function reset(zone, crossType, life, easing) { this.zone = zone; @@ -3090,26 +3057,6 @@ * @extends Behaviour */ var Alpha = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Alpha, _Behaviour); - /** - * @type {boolean} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Alpha instance. * @param {number|Span} [a=1] - The initial alpha value or range. @@ -3120,9 +3067,24 @@ function Alpha(a, b, life, easing) { var _this; _this = _Behaviour.call(this, life, easing) || this; + /** + * @type {boolean} + * @private + */ _this.same = void 0; + /** + * @type {Span} + * @private + */ _this.a = void 0; + /** + * @type {Span} + * @private + */ _this.b = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.reset(a, b); _this.name = "Alpha"; @@ -3136,6 +3098,7 @@ * @param {number} [life] - This behaviour's life. * @param {string} [easing] - This behaviour's easing function. */ + _inheritsLoose(Alpha, _Behaviour); var _proto = Alpha.prototype; _proto.reset = function reset(a, b, life, easing) { this.same = b === null || b === undefined; @@ -3172,16 +3135,6 @@ * @extends Behaviour */ var Scale = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Scale, _Behaviour); - /** - * @type {boolean} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Scale instance. * @param {number|Span} [a=1] - The initial scale value or range. @@ -3192,7 +3145,14 @@ function Scale(a, b, life, easing) { var _this; _this = _Behaviour.call(this, life, easing) || this; + /** + * @type {boolean} + * @private + */ _this.same = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.reset(a, b); _this.name = "Scale"; @@ -3206,6 +3166,7 @@ * @param {number} [life] - This behaviour's life. * @param {string} [easing] - This behaviour's easing function. */ + _inheritsLoose(Scale, _Behaviour); var _proto = Scale.prototype; _proto.reset = function reset(a, b, life, easing) { this.same = b === null || b === undefined; @@ -3244,46 +3205,40 @@ * @extends Behaviour */ var Rotate = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Rotate, _Behaviour); - /** - * @type {boolean} - * @private - */ - - /** - * @type {Span} - * @private - */ - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - * @private - */ - - /** - * @type {string} - */ - - /** - * Creates a new Rotate instance. - * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation. - * @param {string|number|Span} [b] - The final rotation value or range. - * @param {string} [style='to'] - The style of rotation ('to' or 'add'). - * @param {number} [life=Infinity] - This behaviour's life. - * @param {string} [easing='easeLinear'] - This behaviour's easing function. + * Creates a new Rotate instance. + * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation. + * @param {string|number|Span} [b] - The final rotation value or range. + * @param {string} [style='to'] - The style of rotation ('to' or 'add'). + * @param {number} [life=Infinity] - This behaviour's life. + * @param {string} [easing='easeLinear'] - This behaviour's easing function. */ function Rotate(influence, b, style, life, easing) { var _this; _this = _Behaviour.call(this, life, easing) || this; + /** + * @type {boolean} + * @private + */ _this.same = void 0; + /** + * @type {Span} + * @private + */ _this.a = void 0; + /** + * @type {Span} + * @private + */ _this.b = void 0; + /** + * @type {string} + * @private + */ _this.style = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.reset(influence, b, style); _this.name = "Rotate"; @@ -3298,6 +3253,7 @@ * @param {number} [life] - This behaviour's life. * @param {string} [easing] - This behaviour's easing function. */ + _inheritsLoose(Rotate, _Behaviour); var _proto = Rotate.prototype; _proto.reset = function reset(a, b, style, life, easing) { this.same = b === null || b === undefined; @@ -3342,7 +3298,6 @@ }(Behaviour); var Color = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Color, _Behaviour); /** * @memberof! Proton# * @augments Proton.Behaviour @@ -3376,6 +3331,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(Color, _Behaviour); var _proto = Color.prototype; _proto.reset = function reset(a, b, life, easing) { this.a = ArraySpan.createArraySpan(a); @@ -3429,7 +3385,6 @@ var CHANGING = "changing"; var Cyclone = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Cyclone, _Behaviour); /** * @memberof! Proton# * @augments Proton.Behaviour @@ -3450,6 +3405,7 @@ _this.name = "Cyclone"; return _this; } + _inheritsLoose(Cyclone, _Behaviour); var _proto = Cyclone.prototype; _proto.setAngleAndForce = function setAngleAndForce(angle, force) { this.force = CHANGING; @@ -3541,7 +3497,6 @@ * @alias Proton.Repulsion */ var Repulsion = /*#__PURE__*/function (_Attraction) { - _inheritsLoose(Repulsion, _Attraction); /** * Creates a new Repulsion behaviour instance * @@ -3579,6 +3534,7 @@ * @param {number} [life=Infinity] - The new behaviour's life * @param {string} [easing='easeLinear'] - The new behaviour's easing function */ + _inheritsLoose(Repulsion, _Attraction); var _proto = Repulsion.prototype; _proto.reset = function reset(targetPosition, force, radius, life, easing) { _Attraction.prototype.reset.call(this, targetPosition, force, radius, life, easing); @@ -3588,7 +3544,6 @@ }(Attraction); var GravityWell = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(GravityWell, _Behaviour); /** * @memberof! Proton# * @augments Behaviour @@ -3624,6 +3579,7 @@ * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(GravityWell, _Behaviour); var _proto = GravityWell.prototype; _proto.reset = function reset(centerPoint, force, life, easing) { this.distanceVec = new Vector2D(); @@ -3690,7 +3646,6 @@ }; var Emitter = /*#__PURE__*/function (_Particle) { - _inheritsLoose(Emitter, _Particle); /** * You can use this emit particles. * @@ -3751,6 +3706,7 @@ * @param {Number | String} [totalTime] begin emit time; * @param {String | boolean} [life] the life of this emitter */ + _inheritsLoose(Emitter, _Particle); var _proto = Emitter.prototype; _proto.emit = function emit(totalTime, life) { this.stoped = false; @@ -3796,10 +3752,15 @@ * @method removeAllParticles */; _proto.removeAllParticles = function removeAllParticles() { - var i = this.particles.length; - while (i--) { - this.particles[i].dead = true; + var particles = this.particles; + var len = particles.length; + + // Just mark all as dead in a tight loop + for (var i = 0; i < len; i++) { + particles[i].dead = true; } + + // Don't actually remove from array here - that will happen in next integrate() call } /** @@ -3824,9 +3785,7 @@ rest[_key] = arguments[_key]; } var i = rest.length; - while (i--) { - this.initializes.push(rest[i]); - } + while (i--) this.initializes.push(rest[i]); } /** @@ -3893,7 +3852,10 @@ ; _proto.update = function update(time) { this.age += time; - if (this.age >= this.life || this.dead) this.destroy(); + if (this.age >= this.life || this.dead) { + this.destroy(); + return; + } this.emitting(time); this.integrate(time); }; @@ -3901,79 +3863,431 @@ if (!this.parent) return; var damping = 1 - this.damping; this.parent.integrator.calculate(this, time, damping); - var length = this.particles.length; - var i, particle; - for (i = length - 1; i >= 0; i--) { - particle = this.particles[i]; - // particle update + // Optimization for 500k particles: Use fast iteration with minimal GC impact + var particles = this.particles; + var length = particles.length; + var parent = this.parent; + var pool = parent.pool; + var integrator = parent.integrator; + var shouldDispatchUpdates = Boolean(this.parent || this.bindEvent); + + // Optimization: Use swap-and-pop method for removing dead particles + // This is much faster than splice for large arrays + var aliveCount = length; + var i = 0; + + // Single-pass particle update with efficient removal + while (i < aliveCount) { + var particle = particles[i]; + + // Fast update and check for dead particles particle.update(time, i); - this.parent.integrator.calculate(particle, time, damping); - this.dispatch("PARTICLE_UPDATE", particle); + integrator.calculate(particle, time, damping); + + // Dispatch update events only if needed and not too many particles + // Skip event dispatching for extremely large particle counts + if (shouldDispatchUpdates && length < 10000) { + this.dispatch("PARTICLE_UPDATE", particle); + } - // check dead + // Check if particle is dead if (particle.dead) { - this.dispatch("PARTICLE_DEAD", particle); - this.parent.pool.expire(particle); - this.particles.splice(i, 1); + // Dispatch death events only when needed and not too many particles + if (shouldDispatchUpdates && length < 10000) { + this.dispatch("PARTICLE_DEAD", particle); + } + + // Fast removal: swap with the last alive particle and decrement counter + // This avoids expensive array splicing + aliveCount--; + if (i < aliveCount) { + // Only swap if this isn't already the last particle + particles[i] = particles[aliveCount]; + particles[aliveCount] = particle; + + // Return to pool + pool.expire(particle); + continue; // Don't increment i, process the swapped particle + } else { + // Last particle case + pool.expire(particle); + } } + i++; + } + + // If we have dead particles at the end, remove them all at once + if (aliveCount < length) { + particles.length = aliveCount; // Truncate the array (much faster than multiple splices) } }; _proto.dispatch = function dispatch(event, target) { + // Optimize by skipping work if no listeners + if (!this.parent && !this.bindEvent) return; + + // For performance with many particles, only dispatch certain events + if (this.particles && this.particles.length > 50000) { + // With very large particle counts, only dispatch critical events + if (event !== "PARTICLE_CREATED" && event !== "PARTICLE_DEAD") { + return; + } + } this.parent && this.parent.dispatchEvent(event, target); this.bindEvent && this.dispatchEvent(event, target); }; _proto.emitting = function emitting(time) { if (this.stoped) return; - if (this.totalTime === "none") { - this.emitTime += time; - } else if (this.totalTime === "once") { - var i; - var length = this.rate.getValue(99999); - if (length > 0) this.emitSpeed = length; - for (i = 0; i < length; i++) { - this.createParticle(); + + // Maximum particles to emit in a single frame to prevent lag spikes + var MAX_EMIT_PER_FRAME = 10000; + + // Direct property access for performance + var emitTime = this.emitTime; + var totalTime = this.totalTime; + if (totalTime === "none") { + this.emitTime = emitTime + time; + return; + } + if (totalTime === "once") { + // Fast path for "once" emission + var numToEmit = this.rate.getValue(99999); + + // Cap emission count to prevent frame drops + if (numToEmit > MAX_EMIT_PER_FRAME) { + // Log warning only in development if trying to emit too many at once + if (process && process.env && process.env.NODE_ENV === 'development') { + console.warn("Attempting to emit " + numToEmit + " particles at once, capped to " + MAX_EMIT_PER_FRAME); + } + numToEmit = MAX_EMIT_PER_FRAME; } + if (numToEmit <= 0) return; + + // Cache emission speed and emit particles + this.emitSpeed = numToEmit; + + // Use the optimized method for bulk creation + this._fastCreateParticles(numToEmit); + + // Mark as completed this.totalTime = "none"; + return; + } + + // Regular emission logic - extreme optimization + emitTime += time; + this.emitTime = emitTime; + if (emitTime < totalTime) { + // Get particle count using rate + var _numToEmit = this.rate.getValue(time); + if (_numToEmit <= 0) return; + + // Cap emission to prevent lag spikes + if (_numToEmit > MAX_EMIT_PER_FRAME) { + _numToEmit = MAX_EMIT_PER_FRAME; + } + this.emitSpeed = _numToEmit; + + // Use fastest particle creation method + this._fastCreateParticles(_numToEmit); + } + } + + /** + * Ultra-fast particle creation - no optional parameters, minimal overhead + * @param {Number} count - Number of particles to create + * @private + */; + _proto._fastCreateParticles = function _fastCreateParticles(count) { + // Early exit for zero count + if (count <= 0 || !this.parent) return; + + // Direct property access - avoid repeated lookups + var parent = this.parent; + var pool = parent.pool; + var particlesArr = this.particles; + var initializes = this.initializes; + var behaviours = this.behaviours; + + // Emergency circuit breaker - prevent memory issues when too many particles + var MAX_SAFE_PARTICLES = 1000000; // 1 million particles max + if (particlesArr.length + count > MAX_SAFE_PARTICLES) { + count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length); + if (count <= 0) return; // Already at max capacity + } + + // Use faster bulk retrieval if available + var particles; + if (pool.getBulk) { + // Get multiple particles at once from pool + particles = pool.getBulk(Particle, count); + + // Fast-path batch initialization + this._initializeParticlesBulk(particles, initializes, behaviours); } else { - this.emitTime += time; - if (this.emitTime < this.totalTime) { - var _length = this.rate.getValue(time); - var _i; - if (_length > 0) this.emitSpeed = _length; - for (_i = 0; _i < _length; _i++) { - this.createParticle(); - } + // Fast path direct initialization - optimized for huge particle counts + this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours); + } + } + + /** + * High-speed loop for creating many particles + * @private + */; + _proto._createParticlesLoop = function _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) { + // Pre-calculate array growth to avoid resizing + particlesArr.length + count; + + // Handle array growth efficiently for large particle counts + if (particlesArr.length === 0 && count > 10000) { + try { + // Try to preallocate the array with correct capacity + particlesArr.length = count; + particlesArr.length = 0; // Reset but keep capacity + } catch (e) { + // Ignore if this optimization isn't supported + } + } + + // Cache values for dispatch check + var shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + var dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + + // Minimal particle creation loop - optimized for speed + var i = 0; + var particle; + + // Using while loop (faster than for loop in many JS engines) + while (i < count) { + // Get from pool + particle = pool.get(Particle); + + // Fastest possible reset + particle.reset(); + + // Direct initialize call with cached values + InitializeUtil.initialize(this, particle, initializes); + + // Add behaviors + particle.addBehaviours(behaviours); + particle.parent = this; + + // Push to array + particlesArr.push(particle); + + // Only dispatch if absolutely necessary + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); } + i++; } } /** - * create single particle; - * - * can use emit({x:10},new Gravity(10),{'particleUpdate',fun}) or emit([{x:10},new Initialize],new Gravity(10),{'particleUpdate',fun}) - * @method removeAllParticles + * Bulk initialization for particles - more efficient for large batches + * @private + */; + _proto._initializeParticlesBulk = function _initializeParticlesBulk(particles, initializes, behaviours) { + var count = particles.length; + var particlesArr = this.particles; + + // Cache values for dispatch check + var shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + var dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + + // One-time binding of this context for the loop + var emitter = this; + + // Bulk initialize particles + for (var i = 0; i < count; i++) { + var particle = particles[i]; + + // Initialize the particle directly + InitializeUtil.initialize(emitter, particle, initializes); + + // Set properties + particle.parent = emitter; + + // Add behaviors - use direct array if possible for better performance + particle.addBehaviours(behaviours); + + // Add to particles array + particlesArr.push(particle); + + // Only dispatch if necessary + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); + } + } + } + + /** + * High-performance batch particle creation for large quantities + * @param {Number} length - Number of particles to create + * @param {Object|Array} [initialize] - Initialization parameters + * @param {Object|Array} [behaviour] - Behavior parameters + */; + _proto.createParticlesBatch = function createParticlesBatch(length, initialize, behaviour) { + // Immediate redirect to fast creation when no custom initializers/behaviors + if (!initialize && !behaviour) { + this._fastCreateParticles(length); + return; + } + + // For huge batches, split into smaller chunks + var BATCH_SIZE = 5000; + if (length > BATCH_SIZE && length > 10000) { + // Process in chunks for very large particle counts + for (var i = 0; i < length; i += BATCH_SIZE) { + var chunkSize = Math.min(BATCH_SIZE, length - i); + this._createParticleChunk(chunkSize, initialize, behaviour); + } + } else { + // Process all at once for smaller batches + this._createParticleChunk(length, initialize, behaviour); + } + } + + /** + * Internal method to create a chunk of particles + * @private + */; + _proto._createParticleChunk = function _createParticleChunk(length, initialize, behaviour) { + // Early exit for zero particles + if (length <= 0) return; + + // Cache values for reuse + var parent = this.parent; + var pool = parent.pool; + var particlesArr = this.particles; + + // Check if we'd exceed max safe count + var MAX_SAFE_PARTICLES = 1000000; // 1 million particles max + if (particlesArr.length + length > MAX_SAFE_PARTICLES) { + length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length); + if (length <= 0) return; + } + + // Only calculate this once outside the loop + var shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + + // Handle initializes/behaviors + var initializes = initialize ? Util.toArray(initialize) : this.initializes; + var behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Pre-bind functions and cache properties for the loop + var dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + var emitter = this; + + // Pre-allocate capacity if possible + if (Array.prototype.reserve) { + var newCapacity = particlesArr.length + length; + if (particlesArr.capacity < newCapacity) { + particlesArr.reserve(newCapacity); + } + } + + // Creation loop - unrolled for performance + var i = 0; + var particle; + + // Fast loop with minimal overhead + while (i < length) { + particle = pool.get(Particle); + + // Fastest reset possible + particle.reset(); + + // Initialize using cached values + InitializeUtil.initialize(emitter, particle, initializes); + + // Add behaviors + particle.addBehaviours(behaviours); + particle.parent = emitter; + + // Add to particles array + particlesArr.push(particle); + + // Dispatch only if needed + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); + } + i++; + } + } + + /** + * Creates a single particle - now optimized for performance + * but batch methods should be preferred for multiple particles */; _proto.createParticle = function createParticle(initialize, behaviour) { + // Fast path when we have a parent + if (!this.parent) return null; var particle = this.parent.pool.get(Particle); - this.setupParticle(particle, initialize, behaviour); - this.dispatch("PARTICLE_CREATED", particle); + + // Direct setup + particle.reset(); + + // Handle initializes/behaviors + var initializes = initialize ? Util.toArray(initialize) : this.initializes; + var behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Initialize and add behaviors + InitializeUtil.initialize(this, particle, initializes); + particle.addBehaviours(behaviours); + particle.parent = this; + + // Add to array - directly push to avoid function call + this.particles.push(particle); + + // Only dispatch if needed and not too many particles + if ((this.parent || this.bindEvent) && this.particles.length < 10000) { + this.dispatch("PARTICLE_CREATED", particle); + } return particle; - }; + } + + /** + * Sets up a particle with initialization and behavior. + * @deprecated Use direct methods instead for better performance + */; _proto.setupParticle = function setupParticle(particle, initialize, behaviour) { - var initializes = this.initializes; - var behaviours = this.behaviours; - if (initialize) initializes = Util.toArray(initialize); - if (behaviour) behaviours = Util.toArray(behaviour); + // Direct setup particle.reset(); + + // Handle initializes/behaviors + var initializes = initialize ? Util.toArray(initialize) : this.initializes; + var behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Initialize InitializeUtil.initialize(this, particle, initializes); particle.addBehaviours(behaviours); particle.parent = this; + + // Add to array this.particles.push(particle); - }; + } + + /** + * Removes all particles and stops the emitter. + */; _proto.remove = function remove() { this.stop(); - Util.destroyAll(this.particles); + + // More efficient particle cleanup + var particles = this.particles; + var len = particles.length; + + // Return all particles to pool + if (this.parent && this.parent.pool) { + var pool = this.parent.pool; + for (var i = 0; i < len; i++) { + pool.expire(particles[i]); + } + } + + // Clear array in one operation + particles.length = 0; } /** @@ -3998,7 +4312,6 @@ EventDispatcher.bind(Emitter); var BehaviourEmitter = /*#__PURE__*/function (_Emitter) { - _inheritsLoose(BehaviourEmitter, _Emitter); /** * The BehaviourEmitter class inherits from Proton.Emitter * @@ -4021,6 +4334,7 @@ * @method addSelfBehaviour * @param {Proton.Behaviour} behaviour like this new Proton.Color('random') */ + _inheritsLoose(BehaviourEmitter, _Emitter); var _proto = BehaviourEmitter.prototype; _proto.addSelfBehaviour = function addSelfBehaviour() { for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) { @@ -4058,7 +4372,6 @@ }(Emitter); var FollowEmitter = /*#__PURE__*/function (_Emitter) { - _inheritsLoose(FollowEmitter, _Emitter); /** * The FollowEmitter class inherits from Proton.Emitter * @@ -4080,6 +4393,7 @@ _this.initEventHandler(); return _this; } + _inheritsLoose(FollowEmitter, _Emitter); var _proto = FollowEmitter.prototype; _proto.initEventHandler = function initEventHandler() { var _this2 = this; @@ -4250,26 +4564,6 @@ * @extends BaseRenderer */ var CanvasRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(CanvasRenderer, _BaseRenderer); - /** - * @type {object|null} - * @private - */ - - /** - * @type {CanvasRenderingContext2D} - * @private - */ - - /** - * @type {object} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new CanvasRenderer instance. * @param {HTMLCanvasElement} element - The canvas element to render on. @@ -4277,9 +4571,24 @@ function CanvasRenderer(element) { var _this; _this = _BaseRenderer.call(this, element) || this; + /** + * @type {object|null} + * @private + */ _this.stroke = void 0; + /** + * @type {CanvasRenderingContext2D} + * @private + */ _this.context = void 0; + /** + * @type {object} + * @private + */ _this.bufferCache = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.stroke = null; _this.context = _this.element.getContext("2d"); @@ -4293,6 +4602,7 @@ * @param {number} width - The new width of the canvas. * @param {number} height - The new height of the canvas. */ + _inheritsLoose(CanvasRenderer, _BaseRenderer); var _proto = CanvasRenderer.prototype; _proto.resize = function resize(width, height) { this.element.width = width; @@ -4443,7 +4753,6 @@ * @extends BaseRenderer */ var DomRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(DomRenderer, _BaseRenderer); /** * Creates a new DomRenderer instance. * @param {HTMLElement} element - The HTML element to render to. @@ -4456,10 +4765,11 @@ _this.pool.create = function (body, particle) { return _this.createBody(body, particle); }; - _this.addImg2Body = _this.addImg2Body.bind(_assertThisInitialized(_this)); + _this.addImg2Body = _this.addImg2Body.bind(_this); _this.name = "DomRenderer"; return _this; } + _inheritsLoose(DomRenderer, _BaseRenderer); var _proto = DomRenderer.prototype; _proto.onParticleCreated = function onParticleCreated(particle) { if (particle.body) { @@ -4536,7 +4846,6 @@ }(BaseRenderer); var EaselRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(EaselRenderer, _BaseRenderer); function EaselRenderer(element, stroke) { var _this; _this = _BaseRenderer.call(this, element) || this; @@ -4544,6 +4853,7 @@ _this.name = "EaselRenderer"; return _this; } + _inheritsLoose(EaselRenderer, _BaseRenderer); var _proto = EaselRenderer.prototype; _proto.onParticleCreated = function onParticleCreated(particle) { if (particle.body) { @@ -4607,7 +4917,6 @@ * @extends BaseRenderer */ var PixelRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(PixelRenderer, _BaseRenderer); /** * Creates a new PixelRenderer instance. * @param {HTMLCanvasElement} element - The canvas element to render to. @@ -4623,6 +4932,7 @@ _this.name = "PixelRenderer"; return _this; } + _inheritsLoose(PixelRenderer, _BaseRenderer); var _proto = PixelRenderer.prototype; _proto.resize = function resize(width, height) { this.element.width = width; @@ -4672,61 +4982,169 @@ var PIXIClass; + // Counter to generate unique IDs for each renderer instance + var rendererIdCounter = 0; + + /** + * A specialized pool that ensures particles are never shared between different emitters + */ + var EmitterAwarePool = /*#__PURE__*/function (_Pool) { + function EmitterAwarePool() { + var _this; + _this = _Pool.call(this) || this; + // Store pools by emitter ID to ensure separation + _this.emitterPools = new Map(); + return _this; + } + + /** + * Get an item from the pool, ensuring it's specific to the emitter + */ + _inheritsLoose(EmitterAwarePool, _Pool); + var _proto = EmitterAwarePool.prototype; + _proto.get = function get(target, params, emitterId) { + // Ensure we have a valid emitter ID + emitterId = emitterId || params && params.parent && params.parent.id || 'default'; + + // Get or create the emitter-specific pool + if (!this.emitterPools.has(emitterId)) { + this.emitterPools.set(emitterId, []); + } + var emitterPool = this.emitterPools.get(emitterId); + + // Get from the emitter-specific pool or create new + var p; + if (emitterPool.length > 0) { + p = emitterPool.pop(); + } else { + p = this.createOrClone(target, params); + // Tag with emitter ID for tracking + p.__emitterId = emitterId; + } + return p; + } + + /** + * Return an item to its emitter-specific pool + */; + _proto.expire = function expire(target, emitterId) { + if (!emitterId && target.__emitterId) { + emitterId = target.__emitterId; + } + + // Default to the general pool if no emitter ID is found + emitterId = emitterId || 'default'; + + // Get or create the emitter-specific pool + if (!this.emitterPools.has(emitterId)) { + this.emitterPools.set(emitterId, []); + } + + // Return to the emitter-specific pool + return this.emitterPools.get(emitterId).push(target); + } + + /** + * Clean up all pools + */; + _proto.destroy = function destroy() { + _Pool.prototype.destroy.call(this); + + // Clear all emitter-specific pools + this.emitterPools.forEach(function (pool) { + pool.length = 0; + }); + this.emitterPools.clear(); + this.emitterPools = null; + }; + return EmitterAwarePool; + }(Pool); /** * Represents a PIXI-based renderer for particle systems. * @extends BaseRenderer */ var PixiRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(PixiRenderer, _BaseRenderer); /** * Creates a new PixiRenderer instance. * @param {PIXI.Container} element - The PIXI container to render to. * @param {string|number} [stroke] - The stroke color for particles. */ function PixiRenderer(element, stroke) { - var _this; - _this = _BaseRenderer.call(this, element) || this; - _this.stroke = stroke; - _this.color = false; - _this.setColor = false; - _this.blendMode = null; - _this.pool.create = function (body, particle) { - return _this.createBody(body, particle); + var _this2; + _this2 = _BaseRenderer.call(this, element) || this; + _this2.stroke = stroke; + _this2.color = false; + _this2.setColor = false; + _this2.blendMode = null; + + // Assign a unique ID to this renderer instance + _this2.rendererId = ++rendererIdCounter; + + // Create a new emitter-aware pool for this renderer + _this2.pixiPool = new EmitterAwarePool(); + _this2.pixiPool.create = function (body, particle) { + return _this2.createBody(body, particle); }; - _this.setPIXI(window.PIXI); - _this.name = "PixiRenderer"; - return _this; + + // Track emitters and their particles + _this2.emitterMap = new Map(); + _this2.setPIXI(window.PIXI); + _this2.name = "PixiRenderer"; + return _this2; } - var _proto = PixiRenderer.prototype; - _proto.setPIXI = function setPIXI(PIXI) { + _inheritsLoose(PixiRenderer, _BaseRenderer); + var _proto2 = PixiRenderer.prototype; + _proto2.setPIXI = function setPIXI(PIXI) { try { PIXIClass = PIXI || { Sprite: {} }; - this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage; + this.createFromImage = PIXIClass.Sprite.from; } catch (e) {} }; - _proto.onProtonUpdate = function onProtonUpdate() {} + _proto2.onProtonUpdate = function onProtonUpdate() {}; + _proto2.onEmitterAdded = function onEmitterAdded(emitter) { + // Add emitter to tracking map + if (!this.emitterMap.has(emitter.id)) { + this.emitterMap.set(emitter.id, new Set()); + } + }; + _proto2.onEmitterRemoved = function onEmitterRemoved(emitter) { + // Clean up emitter's tracked particles + if (this.emitterMap.has(emitter.id)) { + this.emitterMap.delete(emitter.id); + } + } /** * @param particle */; - _proto.onParticleCreated = function onParticleCreated(particle) { + _proto2.onParticleCreated = function onParticleCreated(particle) { + // Get the emitter ID for this particle and store it directly on the particle + var emitterId = particle.parent ? particle.parent.id : 'orphaned'; + + // Store emitter ID directly on the particle for when parent reference is lost + particle.__emitterId = emitterId; if (particle.body) { - particle.body = this.pool.get(particle.body, particle); + particle.body = this.pixiPool.get(particle.body, particle, emitterId); } else { - particle.body = this.pool.get(this.circleConf, particle); + particle.body = this.pixiPool.get(this.circleConf, particle, emitterId); } if (this.blendMode) { particle.body.blendMode = this.blendMode; } + + // Track this particle with its emitter + if (this.emitterMap.has(emitterId)) { + this.emitterMap.get(emitterId).add(particle); + } this.element.addChild(particle.body); } /** * @param particle */; - _proto.onParticleUpdate = function onParticleUpdate(particle) { + _proto2.onParticleUpdate = function onParticleUpdate(particle) { this.transform(particle, particle.body); if (this.setColor === true || this.color === true) { particle.body.tint = ColorUtil.getHex16FromParticle(particle); @@ -4736,35 +5154,43 @@ /** * @param particle */; - _proto.onParticleDead = function onParticleDead(particle) { + _proto2.onParticleDead = function onParticleDead(particle) { + if (!particle.body) return; this.element.removeChild(particle.body); - this.pool.expire(particle.body); + + // Use the cached emitter ID instead of accessing parent which might be null + var emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned'); + + // Return to the emitter-specific pool + this.pixiPool.expire(particle.body, emitterId); + + // Remove from tracked particles + if (this.emitterMap.has(emitterId)) { + this.emitterMap.get(emitterId).delete(particle); + } particle.body = null; }; - _proto.transform = function transform(particle, target) { + _proto2.transform = function transform(particle, target) { target.x = particle.p.x; target.y = particle.p.y; target.alpha = particle.alpha; target.scale.x = particle.scale; target.scale.y = particle.scale; - - // using cached version of MathUtil.PI_180 for slight performance increase. - target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180; + target.rotation = particle.rotation * MathUtil.PI_180; }; - _proto.createBody = function createBody(body, particle) { + _proto2.createBody = function createBody(body, particle) { if (body.isCircle) return this.createCircle(particle);else return this.createSprite(body); }; - _proto.createSprite = function createSprite(body) { + _proto2.createSprite = function createSprite(body) { var sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body); - sprite.anchor.x = 0.5; - sprite.anchor.y = 0.5; + sprite.anchor.set(0.5, 0.5); return sprite; }; - _proto.createCircle = function createCircle(particle) { + _proto2.createCircle = function createCircle(particle) { var graphics = new PIXIClass.Graphics(); if (this.stroke) { var stroke = Types.isString(this.stroke) ? this.stroke : 0x000000; - graphics.beginStroke(stroke); + graphics.lineStyle(1, stroke); } graphics.beginFill(particle.color || 0x008ced); graphics.drawCircle(0, 0, particle.radius); @@ -4776,13 +5202,24 @@ * Destroys the renderer and cleans up resources. * @param {Array} particles - The particles to clean up. */; - _proto.destroy = function destroy(particles) { + _proto2.destroy = function destroy(particles) { _BaseRenderer.prototype.destroy.call(this); + + // Clean up tracking maps + this.emitterMap.clear(); + this.emitterMap = null; + + // Clean up the instance-specific particle pool + this.pixiPool.destroy(); + this.pixiPool = null; var i = particles.length; while (i--) { var particle = particles[i]; if (particle.body) { this.element.removeChild(particle.body); + particle.body.destroy({ + children: true + }); } } }; @@ -4793,9 +5230,7 @@ function MStack() { this.mats = []; this.size = 0; - for (var i = 0; i < 20; i++) { - this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0])); - } + for (var i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0])); } var _proto = MStack.prototype; _proto.set = function set(m, i) { @@ -4820,7 +5255,6 @@ * @extends BaseRenderer */ var WebGLRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(WebGLRenderer, _BaseRenderer); /** * Creates a new WebGLRenderer instance. * @param {HTMLCanvasElement} element - The canvas element to render to. @@ -4841,10 +5275,11 @@ _this.gl.blendEquation(_this.gl.FUNC_ADD); _this.gl.blendFunc(_this.gl.SRC_ALPHA, _this.gl.ONE_MINUS_SRC_ALPHA); _this.gl.enable(_this.gl.BLEND); - _this.addImg2Body = _this.addImg2Body.bind(_assertThisInitialized(_this)); + _this.addImg2Body = _this.addImg2Body.bind(_this); _this.name = "WebGLRenderer"; return _this; } + _inheritsLoose(WebGLRenderer, _BaseRenderer); var _proto = WebGLRenderer.prototype; _proto.init = function init(proton) { _BaseRenderer.prototype.init.call(this, proton); @@ -4921,17 +5356,13 @@ this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW); var i; var ids = []; - for (i = 0; i < 100; i++) { - ids.push(i); - } + for (i = 0; i < 100; i++) ids.push(i); idx = new Uint16Array(ids); this.unitI33 = this.gl.createBuffer(); this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33); this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW); ids = []; - for (i = 0; i < 100; i++) { - ids.push(i, i + 1, i + 2); - } + for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2); idx = new Uint16Array(ids); this.stripBuffer = this.gl.createBuffer(); this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer); @@ -5049,7 +5480,6 @@ * @extends BaseRenderer */ var CustomRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(CustomRenderer, _BaseRenderer); /** * Creates a new CustomRenderer instance. * @param {HTMLElement} element - The HTML element to render to. @@ -5065,6 +5495,7 @@ _this.name = "CustomRenderer"; return _this; } + _inheritsLoose(CustomRenderer, _BaseRenderer); return CustomRenderer; }(BaseRenderer); @@ -5073,7 +5504,6 @@ * @extends Zone */ var LineZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(LineZone, _Zone); /** * Creates a new LineZone. * @param {number} x1 - The x-coordinate of the first point. @@ -5117,6 +5547,7 @@ * Gets a random position on the line. * @returns {Vector2D} A vector representing the random position. */ + _inheritsLoose(LineZone, _Zone); var _proto = LineZone.prototype; _proto.getPosition = function getPosition() { this.random = Math.random(); @@ -5239,7 +5670,6 @@ * @extends Zone */ var CircleZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(CircleZone, _Zone); /** * Creates a new CircleZone. * @param {number} x - The x-coordinate of the circle's center. @@ -5264,6 +5694,7 @@ * Gets a random position within the circle. * @returns {Object} An object with x and y coordinates. */ + _inheritsLoose(CircleZone, _Zone); var _proto = CircleZone.prototype; _proto.getPosition = function getPosition() { this.angle = MathUtil.PIx2 * Math.random(); @@ -5331,7 +5762,6 @@ * @extends Zone */ var RectZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(RectZone, _Zone); /** * Creates a new RectZone. * @param {number} x - The x-coordinate of the top-left corner of the rectangle. @@ -5359,6 +5789,7 @@ * Gets a random position within the rectangular zone. * @returns {Vector2D} A vector representing the random position. */ + _inheritsLoose(RectZone, _Zone); var _proto = RectZone.prototype; _proto.getPosition = function getPosition() { this.vector.x = this.x + Math.random() * this.width; @@ -5417,7 +5848,6 @@ * @extends Zone */ var ImageZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(ImageZone, _Zone); /** * Creates an ImageZone. * @param {ImageData} imageData - The image data to use for the zone. @@ -5439,6 +5869,7 @@ * @param {number} [y=0] - The y-coordinate offset. * @param {number} [d=2] - The sampling density. */ + _inheritsLoose(ImageZone, _Zone); var _proto = ImageZone.prototype; _proto.reset = function reset(imageData, x, y, d) { this.imageData = imageData; @@ -5705,4 +6136,4 @@ Object.defineProperty(exports, '__esModule', { value: true }); })); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9uLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvV2ViR0xVdGlsLmpzIiwiLi4vc3JjL3V0aWxzL0RvbVV0aWwuanMiLCIuLi9zcmMvdXRpbHMvSW1nVXRpbC5qcyIsIi4uL3NyYy91dGlscy9VdGlsLmpzIiwiLi4vc3JjL3V0aWxzL1B1aWQuanMiLCIuLi9zcmMvY29yZS9Qb29sLmpzIiwiLi4vc3JjL2RlYnVnL1N0YXRzLmpzIiwiLi4vc3JjL2V2ZW50cy9FdmVudERpc3BhdGNoZXIuanMiLCIuLi9zcmMvbWF0aC9NYXRoVXRpbC5qcyIsIi4uL3NyYy9tYXRoL0ludGVncmF0aW9uLmpzIiwiLi4vc3JjL2NvcmUvUHJvdG9uLmpzIiwiLi4vc3JjL3V0aWxzL1JnYi5qcyIsIi4uL3NyYy9tYXRoL1NwYW4uanMiLCIuLi9zcmMvdXRpbHMvUHJvcFV0aWwuanMiLCIuLi9zcmMvbWF0aC9lYXNlLmpzIiwiLi4vc3JjL21hdGgvVmVjdG9yMkQuanMiLCIuLi9zcmMvY29yZS9QYXJ0aWNsZS5qcyIsIi4uL3NyYy91dGlscy9Db2xvclV0aWwuanMiLCIuLi9zcmMvbWF0aC9Qb2xhcjJELmpzIiwiLi4vc3JjL21hdGgvTWF0My5qcyIsIi4uL3NyYy9tYXRoL0FycmF5U3Bhbi5qcyIsIi4uL3NyYy9tYXRoL1JlY3RhbmdsZS5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1JhdGUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Jbml0aWFsaXplLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvTGlmZS5qcyIsIi4uL3NyYy96b25lL1pvbmUuanMiLCIuLi9zcmMvem9uZS9Qb2ludFpvbmUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Qb3NpdGlvbi5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1ZlbG9jaXR5LmpzIiwiLi4vc3JjL2luaXRpYWxpemUvTWFzcy5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1JhZGl1cy5qcyIsIi4uL3NyYy9pbml0aWFsaXplL0JvZHkuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0JlaGF2aW91ci5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvRm9yY2UuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0F0dHJhY3Rpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL1JhbmRvbURyaWZ0LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9HcmF2aXR5LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Db2xsaXNpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL0Nyb3NzWm9uZS5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvQWxwaGEuanMiLCIuLi9zcmMvYmVoYXZpb3VyL1NjYWxlLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Sb3RhdGUuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0NvbG9yLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9DeWNsb25lLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9SZXB1bHNpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL0dyYXZpdHlXZWxsLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvSW5pdGlhbGl6ZVV0aWwuanMiLCIuLi9zcmMvZW1pdHRlci9FbWl0dGVyLmpzIiwiLi4vc3JjL2VtaXR0ZXIvQmVoYXZpb3VyRW1pdHRlci5qcyIsIi4uL3NyYy9lbWl0dGVyL0ZvbGxvd0VtaXR0ZXIuanMiLCIuLi9zcmMvdXRpbHMvVHlwZXMuanMiLCIuLi9zcmMvcmVuZGVyL0Jhc2VSZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvQ2FudmFzUmVuZGVyZXIuanMiLCIuLi9zcmMvcmVuZGVyL0RvbVJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9FYXNlbFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9QaXhlbFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9QaXhpUmVuZGVyZXIuanMiLCIuLi9zcmMvdXRpbHMvTVN0YWNrLmpzIiwiLi4vc3JjL3JlbmRlci9XZWJHTFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9DdXN0b21SZW5kZXJlci5qcyIsIi4uL3NyYy96b25lL0xpbmVab25lLmpzIiwiLi4vc3JjL3pvbmUvQ2lyY2xlWm9uZS5qcyIsIi4uL3NyYy96b25lL1JlY3Rab25lLmpzIiwiLi4vc3JjL3pvbmUvSW1hZ2Vab25lLmpzIiwiLi4vc3JjL2RlYnVnL0RlYnVnLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIGlwb3RcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCBsZW5ndGggZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGxlbmd0aFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgaXBvdChsZW5ndGgpIHtcbiAgICByZXR1cm4gKGxlbmd0aCAmIChsZW5ndGggLSAxKSkgPT09IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIG5ocG90XG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgbGVuZ3RoIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBsZW5ndGhcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgbmhwb3QobGVuZ3RoKSB7XG4gICAgLS1sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzMjsgaSA8PD0gMSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgKGxlbmd0aCA+PiBpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVuZ3RoICsgMTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVRyYW5zbGF0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgdHgsIHR5IGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCByZXR1cm4gZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHR4IGVpdGhlciAwIG9yIDFcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHR5IGVpdGhlciAwIG9yIDFcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgbWFrZVRyYW5zbGF0aW9uKHR4LCB0eSkge1xuICAgIHJldHVybiBbMSwgMCwgMCwgMCwgMSwgMCwgdHgsIHR5LCAxXTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVJvdGF0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgcmV0dXJuIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZUluUmFkaWFuc1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYWtlUm90YXRpb24oYW5nbGVJblJhZGlhbnMpIHtcbiAgICBsZXQgYyA9IE1hdGguY29zKGFuZ2xlSW5SYWRpYW5zKTtcbiAgICBsZXQgcyA9IE1hdGguc2luKGFuZ2xlSW5SYWRpYW5zKTtcblxuICAgIHJldHVybiBbYywgLXMsIDAsIHMsIGMsIDAsIDAsIDAsIDFdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBtYWtlU2NhbGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCB0eCwgdHkgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gc3ggZWl0aGVyIDAgb3IgMVxuICAgKiBAcGFyYW0ge051bWJlcn0gc3kgZWl0aGVyIDAgb3IgMVxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYWtlU2NhbGUoc3gsIHN5KSB7XG4gICAgcmV0dXJuIFtzeCwgMCwgMCwgMCwgc3ksIDAsIDAsIDAsIDFdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBtYXRyaXhNdWx0aXBseVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIGEsIGIgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gYVxuICAgKiBAcGFyYW0ge09iamVjdH0gYlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYXRyaXhNdWx0aXBseShhLCBiKSB7XG4gICAgbGV0IGEwMCA9IGFbMCAqIDMgKyAwXTtcbiAgICBsZXQgYTAxID0gYVswICogMyArIDFdO1xuICAgIGxldCBhMDIgPSBhWzAgKiAzICsgMl07XG4gICAgbGV0IGExMCA9IGFbMSAqIDMgKyAwXTtcbiAgICBsZXQgYTExID0gYVsxICogMyArIDFdO1xuICAgIGxldCBhMTIgPSBhWzEgKiAzICsgMl07XG4gICAgbGV0IGEyMCA9IGFbMiAqIDMgKyAwXTtcbiAgICBsZXQgYTIxID0gYVsyICogMyArIDFdO1xuICAgIGxldCBhMjIgPSBhWzIgKiAzICsgMl07XG4gICAgbGV0IGIwMCA9IGJbMCAqIDMgKyAwXTtcbiAgICBsZXQgYjAxID0gYlswICogMyArIDFdO1xuICAgIGxldCBiMDIgPSBiWzAgKiAzICsgMl07XG4gICAgbGV0IGIxMCA9IGJbMSAqIDMgKyAwXTtcbiAgICBsZXQgYjExID0gYlsxICogMyArIDFdO1xuICAgIGxldCBiMTIgPSBiWzEgKiAzICsgMl07XG4gICAgbGV0IGIyMCA9IGJbMiAqIDMgKyAwXTtcbiAgICBsZXQgYjIxID0gYlsyICogMyArIDFdO1xuICAgIGxldCBiMjIgPSBiWzIgKiAzICsgMl07XG5cbiAgICByZXR1cm4gW1xuICAgICAgYTAwICogYjAwICsgYTAxICogYjEwICsgYTAyICogYjIwLFxuICAgICAgYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxLFxuICAgICAgYTAwICogYjAyICsgYTAxICogYjEyICsgYTAyICogYjIyLFxuICAgICAgYTEwICogYjAwICsgYTExICogYjEwICsgYTEyICogYjIwLFxuICAgICAgYTEwICogYjAxICsgYTExICogYjExICsgYTEyICogYjIxLFxuICAgICAgYTEwICogYjAyICsgYTExICogYjEyICsgYTEyICogYjIyLFxuICAgICAgYTIwICogYjAwICsgYTIxICogYjEwICsgYTIyICogYjIwLFxuICAgICAgYTIwICogYjAxICsgYTIxICogYjExICsgYTIyICogYjIxLFxuICAgICAgYTIwICogYjAyICsgYTIxICogYjEyICsgYTIyICogYjIyXG4gICAgXTtcbiAgfVxufTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgY2FudmFzLiBUaGUgb3BhY2l0eSBpcyBieSBkZWZhdWx0IHNldCB0byAwXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkRvbVV0aWxcbiAgICogQG1ldGhvZCBjcmVhdGVDYW52YXNcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9ICRpZCB0aGUgY2FudmFzJyBpZFxuICAgKiBAcGFyYW0ge051bWJlcn0gJHdpZHRoIHRoZSBjYW52YXMnIHdpZHRoXG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IHRoZSBjYW52YXMnIGhlaWdodFxuICAgKiBAcGFyYW0ge1N0cmluZ30gWyRwb3NpdGlvbj1hYnNvbHV0ZV0gdGhlIGNhbnZhcycgcG9zaXRpb24sIGRlZmF1bHQgaXMgJ2Fic29sdXRlJ1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBjcmVhdGVDYW52YXMoaWQsIHdpZHRoLCBoZWlnaHQsIHBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcblxuICAgIGRvbS5pZCA9IGlkO1xuICAgIGRvbS53aWR0aCA9IHdpZHRoO1xuICAgIGRvbS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgZG9tLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGRvbS5zdHlsZS5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMudHJhbnNmb3JtKGRvbSwgLTUwMCwgLTUwMCwgMCwgMCk7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9LFxuXG4gIGNyZWF0ZURpdihpZCwgd2lkdGgsIGhlaWdodCkge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICBkb20uaWQgPSBpZDtcbiAgICBkb20uc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgdGhpcy5yZXNpemUoZG9tLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIHJldHVybiBkb207XG4gIH0sXG5cbiAgcmVzaXplKGRvbSwgd2lkdGgsIGhlaWdodCkge1xuICAgIGRvbS5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcInB4XCI7XG4gICAgZG9tLnN0eWxlLm1hcmdpbkxlZnQgPSAtd2lkdGggLyAyICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5tYXJnaW5Ub3AgPSAtaGVpZ2h0IC8gMiArIFwicHhcIjtcbiAgfSxcblxuICAvKipcbiAgICogQWRkcyBhIHRyYW5zZm9ybTogdHJhbnNsYXRlKCksIHNjYWxlKCksIHJvdGF0ZSgpIHRvIGEgZ2l2ZW4gZGl2IGRvbSBmb3IgYWxsIGJyb3dzZXJzXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkRvbVV0aWxcbiAgICogQG1ldGhvZCB0cmFuc2Zvcm1cbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRGl2RWxlbWVudH0gZGl2XG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkeFxuICAgKiBAcGFyYW0ge051bWJlcn0gJHlcbiAgICogQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gJHJvdGF0ZVxuICAgKi9cbiAgdHJhbnNmb3JtKGRpdiwgeCwgeSwgc2NhbGUsIHJvdGF0ZSkge1xuICAgIGRpdi5zdHlsZS53aWxsQ2hhbmdlID0gXCJ0cmFuc2Zvcm1cIjtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KSBzY2FsZSgke3NjYWxlfSkgcm90YXRlKCR7cm90YXRlfWRlZylgO1xuICAgIHRoaXMuY3NzMyhkaXYsIFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XG4gIH0sXG5cbiAgdHJhbnNmb3JtM2QoZGl2LCB4LCB5LCBzY2FsZSwgcm90YXRlKSB7XG4gICAgZGl2LnN0eWxlLndpbGxDaGFuZ2UgPSBcInRyYW5zZm9ybVwiO1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3h9cHgsICR7eX1weCwgMCkgc2NhbGUoJHtzY2FsZX0pIHJvdGF0ZSgke3JvdGF0ZX1kZWcpYDtcbiAgICB0aGlzLmNzczMoZGl2LCBcImJhY2tmYWNlVmlzaWJpbGl0eVwiLCBcImhpZGRlblwiKTtcbiAgICB0aGlzLmNzczMoZGl2LCBcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xuICB9LFxuXG4gIGNzczMoZGl2LCBrZXksIHZhbCkge1xuICAgIGNvbnN0IGJrZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xuXG4gICAgZGl2LnN0eWxlW2BXZWJraXQke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2BNb3oke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2BPJHtia2V5fWBdID0gdmFsO1xuICAgIGRpdi5zdHlsZVtgbXMke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2Ake2tleX1gXSA9IHZhbDtcbiAgfVxufTtcbiIsImltcG9ydCBXZWJHTFV0aWwgZnJvbSBcIi4vV2ViR0xVdGlsXCI7XG5pbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi9Eb21VdGlsXCI7XG5cbmNvbnN0IGltZ3NDYWNoZSA9IHt9O1xuY29uc3QgY2FudmFzQ2FjaGUgPSB7fTtcbmxldCBjYW52YXNJZCA9IDA7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgdGhlIGltYWdlIGRhdGEuIEl0IGNvdWxkIGJlIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBQcm90b24uWm9uZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltYWdlRGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSAgIGNvbnRleHQgYW55IGNhbnZhcywgbXVzdCBiZSBhIDJkQ29udGV4dCAnY2FudmFzLmdldENvbnRleHQoJzJkJyknXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAgICAgICAgICAgICAgaW1hZ2UgICBjb3VsZCBiZSBhbnkgZG9tIGltYWdlLCBlLmcuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGlzSXNBbkltZ1RhZycpO1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5SZWN0YW5nbGV9ICAgIHJlY3RcbiAgICovXG4gIGdldEltYWdlRGF0YShjb250ZXh0LCBpbWFnZSwgcmVjdCkge1xuICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCByZWN0LngsIHJlY3QueSk7XG4gICAgY29uc3QgaW1hZ2VkYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcbiAgICBjb250ZXh0LmNsZWFyUmVjdChyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuXG4gICAgcmV0dXJuIGltYWdlZGF0YTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltZ0Zyb21DYWNoZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gZGVzY3JpYmUgZnVuY1xuICAgKlxuICAgKiBAcGFyYW0ge01peGVkfSAgICAgICAgICAgICAgIGltZ1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gICAgIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gICAgICAgICAgICAgZHJhd0NhbnZhcyAgc2V0IHRvIHRydWUgaWYgYSBjYW52YXMgc2hvdWxkIGJlIHNhdmVkIGludG8gcGFydGljbGUuZGF0YS5jYW52YXNcbiAgICogQHBhcmFtIHtCb29sZWFufSAgICAgICAgICAgICBmdW5jXG4gICAqL1xuICBnZXRJbWdGcm9tQ2FjaGUoaW1nLCBjYWxsYmFjaywgcGFyYW0pIHtcbiAgICBjb25zdCBzcmMgPSB0eXBlb2YgaW1nID09PSBcInN0cmluZ1wiID8gaW1nIDogaW1nLnNyYztcblxuICAgIGlmIChpbWdzQ2FjaGVbc3JjXSkge1xuICAgICAgY2FsbGJhY2soaW1nc0NhY2hlW3NyY10sIHBhcmFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltYWdlLm9ubG9hZCA9IGUgPT4ge1xuICAgICAgICBpbWdzQ2FjaGVbc3JjXSA9IGUudGFyZ2V0O1xuICAgICAgICBjYWxsYmFjayhpbWdzQ2FjaGVbc3JjXSwgcGFyYW0pO1xuICAgICAgfTtcblxuICAgICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgIH1cbiAgfSxcblxuICBnZXRDYW52YXNGcm9tQ2FjaGUoaW1nLCBjYWxsYmFjaywgcGFyYW0pIHtcbiAgICBjb25zdCBzcmMgPSBpbWcuc3JjO1xuXG4gICAgaWYgKCFjYW52YXNDYWNoZVtzcmNdKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IFdlYkdMVXRpbC5uaHBvdChpbWcud2lkdGgpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gV2ViR0xVdGlsLm5ocG90KGltZy5oZWlnaHQpO1xuXG4gICAgICBjb25zdCBjYW52YXMgPSBEb21VdGlsLmNyZWF0ZUNhbnZhcyhgcHJvdG9uX2NhbnZhc19jYWNoZV8keysrY2FudmFzSWR9YCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgMCwgMCwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcblxuICAgICAgY2FudmFzQ2FjaGVbc3JjXSA9IGNhbnZhcztcbiAgICB9XG5cbiAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhjYW52YXNDYWNoZVtzcmNdLCBwYXJhbSk7XG5cbiAgICByZXR1cm4gY2FudmFzQ2FjaGVbc3JjXTtcbiAgfVxufTtcbiIsImltcG9ydCBJbWdVdGlsIGZyb20gXCIuL0ltZ1V0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGluaXRWYWx1ZVxuICAgKlxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZSBhIHNwZWNpZmljIHZhbHVlLCBjb3VsZCBiZSBldmVyeXRoaW5nIGJ1dCBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcGFyYW0ge01peGVkfSBkZWZhdWx0cyB0aGUgZGVmYXVsdCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIGluaXRWYWx1ZSh2YWx1ZSwgZGVmYXVsdHMpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRzO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBpc0FycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlIEFueSBhcnJheVxuICAgKlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICovXG4gIGlzQXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXN0cm95ZXMgdGhlIGdpdmVuIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBlbXB0eUFycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IEFueSBhcnJheVxuICAgKi9cbiAgZW1wdHlBcnJheShhcnIpIHtcbiAgICBpZiAoYXJyKSBhcnIubGVuZ3RoID0gMDtcbiAgfSxcblxuICB0b0FycmF5KGFycikge1xuICAgIHJldHVybiB0aGlzLmlzQXJyYXkoYXJyKSA/IGFyciA6IFthcnJdO1xuICB9LFxuXG4gIHNsaWNlQXJyYXkoYXJyMSwgaW5kZXgsIGFycjIpIHtcbiAgICB0aGlzLmVtcHR5QXJyYXkoYXJyMik7XG4gICAgZm9yIChsZXQgaSA9IGluZGV4OyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMi5wdXNoKGFycjFbaV0pO1xuICAgIH1cbiAgfSxcblxuICBnZXRSYW5kRnJvbUFycmF5KGFycikge1xuICAgIGlmICghYXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYXJyW01hdGguZmxvb3IoYXJyLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpXTtcbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveWVzIHRoZSBnaXZlbiBvYmplY3RcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGVtcHR5T2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogQW55IG9iamVjdFxuICAgKi9cbiAgZW1wdHlPYmplY3Qob2JqLCBpZ25vcmUgPSBudWxsKSB7XG4gICAgZm9yIChsZXQga2V5IGluIG9iaikge1xuICAgICAgaWYgKGlnbm9yZSAmJiBpZ25vcmUuaW5kZXhPZihrZXkpID4gLTEpIGNvbnRpbnVlO1xuICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogTWFrZXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBhbmQgYmluZHMgdGhlIGdpdmVuIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBjbGFzc0FwcGx5XG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbnN0cnVjdG9yIEEgY2xhc3MgdG8gbWFrZSBhbiBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcmdzXSBBbnkgYXJyYXkgdG8gYmluZCBpdCB0byB0aGUgY29uc3RydWN0b3JcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgaW5zdGFuY2Ugb2YgY29uc3RydWN0b3IsIG9wdGlvbmFsbHkgYmluZCB3aXRoIGFyZ3NcbiAgICovXG4gIGNsYXNzQXBwbHkoY29uc3RydWN0b3IsIGFyZ3MgPSBudWxsKSB7XG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IEZhY3RvcnlGdW5jID0gY29uc3RydWN0b3IuYmluZC5hcHBseShjb25zdHJ1Y3RvciwgW251bGxdLmNvbmNhdChhcmdzKSk7XG4gICAgICByZXR1cm4gbmV3IEZhY3RvcnlGdW5jKCk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgZ2V0IHRoZSBpbWFnZSBkYXRhLiBJdCBjb3VsZCBiZSBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgUHJvdG9uLlpvbmUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBnZXRJbWFnZURhdGFcbiAgICpcbiAgICogQHBhcmFtIHtIVE1MQ2FudmFzRWxlbWVudH0gICBjb250ZXh0IGFueSBjYW52YXMsIG11c3QgYmUgYSAyZENvbnRleHQgJ2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpJ1xuICAgKiBAcGFyYW0ge09iamVjdH0gICAgICAgICAgICAgIGltYWdlICAgY291bGQgYmUgYW55IGRvbSBpbWFnZSwgZS5nLiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhpc0lzQW5JbWdUYWcnKTtcbiAgICogQHBhcmFtIHtQcm90b24uUmVjdGFuZ2xlfSAgICByZWN0XG4gICAqL1xuICBnZXRJbWFnZURhdGEoY29udGV4dCwgaW1hZ2UsIHJlY3QpIHtcbiAgICByZXR1cm4gSW1nVXRpbC5nZXRJbWFnZURhdGEoY29udGV4dCwgaW1hZ2UsIHJlY3QpO1xuICB9LFxuXG4gIGRlc3Ryb3lBbGwoYXJyLCBwYXJhbSA9IG51bGwpIHtcbiAgICBsZXQgaSA9IGFyci5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhcnJbaV0uZGVzdHJveShwYXJhbSk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICBkZWxldGUgYXJyW2ldO1xuICAgIH1cblxuICAgIGFyci5sZW5ndGggPSAwO1xuICB9LFxuXG4gIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh0eXBlb2YgT2JqZWN0LmFzc2lnbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSk7XG4gICAgfVxuICB9XG59O1xuIiwiY29uc3QgaWRzTWFwID0ge307XG5cbmNvbnN0IFB1aWQgPSB7XG4gIF9pbmRleDogMCxcbiAgX2NhY2hlOiB7fSxcblxuICBpZCh0eXBlKSB7XG4gICAgaWYgKGlkc01hcFt0eXBlXSA9PT0gdW5kZWZpbmVkIHx8IGlkc01hcFt0eXBlXSA9PT0gbnVsbCkgaWRzTWFwW3R5cGVdID0gMDtcbiAgICByZXR1cm4gYCR7dHlwZX1fJHtpZHNNYXBbdHlwZV0rK31gO1xuICB9LFxuXG4gIGdldElkKHRhcmdldCkge1xuICAgIGxldCB1aWQgPSB0aGlzLmdldElkRnJvbUNhY2hlKHRhcmdldCk7XG4gICAgaWYgKHVpZCkgcmV0dXJuIHVpZDtcblxuICAgIHVpZCA9IGBQVUlEXyR7dGhpcy5faW5kZXgrK31gO1xuICAgIHRoaXMuX2NhY2hlW3VpZF0gPSB0YXJnZXQ7XG4gICAgcmV0dXJuIHVpZDtcbiAgfSxcblxuICBnZXRJZEZyb21DYWNoZSh0YXJnZXQpIHtcbiAgICBsZXQgb2JqLCBpZDtcblxuICAgIGZvciAoaWQgaW4gdGhpcy5fY2FjaGUpIHtcbiAgICAgIG9iaiA9IHRoaXMuX2NhY2hlW2lkXTtcblxuICAgICAgaWYgKG9iaiA9PT0gdGFyZ2V0KSByZXR1cm4gaWQ7XG4gICAgICBpZiAodGhpcy5pc0JvZHkob2JqLCB0YXJnZXQpICYmIG9iai5zcmMgPT09IHRhcmdldC5zcmMpIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICBpc0JvZHkob2JqLCB0YXJnZXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdGFyZ2V0ID09PSBcIm9iamVjdFwiICYmIG9iai5pc0lubmVyICYmIHRhcmdldC5pc0lubmVyO1xuICB9LFxuXG4gIGdldFRhcmdldCh1aWQpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVbdWlkXTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgUHVpZDtcbiIsIi8qKlxuICogUG9vbCBpcyB0aGUgY2FjaGUgcG9vbCBvZiB0aGUgcHJvdG9uIGVuZ2luZSwgaXQgaXMgdmVyeSBpbXBvcnRhbnQuXG4gKlxuICogZ2V0KHRhcmdldCwgcGFyYW1zLCB1aWQpXG4gKiAgQ2xhc3NcbiAqICAgIHVpZCA9IFB1aWQuZ2V0SWQgLT4gUHVpZCBzYXZlIHRhcmdldCBjYWNoZVxuICogICAgdGFyZ2V0Ll9fcHVpZCA9IHVpZFxuICpcbiAqICBib2R5XG4gKiAgICB1aWQgPSBQdWlkLmdldElkIC0+IFB1aWQgc2F2ZSB0YXJnZXQgY2FjaGVcbiAqXG4gKlxuICogZXhwaXJlKHRhcmdldClcbiAqICBjYWNoZVt0YXJnZXQuX19wdWlkXSBwdXNoIHRhcmdldFxuICpcbiAqL1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBQdWlkIGZyb20gXCIuLi91dGlscy9QdWlkXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvb2wge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBvZiBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0b3RhbFxuICAgKiBAcHJvcGVydHkge09iamVjdH0gY2FjaGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKG51bSkge1xuICAgIHRoaXMudG90YWwgPSAwO1xuICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG1ldGhvZCBnZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBqdXN0IGFkZCBpZiBgdGFyZ2V0YCBpcyBhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGdldCh0YXJnZXQsIHBhcmFtcywgdWlkKSB7XG4gICAgbGV0IHA7XG4gICAgdWlkID0gdWlkIHx8IHRhcmdldC5fX3B1aWQgfHwgUHVpZC5nZXRJZCh0YXJnZXQpO1xuXG4gICAgaWYgKHRoaXMuY2FjaGVbdWlkXSAmJiB0aGlzLmNhY2hlW3VpZF0ubGVuZ3RoID4gMCkge1xuICAgICAgcCA9IHRoaXMuY2FjaGVbdWlkXS5wb3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcCA9IHRoaXMuY3JlYXRlT3JDbG9uZSh0YXJnZXQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcC5fX3B1aWQgPSB0YXJnZXQuX19wdWlkIHx8IHVpZDtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG1ldGhvZCBzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGV4cGlyZSh0YXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYWNoZSh0YXJnZXQuX19wdWlkKS5wdXNoKHRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjbGFzcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgbW9yZSBkb2N1bWVudGF0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgY3JlYXRlXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IHRhcmdldCBhbnkgT2JqZWN0IG9yIEZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBqdXN0IGFkZCBpZiBgdGFyZ2V0YCBpcyBhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGNyZWF0ZU9yQ2xvbmUodGFyZ2V0LCBwYXJhbXMpIHtcbiAgICB0aGlzLnRvdGFsKys7XG5cbiAgICBpZiAodGhpcy5jcmVhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh0YXJnZXQsIHBhcmFtcyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBVdGlsLmNsYXNzQXBwbHkodGFyZ2V0LCBwYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LmNsb25lKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiAtIHdoYXQgaXMgaW4gdGhlIGNhY2hlP1xuICAgKlxuICAgKiBAbWV0aG9kIGdldENvdW50XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgZ2V0Q291bnQoKSB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmNhY2hlKSBjb3VudCArPSB0aGlzLmNhY2hlW2lkXS5sZW5ndGg7XG4gICAgcmV0dXJuIGNvdW50Kys7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveWVzIGFsbCBpdGVtcyBmcm9tIFBvb2wuY2FjaGVcbiAgICpcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5jYWNoZVtpZF0ubGVuZ3RoID0gMDtcbiAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlW2lkXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBQb29sLmNhY2hlXG4gICAqXG4gICAqIEBtZXRob2QgZ2V0Q2FjaGVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKiBAcHJpdmF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gdWlkIHRoZSB1bmlxdWUgaWRcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZ2V0Q2FjaGUodWlkID0gXCJkZWZhdWx0XCIpIHtcbiAgICBpZiAoIXRoaXMuY2FjaGVbdWlkXSkgdGhpcy5jYWNoZVt1aWRdID0gW107XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVbdWlkXTtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdHMge1xuICBjb25zdHJ1Y3Rvcihwcm90b24pIHtcbiAgICB0aGlzLnByb3RvbiA9IHByb3RvbjtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgdGhpcy50eXBlID0gMTtcblxuICAgIHRoaXMuZW1pdHRlckluZGV4ID0gMDtcbiAgICB0aGlzLnJlbmRlcmVySW5kZXggPSAwO1xuICB9XG5cbiAgdXBkYXRlKHN0eWxlLCBib2R5KSB7XG4gICAgdGhpcy5hZGQoc3R5bGUsIGJvZHkpO1xuXG4gICAgY29uc3QgZW1pdHRlciA9IHRoaXMuZ2V0RW1pdHRlcigpO1xuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5nZXRSZW5kZXJlcigpO1xuICAgIGxldCBzdHIgPSBcIlwiO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgc3RyICs9IFwiZW1pdHRlcjpcIiArIHRoaXMucHJvdG9uLmVtaXR0ZXJzLmxlbmd0aCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwiZW0gc3BlZWQ6XCIgKyBlbWl0dGVyLmVtaXRTcGVlZCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwicG9zOlwiICsgdGhpcy5nZXRFbWl0dGVyUG9zKGVtaXR0ZXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwiaW5pdGlhbGl6ZXM6XCIgKyBlbWl0dGVyLmluaXRpYWxpemVzLmxlbmd0aCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcilcbiAgICAgICAgICBzdHIgKz0gJzxzcGFuIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7XCI+JyArIHRoaXMuY29uY2F0QXJyKGVtaXR0ZXIuaW5pdGlhbGl6ZXMpICsgXCI8L3NwYW4+PGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwiYmVoYXZpb3VyczpcIiArIGVtaXR0ZXIuYmVoYXZpb3Vycy5sZW5ndGggKyBcIjxicj5cIjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHN0ciArPSAnPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jaztcIj4nICsgdGhpcy5jb25jYXRBcnIoZW1pdHRlci5iZWhhdmlvdXJzKSArIFwiPC9zcGFuPjxicj5cIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNDpcbiAgICAgICAgaWYgKHJlbmRlcmVyKSBzdHIgKz0gcmVuZGVyZXIubmFtZSArIFwiPGJyPlwiO1xuICAgICAgICBpZiAocmVuZGVyZXIpIHN0ciArPSBcImJvZHk6XCIgKyB0aGlzLmdldENyZWF0ZWROdW1iZXIocmVuZGVyZXIpICsgXCI8YnI+XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdHIgKz0gXCJwYXJ0aWNsZXM6XCIgKyB0aGlzLnByb3Rvbi5nZXRDb3VudCgpICsgXCI8YnI+XCI7XG4gICAgICAgIHN0ciArPSBcInBvb2w6XCIgKyB0aGlzLnByb3Rvbi5wb29sLmdldENvdW50KCkgKyBcIjxicj5cIjtcbiAgICAgICAgc3RyICs9IFwidG90YWw6XCIgKyB0aGlzLnByb3Rvbi5wb29sLnRvdGFsO1xuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9IHN0cjtcbiAgfVxuXG4gIGFkZChzdHlsZSwgYm9keSkge1xuICAgIGlmICghdGhpcy5jb250YWluZXIpIHtcbiAgICAgIHRoaXMudHlwZSA9IDE7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBbXG4gICAgICAgIFwicG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjBweDtsZWZ0OjA7Y3Vyc29yOnBvaW50ZXI7XCIsXG4gICAgICAgIFwib3BhY2l0eTowLjk7ei1pbmRleDoxMDAwMDtwYWRkaW5nOjEwcHg7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7XCIsXG4gICAgICAgIFwid2lkdGg6MTIwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjojMDAyO2NvbG9yOiMwZmY7XCJcbiAgICAgIF0uam9pbihcIlwiKTtcblxuICAgICAgdGhpcy5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgXCJjbGlja1wiLFxuICAgICAgICBlID0+IHtcbiAgICAgICAgICB0aGlzLnR5cGUrKztcbiAgICAgICAgICBpZiAodGhpcy50eXBlID4gNCkgdGhpcy50eXBlID0gMTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG5cbiAgICAgIGxldCBiZywgY29sb3I7XG4gICAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBiZyA9IFwiIzIwMVwiO1xuICAgICAgICAgIGNvbG9yID0gXCIjZjA4XCI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGJnID0gXCIjMDIwXCI7XG4gICAgICAgICAgY29sb3IgPSBcIiMwZjBcIjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJnID0gXCIjMDAyXCI7XG4gICAgICAgICAgY29sb3IgPSBcIiMwZmZcIjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb250YWluZXIuc3R5bGVbXCJiYWNrZ3JvdW5kLWNvbG9yXCJdID0gYmc7XG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZVtcImNvbG9yXCJdID0gY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICBib2R5ID0gYm9keSB8fCB0aGlzLmJvZHkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVtaXR0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdG9uLmVtaXR0ZXJzW3RoaXMuZW1pdHRlckluZGV4XTtcbiAgfVxuXG4gIGdldFJlbmRlcmVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Rvbi5yZW5kZXJlcnNbdGhpcy5yZW5kZXJlckluZGV4XTtcbiAgfVxuXG4gIGNvbmNhdEFycihhcnIpIHtcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAoIWFyciB8fCAhYXJyLmxlbmd0aCkgcmV0dXJuIHJlc3VsdDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgKz0gKGFycltpXS5uYW1lIHx8IFwiXCIpLnN1YnN0cigwLCAxKSArIFwiLlwiO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDcmVhdGVkTnVtYmVyKHJlbmRlcmVyKSB7XG4gICAgcmV0dXJuIHJlbmRlcmVyLnBvb2wudG90YWwgfHwgKHJlbmRlcmVyLmNwb29sICYmIHJlbmRlcmVyLmNwb29sLnRvdGFsKSB8fCAwO1xuICB9XG5cbiAgZ2V0RW1pdHRlclBvcyhlKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoZS5wLngpICsgXCIsXCIgKyBNYXRoLnJvdW5kKGUucC55KTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJvZHkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgIGJvZHkucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgIH1cblxuICAgIHRoaXMucHJvdG9uID0gbnVsbDtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gIH1cbn1cbiIsIi8qXG4gKiBFdmVudERpc3BhdGNoZXJcbiAqIFRoaXMgY29kZSByZWZlcmVuY2Ugc2luY2UgaHR0cDovL2NyZWF0ZWpzLmNvbS8uXG4gKlxuICoqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdmVudERpc3BhdGNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGJpbmQodGFyZ2V0KSB7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50O1xuICAgIHRhcmdldC5wcm90b3R5cGUuaGFzRXZlbnRMaXN0ZW5lciA9IEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUuaGFzRXZlbnRMaXN0ZW5lcjtcbiAgICB0YXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyO1xuICAgIHRhcmdldC5wcm90b3R5cGUucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVyc1t0eXBlXSkgdGhpcy5fbGlzdGVuZXJzW3R5cGVdID0gW107XG4gICAgdGhpcy5fbGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgcmV0dXJuIGxpc3RlbmVyO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnNbdHlwZV0pIHJldHVybjtcblxuICAgIGNvbnN0IGFyciA9IHRoaXMuX2xpc3RlbmVyc1t0eXBlXTtcbiAgICBjb25zdCBsZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycltpXSA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5lcnNbdHlwZV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbGxvd3MgZm9yIGZhc3RlciBjaGVja3MuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVBbGxFdmVudExpc3RlbmVycyh0eXBlKSB7XG4gICAgaWYgKCF0eXBlKSB0aGlzLl9saXN0ZW5lcnMgPSBudWxsO1xuICAgIGVsc2UgaWYgKHRoaXMuX2xpc3RlbmVycykgZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1t0eXBlXTtcbiAgfVxuXG4gIGRpc3BhdGNoRXZlbnQodHlwZSwgYXJncykge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7XG5cbiAgICBpZiAodHlwZSAmJiBsaXN0ZW5lcnMpIHtcbiAgICAgIGxldCBhcnIgPSBsaXN0ZW5lcnNbdHlwZV07XG4gICAgICBpZiAoIWFycikgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgLy8gYXJyID0gYXJyLnNsaWNlKCk7XG4gICAgICAvLyB0byBhdm9pZCBpc3N1ZXMgd2l0aCBpdGVtcyBiZWluZyByZW1vdmVkIG9yIGFkZGVkIGR1cmluZyB0aGUgZGlzcGF0Y2hcblxuICAgICAgbGV0IGhhbmRsZXI7XG4gICAgICBsZXQgaSA9IGFyci5sZW5ndGg7XG4gICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGhhbmRsZXIgPSBhcnJbaV07XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCBoYW5kbGVyKGFyZ3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAhIXJlc3VsdDtcbiAgfVxuXG4gIGhhc0V2ZW50TGlzdGVuZXIodHlwZSkge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVycztcbiAgICByZXR1cm4gISEobGlzdGVuZXJzICYmIGxpc3RlbmVyc1t0eXBlXSk7XG4gIH1cbn1cbiIsImNvbnN0IFBJID0gMy4xNDE1OTI2O1xuY29uc3QgSU5GSU5JVFkgPSBJbmZpbml0eTtcblxuY29uc3QgTWF0aFV0aWwgPSB7XG4gIFBJOiBQSSxcbiAgUEl4MjogUEkgKiAyLFxuICBQSV8yOiBQSSAvIDIsXG4gIFBJXzE4MDogUEkgLyAxODAsXG4gIE4xODBfUEk6IDE4MCAvIFBJLFxuICBJbmZpbml0eTogLTk5OSxcblxuICBpc0luZmluaXR5KG51bSkge1xuICAgIHJldHVybiBudW0gPT09IHRoaXMuSW5maW5pdHkgfHwgbnVtID09PSBJTkZJTklUWTtcbiAgfSxcblxuICByYW5kb21BVG9CKGEsIGIsIGlzSW50ID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzSW50KSByZXR1cm4gYSArIE1hdGgucmFuZG9tKCkgKiAoYiAtIGEpO1xuICAgIGVsc2UgcmV0dXJuICgoTWF0aC5yYW5kb20oKSAqIChiIC0gYSkpID4+IDApICsgYTtcbiAgfSxcblxuICByYW5kb21GbG9hdGluZyhjZW50ZXIsIGYsIGlzSW50KSB7XG4gICAgcmV0dXJuIHRoaXMucmFuZG9tQVRvQihjZW50ZXIgLSBmLCBjZW50ZXIgKyBmLCBpc0ludCk7XG4gIH0sXG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgcmV0dXJuIFwiI1wiICsgKFwiMDAwMDBcIiArICgoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCkgPDwgMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNik7XG4gIH0sXG5cbiAgcmFuZG9tWm9uZShkaXNwbGF5KSB7fSxcblxuICBmbG9vcihudW0sIGsgPSA0KSB7XG4gICAgY29uc3QgZGlnaXRzID0gTWF0aC5wb3coMTAsIGspO1xuICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAqIGRpZ2l0cykgLyBkaWdpdHM7XG4gIH0sXG5cbiAgZGVncmVlVHJhbnNmb3JtKGEpIHtcbiAgICByZXR1cm4gKGEgKiBQSSkgLyAxODA7XG4gIH0sXG5cbiAgdG9Db2xvcjE2KG51bSkge1xuICAgIHJldHVybiBgIyR7bnVtLnRvU3RyaW5nKDE2KX1gO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNYXRoVXRpbDtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVncmF0aW9uIHtcbiAgY29uc3RydWN0b3IodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBjYWxjdWxhdGUocGFydGljbGVzLCB0aW1lLCBkYW1waW5nKSB7XG4gICAgdGhpcy5ldWxlckludGVncmF0ZShwYXJ0aWNsZXMsIHRpbWUsIGRhbXBpbmcpO1xuICB9XG5cbiAgLy8gRXVsZXIgSW50ZWdyYXRlXG4gIC8vIGh0dHBzOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvRXVsZXJfbWV0aG9kXG4gIGV1bGVySW50ZWdyYXRlKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS5zbGVlcCkge1xuICAgICAgcGFydGljbGUub2xkLnAuY29weShwYXJ0aWNsZS5wKTtcbiAgICAgIHBhcnRpY2xlLm9sZC52LmNvcHkocGFydGljbGUudik7XG5cbiAgICAgIHBhcnRpY2xlLmEubXVsdGlwbHlTY2FsYXIoMSAvIHBhcnRpY2xlLm1hc3MpO1xuICAgICAgcGFydGljbGUudi5hZGQocGFydGljbGUuYS5tdWx0aXBseVNjYWxhcih0aW1lKSk7XG4gICAgICBwYXJ0aWNsZS5wLmFkZChwYXJ0aWNsZS5vbGQudi5tdWx0aXBseVNjYWxhcih0aW1lKSk7XG5cbiAgICAgIGlmIChkYW1waW5nKSBwYXJ0aWNsZS52Lm11bHRpcGx5U2NhbGFyKGRhbXBpbmcpO1xuXG4gICAgICBwYXJ0aWNsZS5hLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgUG9vbCBmcm9tIFwiLi9Qb29sXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFN0YXRzIGZyb20gXCIuLi9kZWJ1Zy9TdGF0c1wiO1xuaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50RGlzcGF0Y2hlclwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgSW50ZWdyYXRpb24gZnJvbSBcIi4uL21hdGgvSW50ZWdyYXRpb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJvdG9uIHtcbiAgc3RhdGljIFVTRV9DTE9DSyA9IGZhbHNlO1xuXG4gIC8vIG1lYXN1cmUgMToxMDBcbiAgc3RhdGljIE1FQVNVUkUgPSAxMDA7XG4gIHN0YXRpYyBFVUxFUiA9IFwiZXVsZXJcIjtcbiAgc3RhdGljIFJLMiA9IFwicnVuZ2Uta3V0dGEyXCI7XG5cbiAgLy8gZXZlbnQgbmFtZVxuICBzdGF0aWMgUEFSVElDTEVfQ1JFQVRFRCA9IFwiUEFSVElDTEVfQ1JFQVRFRFwiO1xuICBzdGF0aWMgUEFSVElDTEVfVVBEQVRFID0gXCJQQVJUSUNMRV9VUERBVEVcIjtcbiAgc3RhdGljIFBBUlRJQ0xFX1NMRUVQID0gXCJQQVJUSUNMRV9TTEVFUFwiO1xuICBzdGF0aWMgUEFSVElDTEVfREVBRCA9IFwiUEFSVElDTEVfREVBRFwiO1xuXG4gIHN0YXRpYyBFTUlUVEVSX0FEREVEID0gXCJFTUlUVEVSX0FEREVEXCI7XG4gIHN0YXRpYyBFTUlUVEVSX1JFTU9WRUQgPSBcIkVNSVRURVJfUkVNT1ZFRFwiO1xuXG4gIHN0YXRpYyBQUk9UT05fVVBEQVRFID0gXCJQUk9UT05fVVBEQVRFXCI7XG4gIHN0YXRpYyBQUk9UT05fVVBEQVRFX0FGVEVSID0gXCJQUk9UT05fVVBEQVRFX0FGVEVSXCI7XG4gIHN0YXRpYyBERUZBVUxUX0lOVEVSVkFMID0gMC4wMTY3O1xuXG4gIHN0YXRpYyBhbWVuZENoYW5nZVRhYnNCdWcgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0b3IgdG8gYWRkIGVtaXR0ZXJzXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvciBQcm90b25cbiAgICpcbiAgICogQHRvZG8gYWRkIG1vcmUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgc2luZ2xlIHByb3BlcnRpZXMgYW5kIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXIgfCB1bmRlZmluZWR9IFtpbnRlZ3JhdGlvblR5cGU9UHJvdG9uLkVVTEVSXVxuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gW2ludGVncmF0aW9uVHlwZT1Qcm90b24uRVVMRVJdXG4gICAqIEBwcm9wZXJ0eSB7QXJyYXl9IGVtaXR0ZXJzICAgQWxsIGFkZGVkIGVtaXR0ZXJcbiAgICogQHByb3BlcnR5IHtBcnJheX0gcmVuZGVyZXJzICBBbGwgYWRkZWQgcmVuZGVyZXJcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHRpbWUgICAgICBUaGUgYWN0aXZlIHRpbWVcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IG9sZHRpbWUgICBUaGUgb2xkIHRpbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGludGVncmF0aW9uVHlwZSkge1xuICAgIHRoaXMuZW1pdHRlcnMgPSBbXTtcbiAgICB0aGlzLnJlbmRlcmVycyA9IFtdO1xuXG4gICAgdGhpcy50aW1lID0gMDtcbiAgICB0aGlzLm5vdyA9IDA7XG4gICAgdGhpcy50aGVuID0gMDtcbiAgICB0aGlzLmVsYXBzZWQgPSAwO1xuXG4gICAgdGhpcy5zdGF0cyA9IG5ldyBTdGF0cyh0aGlzKTtcbiAgICB0aGlzLnBvb2wgPSBuZXcgUG9vbCg4MCk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uVHlwZSA9IFV0aWwuaW5pdFZhbHVlKGludGVncmF0aW9uVHlwZSwgUHJvdG9uLkVVTEVSKTtcbiAgICB0aGlzLmludGVncmF0b3IgPSBuZXcgSW50ZWdyYXRpb24odGhpcy5pbnRlZ3JhdGlvblR5cGUpO1xuXG4gICAgdGhpcy5fZnBzID0gXCJhdXRvXCI7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBQcm90b24uREVGQVVMVF9JTlRFUlZBTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmcmFtZXMgcGVyIHNlY29uZCAoRlBTKSBmb3IgdGhlIFByb3RvbiBzeXN0ZW0uXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZnBzIC0gVGhlIGRlc2lyZWQgRlBTLiBVc2UgXCJhdXRvXCIgZm9yIGRlZmF1bHQgYmVoYXZpb3IsIG9yIGEgbnVtYmVyIGZvciBhIHNwZWNpZmljIEZQUy5cbiAgICovXG4gIHNldCBmcHMoZnBzKSB7XG4gICAgdGhpcy5fZnBzID0gZnBzO1xuICAgIHRoaXMuX2ludGVydmFsID0gZnBzID09PSBcImF1dG9cIiA/IFByb3Rvbi5ERUZBVUxUX0lOVEVSVkFMIDogTWF0aFV0aWwuZmxvb3IoMSAvIGZwcywgNyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBmcmFtZXMgcGVyIHNlY29uZCAoRlBTKSBzZXR0aW5nLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfHN0cmluZ30gVGhlIGN1cnJlbnQgRlBTIHNldHRpbmcuIFJldHVybnMgXCJhdXRvXCIgaWYgc2V0IHRvIGRlZmF1bHQsIG9yIGEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWMgRlBTLlxuICAgKi9cbiAgZ2V0IGZwcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZnBzO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBhIHR5cGUgb2YgUmVuZGVyZXJcbiAgICpcbiAgICogQG1ldGhvZCBhZGRSZW5kZXJlclxuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXJcbiAgICovXG4gIGFkZFJlbmRlcmVyKHJlbmRlcikge1xuICAgIHJlbmRlci5pbml0KHRoaXMpO1xuICAgIHRoaXMucmVuZGVyZXJzLnB1c2gocmVuZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAbmFtZSBhZGQgYSB0eXBlIG9mIFJlbmRlcmVyXG4gICAqXG4gICAqIEBtZXRob2QgYWRkUmVuZGVyZXJcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gcmVuZGVyXG4gICAqL1xuICByZW1vdmVSZW5kZXJlcihyZW5kZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVuZGVyZXJzLmluZGV4T2YocmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJlbmRlci5yZW1vdmUodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBFbWl0dGVyXG4gICAqXG4gICAqIEBtZXRob2QgYWRkRW1pdHRlclxuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge0VtaXR0ZXJ9IGVtaXR0ZXJcbiAgICovXG4gIGFkZEVtaXR0ZXIoZW1pdHRlcikge1xuICAgIHRoaXMuZW1pdHRlcnMucHVzaChlbWl0dGVyKTtcbiAgICBlbWl0dGVyLnBhcmVudCA9IHRoaXM7XG5cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLkVNSVRURVJfQURERUQsIGVtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gRW1pdHRlclxuICAgKlxuICAgKiBAbWV0aG9kIHJlbW92ZUVtaXR0ZXJcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uRW1pdHRlcn0gZW1pdHRlclxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlcihlbWl0dGVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmVtaXR0ZXJzLmluZGV4T2YoZW1pdHRlcik7XG4gICAgdGhpcy5lbWl0dGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGVtaXR0ZXIucGFyZW50ID0gbnVsbDtcblxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uRU1JVFRFUl9SRU1PVkVELCBlbWl0dGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBhZGRlZCBlbWl0dGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHVwZGF0ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKi9cbiAgdXBkYXRlKCkge1xuICAgIC8vICdhdXRvJyBpcyB0aGUgZGVmYXVsdCBicm93c2VyIHJlZnJlc2ggcmF0ZSwgdGhlIHZhc3QgbWFqb3JpdHkgaXMgNjBmcHNcbiAgICBpZiAodGhpcy5fZnBzID09PSBcImF1dG9cIikge1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5QUk9UT05fVVBEQVRFKTtcblxuICAgICAgaWYgKFByb3Rvbi5VU0VfQ0xPQ0spIHtcbiAgICAgICAgaWYgKCF0aGlzLnRoZW4pIHRoaXMudGhlbiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLm5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLmVsYXBzZWQgPSAodGhpcy5ub3cgLSB0aGlzLnRoZW4pICogMC4wMDE7XG4gICAgICAgIC8vIEZpeCBidWdzIHN1Y2ggYXMgY2hyb21lIGJyb3dzZXIgc3dpdGNoaW5nIHRhYnMgY2F1c2luZyBleGNlc3NpdmUgdGltZSBkaWZmZXJlbmNlXG4gICAgICAgIHRoaXMuYW1lbmRDaGFuZ2VUYWJzQnVnKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWxhcHNlZCA+IDApIHRoaXMuZW1pdHRlcnNVcGRhdGUodGhpcy5lbGFwc2VkKTtcbiAgICAgICAgdGhpcy50aGVuID0gdGhpcy5ub3c7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXR0ZXJzVXBkYXRlKFByb3Rvbi5ERUZBVUxUX0lOVEVSVkFMKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5QUk9UT05fVVBEQVRFX0FGVEVSKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZnBzIGZyYW1lIHJhdGUgaXMgc2V0XG4gICAgZWxzZSB7XG4gICAgICBpZiAoIXRoaXMudGhlbikgdGhpcy50aGVuID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB0aGlzLm5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5lbGFwc2VkID0gKHRoaXMubm93IC0gdGhpcy50aGVuKSAqIDAuMDAxO1xuXG4gICAgICBpZiAodGhpcy5lbGFwc2VkID4gdGhpcy5faW50ZXJ2YWwpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5QUk9UT05fVVBEQVRFKTtcbiAgICAgICAgdGhpcy5lbWl0dGVyc1VwZGF0ZSh0aGlzLl9pbnRlcnZhbCk7XG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE5NzY0MDE4L2NvbnRyb2xsaW5nLWZwcy13aXRoLXJlcXVlc3RhbmltYXRpb25mcmFtZVxuICAgICAgICB0aGlzLnRoZW4gPSB0aGlzLm5vdyAtICh0aGlzLmVsYXBzZWQgJSB0aGlzLl9pbnRlcnZhbCkgKiAxMDAwO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLlBST1RPTl9VUERBVEVfQUZURVIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVtaXR0ZXJzVXBkYXRlKGVsYXBzZWQpIHtcbiAgICBsZXQgaSA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHRoaXMuZW1pdHRlcnNbaV0udXBkYXRlKGVsYXBzZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIGFtZW5kQ2hhbmdlVGFic0J1Z1xuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKi9cbiAgYW1lbmRDaGFuZ2VUYWJzQnVnKCkge1xuICAgIGlmICghUHJvdG9uLmFtZW5kQ2hhbmdlVGFic0J1ZykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmVsYXBzZWQgPiAwLjUpIHtcbiAgICAgIHRoaXMudGhlbiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5lbGFwc2VkID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ291bnRzIGFsbCBwYXJ0aWNsZXMgZnJvbSBhbGwgZW1pdHRlcnNcbiAgICpcbiAgICogQG1ldGhvZCBnZXRDb3VudFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKi9cbiAgZ2V0Q291bnQoKSB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBsZXQgaSA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkgdG90YWwgKz0gdGhpcy5lbWl0dGVyc1tpXS5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIHJldHVybiB0b3RhbDtcbiAgfVxuXG4gIGdldEFsbFBhcnRpY2xlcygpIHtcbiAgICBsZXQgcGFydGljbGVzID0gW107XG4gICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHBhcnRpY2xlcyA9IHBhcnRpY2xlcy5jb25jYXQodGhpcy5lbWl0dGVyc1tpXS5wYXJ0aWNsZXMpO1xuICAgIHJldHVybiBwYXJ0aWNsZXM7XG4gIH1cblxuICBkZXN0cm95QWxsRW1pdHRlcnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QWxsKHRoaXMuZW1pdHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGlzIFByb3RvbiBpbnN0YW5jZS4gVGhpcyBpbmNsdWRlcyBhbGwgZW1pdHRlcnMsIGFuZCBhbGwgcHJvcGVydGllc1xuICAgKlxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGRlc3Ryb3kocmVtb3ZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBkZXN0cm95T3RoZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnRpbWUgPSAwO1xuICAgICAgdGhpcy50aGVuID0gMDtcbiAgICAgIHRoaXMucG9vbC5kZXN0cm95KCk7XG4gICAgICB0aGlzLnN0YXRzLmRlc3Ryb3koKTtcblxuICAgICAgVXRpbC5kZXN0cm95QWxsKHRoaXMuZW1pdHRlcnMpO1xuICAgICAgVXRpbC5kZXN0cm95QWxsKHRoaXMucmVuZGVyZXJzLCB0aGlzLmdldEFsbFBhcnRpY2xlcygpKTtcblxuICAgICAgdGhpcy5pbnRlZ3JhdG9yID0gbnVsbDtcbiAgICAgIHRoaXMucmVuZGVyZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuZW1pdHRlcnMgPSBudWxsO1xuICAgICAgdGhpcy5zdGF0cyA9IG51bGw7XG4gICAgICB0aGlzLnBvb2wgPSBudWxsO1xuICAgIH07XG5cbiAgICBpZiAocmVtb3ZlKSB7XG4gICAgICBzZXRUaW1lb3V0KGRlc3Ryb3lPdGhlciwgMjAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVzdHJveU90aGVyKCk7XG4gICAgfVxuICB9XG59XG5cbkV2ZW50RGlzcGF0Y2hlci5iaW5kKFByb3Rvbik7XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBSZ2Ige1xuICBjb25zdHJ1Y3RvcihyID0gMjU1LCBnID0gMjU1LCBiID0gMjU1KSB7XG4gICAgdGhpcy5yID0gcjtcbiAgICB0aGlzLmcgPSBnO1xuICAgIHRoaXMuYiA9IGI7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnIgPSAyNTU7XG4gICAgdGhpcy5nID0gMjU1O1xuICAgIHRoaXMuYiA9IDI1NTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzcGFuIG9mIHZhbHVlcyBvciBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3BhbiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGlzQXJyYXk7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtudW1iZXJ8bnVtYmVyW119XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBhO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYjtcblxuICAvKipcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjZW50ZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU3BhbiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8bnVtYmVyW119IGEgLSBUaGUgZmlyc3QgdmFsdWUgb3IgYW4gYXJyYXkgb2YgdmFsdWVzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2JdIC0gVGhlIHNlY29uZCB2YWx1ZSAoaWYgYSBpcyBub3QgYW4gYXJyYXkpLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjZW50ZXI9ZmFsc2VdIC0gV2hldGhlciB0byB1c2UgY2VudGVyLWJhc2VkIGNhbGN1bGF0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYSwgYiwgY2VudGVyKSB7XG4gICAgaWYgKFV0aWwuaXNBcnJheShhKSkge1xuICAgICAgdGhpcy5pc0FycmF5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuYSA9IGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBcnJheSA9IGZhbHNlO1xuICAgICAgdGhpcy5hID0gVXRpbC5pbml0VmFsdWUoYSwgMSk7XG4gICAgICB0aGlzLmIgPSBVdGlsLmluaXRWYWx1ZShiLCB0aGlzLmEpO1xuICAgICAgdGhpcy5jZW50ZXIgPSBVdGlsLmluaXRWYWx1ZShjZW50ZXIsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHZhbHVlIGZyb20gdGhlIHNwYW4uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzSW50PWZhbHNlXSAtIFdoZXRoZXIgdG8gcmV0dXJuIGFuIGludGVnZXIgdmFsdWUuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IEEgcmFuZG9tIHZhbHVlIGZyb20gdGhlIHNwYW4uXG4gICAqL1xuICBnZXRWYWx1ZShpc0ludCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaXNBcnJheSkge1xuICAgICAgcmV0dXJuIFV0aWwuZ2V0UmFuZEZyb21BcnJheSh0aGlzLmEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuY2VudGVyKSB7XG4gICAgICAgIHJldHVybiBNYXRoVXRpbC5yYW5kb21BVG9CKHRoaXMuYSwgdGhpcy5iLCBpc0ludCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTWF0aFV0aWwucmFuZG9tRmxvYXRpbmcodGhpcy5hLCB0aGlzLmIsIGlzSW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBTcGFuIG9iamVjdC5cbiAgICogQHBhcmFtIHsqfFNwYW59IGEgLSBUaGUgZmlyc3QgdmFsdWUgb3IgYSBTcGFuIG9iamVjdC5cbiAgICogQHBhcmFtIHsqfSBbYl0gLSBUaGUgc2Vjb25kIHZhbHVlLlxuICAgKiBAcGFyYW0geyp9IFtjXSAtIFRoZSB0aGlyZCB2YWx1ZS5cbiAgICogQHJldHVybnMge1NwYW59IEEgbmV3IFNwYW4gaW5zdGFuY2UuXG4gICAqL1xuICBzdGF0aWMgc2V0U3BhblZhbHVlKGEsIGIsIGMpIHtcbiAgICBpZiAoYSBpbnN0YW5jZW9mIFNwYW4pIHtcbiAgICAgIHJldHVybiBhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3BhbihhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjID09PSB1bmRlZmluZWQpIHJldHVybiBuZXcgU3BhbihhLCBiKTtcbiAgICAgICAgZWxzZSByZXR1cm4gbmV3IFNwYW4oYSwgYiwgYyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIGZyb20gYSBTcGFuLCBpZiB0aGUgcGFyYW0gaXMgbm90IGEgU3BhbiBpdCB3aWxsIHJldHVybiB0aGUgZ2l2ZW4gcGFyYW1ldGVyLlxuICAgKiBAcGFyYW0geyp8U3Bhbn0gcGFuIC0gVGhlIHZhbHVlIG9yIFNwYW4gdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tLlxuICAgKiBAcmV0dXJucyB7Kn0gVGhlIHZhbHVlIG9mIFNwYW4gT1IgdGhlIHBhcmFtZXRlciBpZiBpdCBpcyBub3QgYSBTcGFuLlxuICAgKi9cbiAgc3RhdGljIGdldFNwYW5WYWx1ZShwYW4pIHtcbiAgICByZXR1cm4gcGFuIGluc3RhbmNlb2YgU3BhbiA/IHBhbi5nZXRWYWx1ZSgpIDogcGFuO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaGFzUHJvcCh0YXJnZXQsIGtleSkge1xuICAgIGlmICghdGFyZ2V0KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gcmV0dXJuIG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBzZXQgdGhlIHByb3RvdHlwZSBpbiBhIGdpdmVuIHByb3RvdHlwZU9iamVjdFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2Qgc2V0UHJvcFxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yIHBhcmFtIGB0YXJnZXRgXG4gICAqIEB0b2RvIHRyYW5zbGF0ZSBkZXNyaXB0aW9uIGZyb20gY2hpbmVzZSB0byBlbmdsaXNoXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZU9iamVjdCBBbiBvYmplY3Qgb2Ygc2luZ2xlIHByb3RvdHlwZXNcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fSB0YXJnZXRcbiAgICovXG4gIHNldFByb3AodGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAobGV0IHByb3AgaW4gcHJvcHMpIHtcbiAgICAgIGlmICh0YXJnZXQuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gU3Bhbi5nZXRTcGFuVmFsdWUocHJvcHNbcHJvcF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBzZXRWZWN0b3JWYWxcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBwYXJhbSBgdGFyZ2V0YFxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yIHBhcmFtIGBjb25mYFxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZcbiAgICovXG4gIHNldFZlY3RvclZhbChwYXJ0aWNsZSwgY29uZiA9IG51bGwpIHtcbiAgICBpZiAoIWNvbmYpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJ4XCIpKSBwYXJ0aWNsZS5wLnggPSBjb25mW1wieFwiXTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwieVwiKSkgcGFydGljbGUucC55ID0gY29uZltcInlcIl07XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwidnhcIikpIHBhcnRpY2xlLnYueCA9IGNvbmZbXCJ2eFwiXTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwidnlcIikpIHBhcnRpY2xlLnYueSA9IGNvbmZbXCJ2eVwiXTtcblxuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJheFwiKSkgcGFydGljbGUuYS54ID0gY29uZltcImF4XCJdO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJheVwiKSkgcGFydGljbGUuYS55ID0gY29uZltcImF5XCJdO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInBcIikpIHBhcnRpY2xlLnAuY29weShjb25mW1wicFwiXSk7XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInZcIikpIHBhcnRpY2xlLnYuY29weShjb25mW1widlwiXSk7XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcImFcIikpIHBhcnRpY2xlLmEuY29weShjb25mW1wiYVwiXSk7XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwicG9zaXRpb25cIikpIHBhcnRpY2xlLnAuY29weShjb25mW1wicG9zaXRpb25cIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJ2ZWxvY2l0eVwiKSkgcGFydGljbGUudi5jb3B5KGNvbmZbXCJ2ZWxvY2l0eVwiXSk7XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcImFjY2VsZXJhdGVcIikpIHBhcnRpY2xlLmEuY29weShjb25mW1wiYWNjZWxlcmF0ZVwiXSk7XG4gIH1cbn07XG4iLCJpbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4vTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBlYXNlTGluZWFyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIGVhc2VJblF1YWQodmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codmFsdWUsIDIpO1xuICB9LFxuXG4gIGVhc2VPdXRRdWFkKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5wb3codmFsdWUgLSAxLCAyKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbk91dFF1YWQodmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogTWF0aC5wb3codmFsdWUsIDIpO1xuXG4gICAgcmV0dXJuIC0wLjUgKiAoKHZhbHVlIC09IDIpICogdmFsdWUgLSAyKTtcbiAgfSxcblxuICBlYXNlSW5DdWJpYyh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSwgMyk7XG4gIH0sXG5cbiAgZWFzZU91dEN1YmljKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlIC0gMSwgMykgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEN1YmljKHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCAzKTtcblxuICAgIHJldHVybiAwLjUgKiAoTWF0aC5wb3codmFsdWUgLSAyLCAzKSArIDIpO1xuICB9LFxuXG4gIGVhc2VJblF1YXJ0KHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCA0KTtcbiAgfSxcblxuICBlYXNlT3V0UXVhcnQodmFsdWUpIHtcbiAgICByZXR1cm4gLShNYXRoLnBvdyh2YWx1ZSAtIDEsIDQpIC0gMSk7XG4gIH0sXG5cbiAgZWFzZUluT3V0UXVhcnQodmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogTWF0aC5wb3codmFsdWUsIDQpO1xuXG4gICAgcmV0dXJuIC0wLjUgKiAoKHZhbHVlIC09IDIpICogTWF0aC5wb3codmFsdWUsIDMpIC0gMik7XG4gIH0sXG5cbiAgZWFzZUluU2luZSh2YWx1ZSkge1xuICAgIHJldHVybiAtTWF0aC5jb3ModmFsdWUgKiBNYXRoVXRpbC5QSV8yKSArIDE7XG4gIH0sXG5cbiAgZWFzZU91dFNpbmUodmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5zaW4odmFsdWUgKiBNYXRoVXRpbC5QSV8yKTtcbiAgfSxcblxuICBlYXNlSW5PdXRTaW5lKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0wLjUgKiAoTWF0aC5jb3MoTWF0aC5QSSAqIHZhbHVlKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbkV4cG8odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyAwIDogTWF0aC5wb3coMiwgMTAgKiAodmFsdWUgLSAxKSk7XG4gIH0sXG5cbiAgZWFzZU91dEV4cG8odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDEgPyAxIDogLU1hdGgucG93KDIsIC0xMCAqIHZhbHVlKSArIDE7XG4gIH0sXG5cbiAgZWFzZUluT3V0RXhwbyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgICBpZiAodmFsdWUgPT09IDEpIHJldHVybiAxO1xuXG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KDIsIDEwICogKHZhbHVlIC0gMSkpO1xuXG4gICAgcmV0dXJuIDAuNSAqICgtTWF0aC5wb3coMiwgLTEwICogLS12YWx1ZSkgKyAyKTtcbiAgfSxcblxuICBlYXNlSW5DaXJjKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5zcXJ0KDEgLSB2YWx1ZSAqIHZhbHVlKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VPdXRDaXJjKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCgxIC0gTWF0aC5wb3codmFsdWUgLSAxLCAyKSk7XG4gIH0sXG5cbiAgZWFzZUluT3V0Q2lyYyh2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAtMC41ICogKE1hdGguc3FydCgxIC0gdmFsdWUgKiB2YWx1ZSkgLSAxKTtcbiAgICByZXR1cm4gMC41ICogKE1hdGguc3FydCgxIC0gKHZhbHVlIC09IDIpICogdmFsdWUpICsgMSk7XG4gIH0sXG5cbiAgZWFzZUluQmFjayh2YWx1ZSkge1xuICAgIGxldCBzID0gMS43MDE1ODtcbiAgICByZXR1cm4gdmFsdWUgKiB2YWx1ZSAqICgocyArIDEpICogdmFsdWUgLSBzKTtcbiAgfSxcblxuICBlYXNlT3V0QmFjayh2YWx1ZSkge1xuICAgIGxldCBzID0gMS43MDE1ODtcbiAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgLSAxKSAqIHZhbHVlICogKChzICsgMSkgKiB2YWx1ZSArIHMpICsgMTtcbiAgfSxcblxuICBlYXNlSW5PdXRCYWNrKHZhbHVlKSB7XG4gICAgbGV0IHMgPSAxLjcwMTU4O1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiAodmFsdWUgKiB2YWx1ZSAqICgoKHMgKj0gMS41MjUpICsgMSkgKiB2YWx1ZSAtIHMpKTtcbiAgICByZXR1cm4gMC41ICogKCh2YWx1ZSAtPSAyKSAqIHZhbHVlICogKCgocyAqPSAxLjUyNSkgKyAxKSAqIHZhbHVlICsgcykgKyAyKTtcbiAgfSxcblxuICBnZXRFYXNpbmcoZWFzZSkge1xuICAgIGlmICh0eXBlb2YgZWFzZSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZWFzZTtcbiAgICBlbHNlIHJldHVybiB0aGlzW2Vhc2VdIHx8IHRoaXMuZWFzZUxpbmVhcjtcbiAgfVxufTtcbiIsImltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWN0b3IyRCB7XG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICB4O1xuXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICB5O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFZlY3RvcjJEIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3g9MF0gLSBUaGUgeCBjb29yZGluYXRlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3k9MF0gLSBUaGUgeSBjb29yZGluYXRlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSkge1xuICAgIHRoaXMueCA9IHggfHwgMDtcbiAgICB0aGlzLnkgPSB5IHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgeCBhbmQgeSBjb21wb25lbnRzIG9mIHRoaXMgdmVjdG9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4IGNvb3JkaW5hdGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIHNldCh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHggY29tcG9uZW50IG9mIHRoaXMgdmVjdG9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4IGNvb3JkaW5hdGUuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBzZXRYKHgpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHkgY29tcG9uZW50IG9mIHRoaXMgdmVjdG9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5IGNvb3JkaW5hdGUuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBzZXRZKHkpIHtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGdyYWRpZW50IChhbmdsZSkgb2YgdGhpcyB2ZWN0b3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBncmFkaWVudCBpbiByYWRpYW5zLlxuICAgKi9cbiAgZ2V0R3JhZGllbnQoKSB7XG4gICAgaWYgKHRoaXMueCAhPT0gMCkgcmV0dXJuIE1hdGguYXRhbjIodGhpcy55LCB0aGlzLngpO1xuICAgIGVsc2UgaWYgKHRoaXMueSA+IDApIHJldHVybiBNYXRoVXRpbC5QSV8yO1xuICAgIGVsc2UgaWYgKHRoaXMueSA8IDApIHJldHVybiAtTWF0aFV0aWwuUElfMjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBhbm90aGVyIHZlY3RvciB0byB0aGlzIG9uZS5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdiAtIFRoZSB2ZWN0b3IgdG8gY29weSBmcm9tLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgY29weSh2KSB7XG4gICAgdGhpcy54ID0gdi54O1xuICAgIHRoaXMueSA9IHYueTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW5vdGhlciB2ZWN0b3IgdG8gdGhpcyBvbmUuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHYgLSBUaGUgdmVjdG9yIHRvIGFkZC5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gW3ddIC0gQW4gb3B0aW9uYWwgc2Vjb25kIHZlY3RvciB0byBhZGQuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBhZGQodiwgdykge1xuICAgIGlmICh3ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZFZlY3RvcnModiwgdyk7XG4gICAgfVxuXG4gICAgdGhpcy54ICs9IHYueDtcbiAgICB0aGlzLnkgKz0gdi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBzY2FsYXIgdmFsdWVzIHRvIHRoaXMgdmVjdG9yJ3MgY29tcG9uZW50cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGEgLSBWYWx1ZSB0byBhZGQgdG8geC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGIgLSBWYWx1ZSB0byBhZGQgdG8geS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIGFkZFhZKGEsIGIpIHtcbiAgICB0aGlzLnggKz0gYTtcbiAgICB0aGlzLnkgKz0gYjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdHdvIHZlY3RvcnMgYW5kIHNldHMgdGhlIHJlc3VsdCB0byB0aGlzIHZlY3Rvci5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gYSAtIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSBiIC0gVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgYWRkVmVjdG9ycyhhLCBiKSB7XG4gICAgdGhpcy54ID0gYS54ICsgYi54O1xuICAgIHRoaXMueSA9IGEueSArIGIueTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhbm90aGVyIHZlY3RvciBmcm9tIHRoaXMgb25lLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSB2IC0gVGhlIHZlY3RvciB0byBzdWJ0cmFjdC5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gW3ddIC0gQW4gb3B0aW9uYWwgc2Vjb25kIHZlY3RvciB0byBzdWJ0cmFjdC5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIHN1Yih2LCB3KSB7XG4gICAgaWYgKHcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3ViVmVjdG9ycyh2LCB3KTtcbiAgICB9XG5cbiAgICB0aGlzLnggLT0gdi54O1xuICAgIHRoaXMueSAtPSB2Lnk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgb25lIHZlY3RvciBmcm9tIGFub3RoZXIgYW5kIHNldHMgdGhlIHJlc3VsdCB0byB0aGlzIHZlY3Rvci5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gYSAtIFRoZSB2ZWN0b3IgdG8gc3VidHJhY3QgZnJvbS5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gYiAtIFRoZSB2ZWN0b3IgdG8gc3VidHJhY3QuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBzdWJWZWN0b3JzKGEsIGIpIHtcbiAgICB0aGlzLnggPSBhLnggLSBiLng7XG4gICAgdGhpcy55ID0gYS55IC0gYi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRGl2aWRlcyB0aGlzIHZlY3RvciBieSBhIHNjYWxhci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHMgLSBUaGUgc2NhbGFyIHRvIGRpdmlkZSBieS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIGRpdmlkZVNjYWxhcihzKSB7XG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIHRoaXMueCAvPSBzO1xuICAgICAgdGhpcy55IC89IHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0KDAsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGxpZXMgdGhpcyB2ZWN0b3IgYnkgYSBzY2FsYXIuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzIC0gVGhlIHNjYWxhciB0byBtdWx0aXBseSBieS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIG11bHRpcGx5U2NhbGFyKHMpIHtcbiAgICB0aGlzLnggKj0gcztcbiAgICB0aGlzLnkgKj0gcztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZ2F0ZXMgdGhpcyB2ZWN0b3IgKGludmVydHMgaXRzIGRpcmVjdGlvbikuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBuZWdhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHRoaXMgdmVjdG9yIHdpdGggYW5vdGhlci5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdiAtIFRoZSBvdGhlciB2ZWN0b3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkb3QgcHJvZHVjdC5cbiAgICovXG4gIGRvdCh2KSB7XG4gICAgcmV0dXJuIHRoaXMueCAqIHYueCArIHRoaXMueSAqIHYueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBzcXVhcmVkIGxlbmd0aCBvZiB0aGlzIHZlY3Rvci5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIHNxdWFyZWQgbGVuZ3RoLlxuICAgKi9cbiAgbGVuZ3RoU3EoKSB7XG4gICAgcmV0dXJuIHRoaXMueCAqIHRoaXMueCArIHRoaXMueSAqIHRoaXMueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBsZW5ndGguXG4gICAqL1xuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgdGhpcyB2ZWN0b3IgKG1ha2VzIGl0IHVuaXQgbGVuZ3RoKS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIG5vcm1hbGl6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZGlzdGFuY2UgdG8gYW5vdGhlciB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHYgLSBUaGUgb3RoZXIgdmVjdG9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZGlzdGFuY2UuXG4gICAqL1xuICBkaXN0YW5jZVRvKHYpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdGF0ZXMgdGhpcyB2ZWN0b3IgYnkgYW4gYW5nbGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aGEgLSBUaGUgYW5nbGUgdG8gcm90YXRlIGJ5IChpbiByYWRpYW5zKS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIHJvdGF0ZSh0aGEpIHtcbiAgICBjb25zdCB4ID0gdGhpcy54O1xuICAgIGNvbnN0IHkgPSB0aGlzLnk7XG5cbiAgICB0aGlzLnggPSB4ICogTWF0aC5jb3ModGhhKSArIHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHRoaXMueSA9IC14ICogTWF0aC5zaW4odGhhKSArIHkgKiBNYXRoLmNvcyh0aGEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBkaXN0YW5jZSB0byBhbm90aGVyIHZlY3Rvci5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdiAtIFRoZSBvdGhlciB2ZWN0b3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBzcXVhcmVkIGRpc3RhbmNlLlxuICAgKi9cbiAgZGlzdGFuY2VUb1NxdWFyZWQodikge1xuICAgIGNvbnN0IGR4ID0gdGhpcy54IC0gdi54O1xuICAgIGNvbnN0IGR5ID0gdGhpcy55IC0gdi55O1xuXG4gICAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xuICB9XG5cbiAgLyoqXG4gICAqIExpbmVhcmx5IGludGVycG9sYXRlcyB0aGlzIHZlY3RvciB0b3dhcmQgYW5vdGhlciB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHYgLSBUaGUgdGFyZ2V0IHZlY3Rvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhIC0gVGhlIGludGVycG9sYXRpb24gZmFjdG9yICgwLTEpLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgbGVycCh2LCBhbHBoYSkge1xuICAgIHRoaXMueCArPSAodi54IC0gdGhpcy54KSAqIGFscGhhO1xuICAgIHRoaXMueSArPSAodi55IC0gdGhpcy55KSAqIGFscGhhO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgdmVjdG9yIGlzIGVxdWFsIHRvIGFub3RoZXIgdmVjdG9yLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSB2IC0gVGhlIG90aGVyIHZlY3Rvci5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZlY3RvcnMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBlcXVhbHModikge1xuICAgIHJldHVybiB2LnggPT09IHRoaXMueCAmJiB2LnkgPT09IHRoaXMueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdmVjdG9yIHRvIHplcm8uXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLnggPSAwLjA7XG4gICAgdGhpcy55ID0gMC4wO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdmVjdG9yIHdpdGggdGhlIHNhbWUgeCBhbmQgeSB2YWx1ZXMgYXMgdGhpcyBvbmUuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gQSBuZXcgVmVjdG9yMkQgaW5zdGFuY2UuXG4gICAqL1xuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFZlY3RvcjJEKHRoaXMueCwgdGhpcy55KTtcbiAgfVxufVxuIiwiaW1wb3J0IFJnYiBmcm9tIFwiLi4vdXRpbHMvUmdiXCI7XG5pbXBvcnQgUHVpZCBmcm9tIFwiLi4vdXRpbHMvUHVpZFwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBQcm9wVXRpbCBmcm9tIFwiLi4vdXRpbHMvUHJvcFV0aWxcIjtcbmltcG9ydCBlYXNlIGZyb20gXCIuLi9tYXRoL2Vhc2VcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhcnRpY2xlIGluIGEgcGFydGljbGUgc3lzdGVtLlxuICogQGNsYXNzIFBhcnRpY2xlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnRpY2xlIHtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9IFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcGFydGljbGUgKi9cbiAgaWQgPSBcIlwiO1xuXG4gIC8qKiBAdHlwZSB7e3A6VmVjdG9yMkQsdjpWZWN0b3IyRCxhOlZlY3RvcjJEfX0gT2xkIHN0YXRlIG9mIHRoZSBwYXJ0aWNsZSAqL1xuICBvbGQgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7b2JqZWN0fSBDdXN0b20gZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhcnRpY2xlICovXG4gIGRhdGEgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7QmVoYXZpb3VyW119IEFycmF5IG9mIGJlaGF2aW91cnMgYXBwbGllZCB0byB0aGUgcGFydGljbGUgKi9cbiAgYmVoYXZpb3VycyA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtWZWN0b3IyRH0gQ3VycmVudCBwb3NpdGlvbiBvZiB0aGUgcGFydGljbGUgKi9cbiAgcCA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtWZWN0b3IyRH0gQ3VycmVudCB2ZWxvY2l0eSBvZiB0aGUgcGFydGljbGUgKi9cbiAgdiA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtWZWN0b3IyRH0gQ3VycmVudCBhY2NlbGVyYXRpb24gb2YgdGhlIHBhcnRpY2xlICovXG4gIGEgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7UmdifSBDb2xvciBvZiB0aGUgcGFydGljbGUgKi9cbiAgcmdiID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQYXJ0aWNsZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtjb25mXSBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIHBhcnRpY2xlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25mKSB7XG4gICAgdGhpcy5uYW1lID0gXCJQYXJ0aWNsZVwiO1xuICAgIHRoaXMuaWQgPSBQdWlkLmlkKHRoaXMubmFtZSk7XG4gICAgdGhpcy5vbGQgPSB7fTtcbiAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICB0aGlzLmJlaGF2aW91cnMgPSBbXTtcblxuICAgIHRoaXMucCA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMudiA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMuYSA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMub2xkLnAgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLm9sZC52ID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5vbGQuYSA9IG5ldyBWZWN0b3IyRCgpO1xuXG4gICAgdGhpcy5yZ2IgPSBuZXcgUmdiKCk7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIGNvbmYgJiYgUHJvcFV0aWwuc2V0UHJvcCh0aGlzLCBjb25mKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHBhcnRpY2xlJ3MgbW92ZW1lbnQgaW4gZGVncmVlcy5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGRpcmVjdGlvbiBpbiBkZWdyZWVzXG4gICAqL1xuICBnZXREaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIodGhpcy52LngsIC10aGlzLnYueSkgKiBNYXRoVXRpbC5OMTgwX1BJO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgcGFydGljbGUgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG4gICAqIEByZXR1cm5zIHtQYXJ0aWNsZX0gVGhlIHBhcnRpY2xlIGluc3RhbmNlXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLmxpZmUgPSBJbmZpbml0eTtcbiAgICB0aGlzLmFnZSA9IDA7XG5cbiAgICB0aGlzLmRlYWQgPSBmYWxzZTtcbiAgICB0aGlzLnNsZWVwID0gZmFsc2U7XG4gICAgdGhpcy5ib2R5ID0gbnVsbDtcbiAgICB0aGlzLnNwcml0ZSA9IG51bGw7XG4gICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuXG4gICAgdGhpcy5lbmVyZ3kgPSAxOyAvLyBFbmVyZ3kgTG9zc1xuICAgIHRoaXMubWFzcyA9IDE7XG4gICAgdGhpcy5yYWRpdXMgPSAxMDtcbiAgICB0aGlzLmFscGhhID0gMTtcbiAgICB0aGlzLnNjYWxlID0gMTtcbiAgICB0aGlzLnJvdGF0aW9uID0gMDtcbiAgICB0aGlzLmNvbG9yID0gbnVsbDtcblxuICAgIHRoaXMucC5zZXQoMCwgMCk7XG4gICAgdGhpcy52LnNldCgwLCAwKTtcbiAgICB0aGlzLmEuc2V0KDAsIDApO1xuICAgIHRoaXMub2xkLnAuc2V0KDAsIDApO1xuICAgIHRoaXMub2xkLnYuc2V0KDAsIDApO1xuICAgIHRoaXMub2xkLmEuc2V0KDAsIDApO1xuICAgIHRoaXMuZWFzaW5nID0gZWFzZS5lYXNlTGluZWFyO1xuXG4gICAgdGhpcy5yZ2IucmVzZXQoKTtcbiAgICBVdGlsLmVtcHR5T2JqZWN0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwYXJ0aWNsZSdzIHN0YXRlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSBUaGUgdGltZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBwYXJ0aWNsZSBpbiBpdHMgcGFyZW50IHN5c3RlbVxuICAgKi9cbiAgdXBkYXRlKHRpbWUsIGluZGV4KSB7XG4gICAgaWYgKCF0aGlzLnNsZWVwKSB7XG4gICAgICB0aGlzLmFnZSArPSB0aW1lO1xuICAgICAgdGhpcy5hcHBseUJlaGF2aW91cnModGltZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFnZSA8IHRoaXMubGlmZSkge1xuICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLmVhc2luZyh0aGlzLmFnZSAvIHRoaXMubGlmZSk7XG4gICAgICB0aGlzLmVuZXJneSA9IE1hdGgubWF4KDEgLSBzY2FsZSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGFsbCBiZWhhdmlvdXJzIGF0dGFjaGVkIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgVGhlIHRpbWUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgcGFydGljbGUgaW4gaXRzIHBhcmVudCBzeXN0ZW1cbiAgICovXG4gIGFwcGx5QmVoYXZpb3Vycyh0aW1lLCBpbmRleCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuYmVoYXZpb3Vycy5sZW5ndGg7XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tpXSAmJiB0aGlzLmJlaGF2aW91cnNbaV0uYXBwbHlCZWhhdmlvdXIodGhpcywgdGltZSwgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgYmVoYXZpb3VyIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciBUaGUgYmVoYXZpb3VyIHRvIGFkZFxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuYmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICBpZiAoYmVoYXZpb3VyLmhhc093blByb3BlcnR5KFwicGFyZW50c1wiKSkgYmVoYXZpb3VyLnBhcmVudHMucHVzaCh0aGlzKTtcbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cltdfSBiZWhhdmlvdXJzIEFuIGFycmF5IG9mIGJlaGF2aW91cnMgdG8gYWRkXG4gICAqL1xuICBhZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICBjb25zdCBsZW5ndGggPSBiZWhhdmlvdXJzLmxlbmd0aDtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hZGRCZWhhdmlvdXIoYmVoYXZpb3Vyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBzcGVjaWZpYyBiZWhhdmlvdXIgZnJvbSB0aGUgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgVGhlIGJlaGF2aW91ciB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZUJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgYmVoYXZpb3VyID0gdGhpcy5iZWhhdmlvdXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBiZWhhdmlvdXIucGFyZW50cyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGJlaGF2aW91cnMgZnJvbSB0aGUgcGFydGljbGUuXG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZW1wdHlBcnJheSh0aGlzLmJlaGF2aW91cnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBwYXJ0aWNsZSwgcmVtb3ZpbmcgYWxsIGJlaGF2aW91cnMgYW5kIHNldHRpbmcgaXQgYXMgZGVhZC5cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG4gICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgIHRoaXMuZGVhZCA9IHRydWU7XG4gICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBAdHlwZWRlZiAge09iamVjdH0gcmdiT2JqZWN0XG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSByIHJlZCB2YWx1ZVxuICAgKiBAcHJvcGVydHkge051bWJlcn0gZyBncmVlbiB2YWx1ZVxuICAgKiBAcHJvcGVydHkge051bWJlcn0gYiBibHVlIHZhbHVlXG4gICAqL1xuICAvKipcbiAgICogY29udmVydHMgYSBoZXggdmFsdWUgdG8gYSByZ2Igb2JqZWN0XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBoZXhUb1JnYlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gaCBhbnkgaGV4IHZhbHVlLCBlLmcuICMwMDAwMDAgb3IgMDAwMDAwIGZvciBibGFja1xuICAgKlxuICAgKiBAcmV0dXJuIHtyZ2JPYmplY3R9XG4gICAqL1xuICBoZXhUb1JnYihoKSB7XG4gICAgY29uc3QgaGV4MTYgPSBoLmNoYXJBdCgwKSA9PT0gXCIjXCIgPyBoLnN1YnN0cmluZygxLCA3KSA6IGg7XG4gICAgY29uc3QgciA9IHBhcnNlSW50KGhleDE2LnN1YnN0cmluZygwLCAyKSwgMTYpO1xuICAgIGNvbnN0IGcgPSBwYXJzZUludChoZXgxNi5zdWJzdHJpbmcoMiwgNCksIDE2KTtcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoaGV4MTYuc3Vic3RyaW5nKDQsIDYpLCAxNik7XG5cbiAgICByZXR1cm4geyByLCBnLCBiIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIGNvbnZlcnRzIGEgcmdiIHZhbHVlIHRvIGEgcmdiIHN0cmluZ1xuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgcmdiVG9IZXhcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3QgfCBQcm90b24uaGV4VG9SZ2J9IHJnYiBhIHJnYiBvYmplY3QgbGlrZSBpbiB7QGxpbmsgUHJvdG9uI1Byb3Rvbi59XG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ30gcmdiKClcbiAgICovXG4gIHJnYlRvSGV4KHJiZykge1xuICAgIHJldHVybiBgcmdiKCR7cmJnLnJ9LCAke3JiZy5nfSwgJHtyYmcuYn0pYDtcbiAgfSxcblxuICBnZXRIZXgxNkZyb21QYXJ0aWNsZShwKSB7XG4gICAgcmV0dXJuIE51bWJlcihwLnJnYi5yKSAqIDY1NTM2ICsgTnVtYmVyKHAucmdiLmcpICogMjU2ICsgTnVtYmVyKHAucmdiLmIpO1xuICB9XG59O1xuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuL1ZlY3RvcjJEXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbGFyMkQge1xuICBjb25zdHJ1Y3RvcihyLCB0aGEpIHtcbiAgICB0aGlzLnIgPSBNYXRoLmFicyhyKSB8fCAwO1xuICAgIHRoaXMudGhhID0gdGhhIHx8IDA7XG4gIH1cblxuICBzZXQociwgdGhhKSB7XG4gICAgdGhpcy5yID0gcjtcbiAgICB0aGlzLnRoYSA9IHRoYTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFIocikge1xuICAgIHRoaXMuciA9IHI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRUaGEodGhhKSB7XG4gICAgdGhpcy50aGEgPSB0aGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb3B5KHApIHtcbiAgICB0aGlzLnIgPSBwLnI7XG4gICAgdGhpcy50aGEgPSBwLnRoYTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvVmVjdG9yKCkge1xuICAgIHJldHVybiBuZXcgVmVjdG9yMkQodGhpcy5nZXRYKCksIHRoaXMuZ2V0WSgpKTtcbiAgfVxuXG4gIGdldFgoKSB7XG4gICAgcmV0dXJuIHRoaXMuciAqIE1hdGguc2luKHRoaXMudGhhKTtcbiAgfVxuXG4gIGdldFkoKSB7XG4gICAgcmV0dXJuIC10aGlzLnIgKiBNYXRoLmNvcyh0aGlzLnRoYSk7XG4gIH1cblxuICBub3JtYWxpemUoKSB7XG4gICAgdGhpcy5yID0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVxdWFscyh2KSB7XG4gICAgcmV0dXJuIHYuciA9PT0gdGhpcy5yICYmIHYudGhhID09PSB0aGlzLnRoYTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuciA9IDAuMDtcbiAgICB0aGlzLnRoYSA9IDAuMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgUG9sYXIyRCh0aGlzLnIsIHRoaXMudGhhKTtcbiAgfVxufVxuIiwiY29uc3QgTWF0MyA9IHtcbiAgY3JlYXRlKG1hdDMpIHtcbiAgICBjb25zdCBtYXQgPSBuZXcgRmxvYXQzMkFycmF5KDkpO1xuICAgIGlmIChtYXQzKSB0aGlzLnNldChtYXQzLCBtYXQpO1xuXG4gICAgcmV0dXJuIG1hdDtcbiAgfSxcblxuICBzZXQobWF0MSwgbWF0Mikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTsgaSsrKSBtYXQyW2ldID0gbWF0MVtpXTtcblxuICAgIHJldHVybiBtYXQyO1xuICB9LFxuXG4gIG11bHRpcGx5KG1hdCwgbWF0MiwgbWF0Mykge1xuICAgIGxldCBhMDAgPSBtYXRbMF0sXG4gICAgICBhMDEgPSBtYXRbMV0sXG4gICAgICBhMDIgPSBtYXRbMl0sXG4gICAgICBhMTAgPSBtYXRbM10sXG4gICAgICBhMTEgPSBtYXRbNF0sXG4gICAgICBhMjAgPSBtYXRbNl0sXG4gICAgICBhMjEgPSBtYXRbN10sXG4gICAgICBiMDAgPSBtYXQyWzBdLFxuICAgICAgYjAxID0gbWF0MlsxXSxcbiAgICAgIGIwMiA9IG1hdDJbMl0sXG4gICAgICBiMTAgPSBtYXQyWzNdLFxuICAgICAgYjExID0gbWF0Mls0XSxcbiAgICAgIGIyMCA9IG1hdDJbNl0sXG4gICAgICBiMjEgPSBtYXQyWzddO1xuXG4gICAgbWF0M1swXSA9IGIwMCAqIGEwMCArIGIwMSAqIGExMDtcbiAgICBtYXQzWzFdID0gYjAwICogYTAxICsgYjAxICogYTExO1xuICAgIG1hdDNbMl0gPSBhMDIgKiBiMDI7XG4gICAgbWF0M1szXSA9IGIxMCAqIGEwMCArIGIxMSAqIGExMDtcbiAgICBtYXQzWzRdID0gYjEwICogYTAxICsgYjExICogYTExO1xuICAgIG1hdDNbNl0gPSBiMjAgKiBhMDAgKyBiMjEgKiBhMTAgKyBhMjA7XG4gICAgbWF0M1s3XSA9IGIyMCAqIGEwMSArIGIyMSAqIGExMSArIGEyMTtcblxuICAgIHJldHVybiBtYXQzO1xuICB9LFxuXG4gIGludmVyc2UobWF0LCBtYXQzKSB7XG4gICAgbGV0IGEwMCA9IG1hdFswXSxcbiAgICAgIGEwMSA9IG1hdFsxXSxcbiAgICAgIGExMCA9IG1hdFszXSxcbiAgICAgIGExMSA9IG1hdFs0XSxcbiAgICAgIGEyMCA9IG1hdFs2XSxcbiAgICAgIGEyMSA9IG1hdFs3XSxcbiAgICAgIGIwMSA9IGExMSxcbiAgICAgIGIxMSA9IC1hMTAsXG4gICAgICBiMjEgPSBhMjEgKiBhMTAgLSBhMTEgKiBhMjAsXG4gICAgICBkID0gYTAwICogYjAxICsgYTAxICogYjExLFxuICAgICAgaWQ7XG5cbiAgICBpZCA9IDEgLyBkO1xuICAgIG1hdDNbMF0gPSBiMDEgKiBpZDtcbiAgICBtYXQzWzFdID0gLWEwMSAqIGlkO1xuICAgIG1hdDNbM10gPSBiMTEgKiBpZDtcbiAgICBtYXQzWzRdID0gYTAwICogaWQ7XG4gICAgbWF0M1s2XSA9IGIyMSAqIGlkO1xuICAgIG1hdDNbN10gPSAoLWEyMSAqIGEwMCArIGEwMSAqIGEyMCkgKiBpZDtcblxuICAgIHJldHVybiBtYXQzO1xuICB9LFxuXG4gIG11bHRpcGx5VmVjMihtLCB2ZWMsIG1hdDMpIHtcbiAgICBsZXQgeCA9IHZlY1swXSxcbiAgICAgIHkgPSB2ZWNbMV07XG5cbiAgICBtYXQzWzBdID0geCAqIG1bMF0gKyB5ICogbVszXSArIG1bNl07XG4gICAgbWF0M1sxXSA9IHggKiBtWzFdICsgeSAqIG1bNF0gKyBtWzddO1xuXG4gICAgcmV0dXJuIG1hdDM7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1hdDM7XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFycmF5U3BhbiBleHRlbmRzIFNwYW4ge1xuICBjb25zdHJ1Y3Rvcihjb2xvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fYXJyID0gVXRpbC50b0FycmF5KGNvbG9yKTtcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIGNvbnN0IHZhbCA9IFV0aWwuZ2V0UmFuZEZyb21BcnJheSh0aGlzLl9hcnIpO1xuICAgIHJldHVybiB2YWwgPT09IFwicmFuZG9tXCIgfHwgdmFsID09PSBcIlJhbmRvbVwiID8gTWF0aFV0aWwucmFuZG9tQ29sb3IoKSA6IHZhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHN1cmUgdGhhdCB0aGUgY29sb3IgaXMgYW4gaW5zdGFuY2Ugb2YgUHJvdG9uLkFycmF5U3BhbiwgaWYgbm90IGl0IG1ha2VzIGEgbmV3IGluc3RhbmNlXG4gICAqXG4gICAqIEBtZXRob2Qgc2V0U3BhblZhbHVlXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbG9yXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVBcnJheVNwYW4oYXJyKSB7XG4gICAgaWYgKCFhcnIpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKGFyciBpbnN0YW5jZW9mIEFycmF5U3BhbikgcmV0dXJuIGFycjtcbiAgICBlbHNlIHJldHVybiBuZXcgQXJyYXlTcGFuKGFycik7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlY3RhbmdsZSB7XG4gIGNvbnN0cnVjdG9yKHgsIHksIHcsIGgpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG5cbiAgICB0aGlzLndpZHRoID0gdztcbiAgICB0aGlzLmhlaWdodCA9IGg7XG5cbiAgICB0aGlzLmJvdHRvbSA9IHRoaXMueSArIHRoaXMuaGVpZ2h0O1xuICAgIHRoaXMucmlnaHQgPSB0aGlzLnggKyB0aGlzLndpZHRoO1xuICB9XG5cbiAgY29udGFpbnMoeCwgeSkge1xuICAgIGlmICh4IDw9IHRoaXMucmlnaHQgJiYgeCA+PSB0aGlzLnggJiYgeSA8PSB0aGlzLmJvdHRvbSAmJiB5ID49IHRoaXMueSkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5cbi8qKlxuICogUmF0ZSBjbGFzcyBmb3IgY29udHJvbGxpbmcgcGFydGljbGUgZW1pc3Npb24gcmF0ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmF0ZSB7XG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIG51bVBhbjtcblxuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0aW1lUGFuO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhcnRUaW1lO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgbmV4dFRpbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUmF0ZSBpbnN0YW5jZS5cbiAgICogVGhlIG51bWJlciBvZiBwYXJ0aWNsZXMgcGVyIHNlY29uZCBlbWlzc2lvbiAoYSBbcGFydGljbGVdL2IgW3NdKS5cbiAgICogQHBhcmFtIHtBcnJheXxudW1iZXJ8U3Bhbn0gW251bXBhbj0xXSAtIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIGZvciBlYWNoIGVtaXNzaW9uLlxuICAgKiBAcGFyYW0ge0FycmF5fG51bWJlcnxTcGFufSBbdGltZXBhbj0xXSAtIFRoZSB0aW1lIGludGVydmFsIGJldHdlZW4gZWFjaCBlbWlzc2lvbi5cbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ3JlYXRlIGEgcmF0ZSBvZiAxMC0yMCBwYXJ0aWNsZXMgZXZlcnkgMC4xLTAuMjUgc2Vjb25kc1xuICAgKiBuZXcgUmF0ZShuZXcgU3BhbigxMCwgMjApLCBuZXcgU3BhbigwLjEsIDAuMjUpKTtcbiAgICovXG4gIGNvbnN0cnVjdG9yKG51bXBhbiwgdGltZXBhbikge1xuICAgIHRoaXMubnVtUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUobnVtcGFuLCAxKSk7XG4gICAgdGhpcy50aW1lUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUodGltZXBhbiwgMSkpO1xuXG4gICAgdGhpcy5zdGFydFRpbWUgPSAwO1xuICAgIHRoaXMubmV4dFRpbWUgPSAwO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSByYXRlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaW5pdCgpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IDA7XG4gICAgdGhpcy5uZXh0VGltZSA9IHRoaXMudGltZVBhbi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBwYXJ0aWNsZXMgdG8gZW1pdCBiYXNlZCBvbiB0aGUgZWxhcHNlZCB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFRoZSBlbGFwc2VkIHRpbWUgc2luY2UgdGhlIGxhc3QgdXBkYXRlLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0LlxuICAgKi9cbiAgZ2V0VmFsdWUodGltZSkge1xuICAgIHRoaXMuc3RhcnRUaW1lICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5zdGFydFRpbWUgPj0gdGhpcy5uZXh0VGltZSkge1xuICAgICAgdGhpcy5zdGFydFRpbWUgPSAwO1xuICAgICAgdGhpcy5uZXh0VGltZSA9IHRoaXMudGltZVBhbi5nZXRWYWx1ZSgpO1xuXG4gICAgICBpZiAodGhpcy5udW1QYW4uYiA9PT0gMSkge1xuICAgICAgICBpZiAodGhpcy5udW1QYW4uZ2V0VmFsdWUoZmFsc2UpID4gMC41KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm51bVBhbi5nZXRWYWx1ZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5pdGlhbGl6ZSB7XG4gIHJlc2V0KCkge31cblxuICBpbml0KGVtaXR0ZXIsIHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemUocGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxpemUoZW1pdHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3ViIGNsYXNzIGluaXRcbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHt9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbi8qKlxuICogTGlmZSBjbGFzcyBmb3IgaW5pdGlhbGl6aW5nIHBhcnRpY2xlIGxpZmV0aW1lLlxuICogQGV4dGVuZHMgSW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGxpZmVQYW47XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IExpZmUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IGEgLSBUaGUgbGlmZXRpbWUgdmFsdWUgb3IgdGhlIGxvd2VyIGJvdW5kIG9mIHRoZSBsaWZldGltZSByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtiXSAtIFRoZSB1cHBlciBib3VuZCBvZiB0aGUgbGlmZXRpbWUgcmFuZ2UgKGlmIGEgaXMgYSBudW1iZXIpLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjXSAtIFdoZXRoZXIgdG8gdXNlIGNlbnRlci1iYXNlZCBjYWxjdWxhdGlvbiAoaWYgYSBhbmQgYiBhcmUgbnVtYmVycykuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMubGlmZVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICAgIHRoaXMubmFtZSA9IFwiTGlmZVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBsaWZldGltZSBvZiBhIHRhcmdldCBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCAtIFRoZSB0YXJnZXQgcGFydGljbGUgdG8gaW5pdGlhbGl6ZS5cbiAgICovXG4gIGluaXRpYWxpemUodGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMubGlmZVBhbi5hID09PSBJbmZpbml0eSkgdGFyZ2V0LmxpZmUgPSBJbmZpbml0eTtcbiAgICBlbHNlIHRhcmdldC5saWZlID0gdGhpcy5saWZlUGFuLmdldFZhbHVlKCk7XG4gIH1cbn1cbiIsImltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBab25lIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy52ZWN0b3IgPSBuZXcgVmVjdG9yMkQoMCwgMCk7XG4gICAgdGhpcy5yYW5kb20gPSAwO1xuICAgIHRoaXMuY3Jvc3NUeXBlID0gXCJkZWFkXCI7XG4gICAgdGhpcy5hbGVydCA9IHRydWU7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHt9XG5cbiAgY3Jvc3NpbmcocGFydGljbGUpIHt9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnZlY3RvciA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcG9pbnQgem9uZSBpbiBhIDJEIHNwYWNlLlxuICogQGV4dGVuZHMgWm9uZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2ludFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUG9pbnRab25lLlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMueCA9IHg7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIHBvaW50LlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBBbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwb3NpdGlvbiB2ZWN0b3IuXG4gICAqL1xuICBnZXRQb3NpdGlvbigpIHtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54O1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnk7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBmb3IgUG9pbnRab25lLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgb2JqZWN0ICh1bnVzZWQpLlxuICAgKi9cbiAgY3Jvc3NpbmcocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5hbGVydCkge1xuICAgICAgY29uc29sZS5lcnJvcihcIlNvcnJ5LCBQb2ludFpvbmUgZG9lcyBub3Qgc3VwcG9ydCBjcm9zc2luZyBtZXRob2QhXCIpO1xuICAgICAgdGhpcy5hbGVydCA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBQb2ludFpvbmUgZnJvbSBcIi4uL3pvbmUvUG9pbnRab25lXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbi8qKlxuICogUG9zaXRpb24gY2xhc3MgZm9yIGluaXRpYWxpemluZyBwYXJ0aWNsZSBwb3NpdGlvbnMuXG4gKiBAZXh0ZW5kcyBJbml0aWFsaXplXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvc2l0aW9uIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIC8qKlxuICAgKiBAdHlwZSB7UG9pbnRab25lfGFueX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHpvbmU7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBvc2l0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge1BvaW50Wm9uZXxhbnl9IFt6b25lXSAtIFRoZSB6b25lIHRvIHVzZSBmb3IgcG9zaXRpb25pbmcuIERlZmF1bHRzIHRvIGEgbmV3IFBvaW50Wm9uZSBpZiBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih6b25lKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnpvbmUgPSBVdGlsLmluaXRWYWx1ZSh6b25lLCBuZXcgUG9pbnRab25lKCkpO1xuICAgIHRoaXMubmFtZSA9IFwiUG9zaXRpb25cIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhpcyBpbml0aWFsaXplcidzIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7UG9pbnRab25lfGFueX0gW3pvbmVdIC0gVGhlIG5ldyB6b25lIHRvIHVzZSBmb3IgcG9zaXRpb25pbmcuIERlZmF1bHRzIHRvIGEgbmV3IFBvaW50Wm9uZSBpZiBub3QgcHJvdmlkZWQuXG4gICAqL1xuICByZXNldCh6b25lKSB7XG4gICAgdGhpcy56b25lID0gVXRpbC5pbml0VmFsdWUoem9uZSwgbmV3IFBvaW50Wm9uZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgcGFydGljbGUncyBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0LnAgLSBUaGUgcGFydGljbGUncyBwb3NpdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXQucC54IC0gVGhlIHBhcnRpY2xlJ3MgeCBjb29yZGluYXRlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0LnAueSAtIFRoZSBwYXJ0aWNsZSdzIHkgY29vcmRpbmF0ZS5cbiAgICovXG4gIGluaXRpYWxpemUodGFyZ2V0KSB7XG4gICAgdGhpcy56b25lLmdldFBvc2l0aW9uKCk7XG5cbiAgICB0YXJnZXQucC54ID0gdGhpcy56b25lLnZlY3Rvci54O1xuICAgIHRhcmdldC5wLnkgPSB0aGlzLnpvbmUudmVjdG9yLnk7XG4gIH1cbn1cbiIsImltcG9ydCBQcm90b24gZnJvbSBcIi4uL2NvcmUvUHJvdG9uXCI7XG5pbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuaW1wb3J0IFBvbGFyMkQgZnJvbSBcIi4uL21hdGgvUG9sYXIyRFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbi8qKlxuICogVmVsb2NpdHkgY2xhc3MgZm9yIGluaXRpYWxpemluZyBwYXJ0aWNsZSB2ZWxvY2l0aWVzLlxuICogQGV4dGVuZHMgSW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2l0eSBleHRlbmRzIEluaXRpYWxpemUge1xuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByUGFuO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHRoYVBhbjtcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgVmVsb2NpdHkgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFtycGFuXSAtIFRoZSByYWRpYWwgY29tcG9uZW50IG9mIHRoZSB2ZWxvY2l0eSBvciBpdHMgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFt0aGFwYW5dIC0gVGhlIGFuZ3VsYXIgY29tcG9uZW50IG9mIHRoZSB2ZWxvY2l0eSBvciBpdHMgcmFuZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZT0ndmVjdG9yJ10gLSBUaGUgdHlwZSBvZiB2ZWxvY2l0eSAoJ3ZlY3Rvcicgb3IgJ3BvbGFyJykuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihycGFuLCB0aGFwYW4sIHR5cGUpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5yUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUocnBhbik7XG4gICAgdGhpcy50aGFQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZSh0aGFwYW4pO1xuICAgIHRoaXMudHlwZSA9IFV0aWwuaW5pdFZhbHVlKHR5cGUsIFwidmVjdG9yXCIpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJWZWxvY2l0eVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgdmVsb2NpdHkgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW3JwYW5dIC0gVGhlIHJhZGlhbCBjb21wb25lbnQgb2YgdGhlIHZlbG9jaXR5IG9yIGl0cyByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW3RoYXBhbl0gLSBUaGUgYW5ndWxhciBjb21wb25lbnQgb2YgdGhlIHZlbG9jaXR5IG9yIGl0cyByYW5nZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlPSd2ZWN0b3InXSAtIFRoZSB0eXBlIG9mIHZlbG9jaXR5ICgndmVjdG9yJyBvciAncG9sYXInKS5cbiAgICovXG4gIHJlc2V0KHJwYW4sIHRoYXBhbiwgdHlwZSkge1xuICAgIHRoaXMuclBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHJwYW4pO1xuICAgIHRoaXMudGhhUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUodGhhcGFuKTtcbiAgICB0aGlzLnR5cGUgPSBVdGlsLmluaXRWYWx1ZSh0eXBlLCBcInZlY3RvclwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIHRoZSB2ZWxvY2l0eSB2YWx1ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHZyIC0gVGhlIHZlbG9jaXR5IHZhbHVlIHRvIG5vcm1hbGl6ZS5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG5vcm1hbGl6ZWQgdmVsb2NpdHkgdmFsdWUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBub3JtYWxpemVWZWxvY2l0eSh2cikge1xuICAgIHJldHVybiB2ciAqIFByb3Rvbi5NRUFTVVJFO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwYXJ0aWNsZSdzIHZlbG9jaXR5LlxuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0IC0gVGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUuXG4gICAqL1xuICBpbml0aWFsaXplKHRhcmdldCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFwicFwiIHx8IHRoaXMudHlwZSA9PT0gXCJQXCIgfHwgdGhpcy50eXBlID09PSBcInBvbGFyXCIpIHtcbiAgICAgIGNvbnN0IHBvbGFyMmQgPSBuZXcgUG9sYXIyRChcbiAgICAgICAgdGhpcy5ub3JtYWxpemVWZWxvY2l0eSh0aGlzLnJQYW4uZ2V0VmFsdWUoKSksXG4gICAgICAgIHRoaXMudGhhUGFuLmdldFZhbHVlKCkgKiBNYXRoVXRpbC5QSV8xODBcbiAgICAgICk7XG5cbiAgICAgIHRhcmdldC52LnggPSBwb2xhcjJkLmdldFgoKTtcbiAgICAgIHRhcmdldC52LnkgPSBwb2xhcjJkLmdldFkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0LnYueCA9IHRoaXMubm9ybWFsaXplVmVsb2NpdHkodGhpcy5yUGFuLmdldFZhbHVlKCkpO1xuICAgICAgdGFyZ2V0LnYueSA9IHRoaXMubm9ybWFsaXplVmVsb2NpdHkodGhpcy50aGFQYW4uZ2V0VmFsdWUoKSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbi8qKlxuICogTWFzcyBjbGFzcyBmb3IgaW5pdGlhbGl6aW5nIHBhcnRpY2xlIG1hc3MuXG4gKiBAZXh0ZW5kcyBJbml0aWFsaXplXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hc3MgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgbWFzc1BhbjtcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTWFzcyBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gYSAtIFRoZSBtYXNzIHZhbHVlIG9yIHRoZSBsb3dlciBib3VuZCBvZiB0aGUgbWFzcyByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtiXSAtIFRoZSB1cHBlciBib3VuZCBvZiB0aGUgbWFzcyByYW5nZSAoaWYgYSBpcyBhIG51bWJlcikuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NdIC0gV2hldGhlciB0byB1c2UgY2VudGVyLWJhc2VkIGNhbGN1bGF0aW9uIChpZiBhIGFuZCBiIGFyZSBudW1iZXJzKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubWFzc1BhbiA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICAgIHRoaXMubmFtZSA9IFwiTWFzc1wiO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBtYXNzIG9mIGEgdGFyZ2V0IHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0IC0gVGhlIHRhcmdldCBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKi9cbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHtcbiAgICB0YXJnZXQubWFzcyA9IHRoaXMubWFzc1Bhbi5nZXRWYWx1ZSgpO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbi8qKlxuICogUmFkaXVzIGNsYXNzIGZvciBpbml0aWFsaXppbmcgcGFydGljbGUgcmFkaXVzLlxuICogQGV4dGVuZHMgSW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYWRpdXMgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKi9cbiAgcmFkaXVzO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSYWRpdXMgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IGEgLSBUaGUgcmFkaXVzIHZhbHVlIG9yIHRoZSBsb3dlciBib3VuZCBvZiB0aGUgcmFkaXVzIHJhbmdlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2JdIC0gVGhlIHVwcGVyIGJvdW5kIG9mIHRoZSByYWRpdXMgcmFuZ2UgKGlmIGEgaXMgYSBudW1iZXIpLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjXSAtIFdoZXRoZXIgdG8gdXNlIGNlbnRlci1iYXNlZCBjYWxjdWxhdGlvbiAoaWYgYSBhbmQgYiBhcmUgbnVtYmVycykuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJhZGl1cyA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICAgIHRoaXMubmFtZSA9IFwiUmFkaXVzXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoaXMgaW5pdGlhbGl6ZXIncyBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge251bWJlcnxTcGFufSBhIC0gVGhlIHJhZGl1cyB2YWx1ZSBvciB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIHJhZGl1cyByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtiXSAtIFRoZSB1cHBlciBib3VuZCBvZiB0aGUgcmFkaXVzIHJhbmdlIChpZiBhIGlzIGEgbnVtYmVyKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbY10gLSBXaGV0aGVyIHRvIHVzZSBjZW50ZXItYmFzZWQgY2FsY3VsYXRpb24gKGlmIGEgYW5kIGIgYXJlIG51bWJlcnMpLlxuICAgKi9cbiAgcmVzZXQoYSwgYiwgYykge1xuICAgIHRoaXMucmFkaXVzID0gU3Bhbi5zZXRTcGFuVmFsdWUoYSwgYiwgYyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHBhcnRpY2xlJ3MgcmFkaXVzLlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnJhZGl1cyA9IHRoaXMucmFkaXVzLmdldFZhbHVlKCk7XG4gICAgcGFydGljbGUuZGF0YS5vbGRSYWRpdXMgPSBwYXJ0aWNsZS5yYWRpdXM7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQXJyYXlTcGFuIGZyb20gXCIuLi9tYXRoL0FycmF5U3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG4vKipcbiAqIEJvZHkgY2xhc3MgZm9yIGluaXRpYWxpemluZyBwYXJ0aWNsZSBib2RpZXMuXG4gKiBAZXh0ZW5kcyBJbml0aWFsaXplXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHkgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtBcnJheVNwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBpbWFnZTtcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQm9keSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fEFycmF5U3Bhbn0gaW1hZ2UgLSBUaGUgaW1hZ2Ugc291cmNlIG9yIG9iamVjdCB0byB1c2UgZm9yIHRoZSBwYXJ0aWNsZSBib2R5LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3c9MjBdIC0gVGhlIHdpZHRoIG9mIHRoZSBwYXJ0aWNsZSBib2R5LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2hdIC0gVGhlIGhlaWdodCBvZiB0aGUgcGFydGljbGUgYm9keS4gRGVmYXVsdHMgdG8gdGhlIHdpZHRoIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGltYWdlLCB3LCBoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaW1hZ2UgPSB0aGlzLnNldFNwYW5WYWx1ZShpbWFnZSk7XG4gICAgdGhpcy53ID0gVXRpbC5pbml0VmFsdWUodywgMjApO1xuICAgIHRoaXMuaCA9IFV0aWwuaW5pdFZhbHVlKGgsIHRoaXMudyk7XG4gICAgdGhpcy5uYW1lID0gXCJCb2R5XCI7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHBhcnRpY2xlJ3MgYm9keS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUuXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgaW1hZ2VUYXJnZXQgPSB0aGlzLmltYWdlLmdldFZhbHVlKCk7XG5cbiAgICBpZiAodHlwZW9mIGltYWdlVGFyZ2V0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0ge1xuICAgICAgICB3aWR0aDogdGhpcy53LFxuICAgICAgICBoZWlnaHQ6IHRoaXMuaCxcbiAgICAgICAgc3JjOiBpbWFnZVRhcmdldCxcbiAgICAgICAgaXNJbm5lcjogdHJ1ZSxcbiAgICAgICAgaW5uZXI6IHRydWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSBpbWFnZVRhcmdldDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3BhbiB2YWx1ZSBmb3IgdGhlIGltYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R8QXJyYXlTcGFufSBpbWFnZSAtIFRoZSBpbWFnZSBzb3VyY2Ugb3Igb2JqZWN0IHRvIHNldCBhcyBzcGFuIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7QXJyYXlTcGFufSBUaGUgQXJyYXlTcGFuIGluc3RhbmNlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2V0U3BhblZhbHVlKGltYWdlKSB7XG4gICAgcmV0dXJuIGltYWdlIGluc3RhbmNlb2YgQXJyYXlTcGFuID8gaW1hZ2UgOiBuZXcgQXJyYXlTcGFuKGltYWdlKTtcbiAgfVxufVxuIiwiaW1wb3J0IFByb3RvbiBmcm9tIFwiLi4vY29yZS9Qcm90b25cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgZWFzZSBmcm9tIFwiLi4vbWF0aC9lYXNlXCI7XG5cbi8qKlxuICogVGhlIEJlaGF2aW91ciBjbGFzcyBpcyB0aGUgYmFzZSBmb3IgdGhlIG90aGVyIEJlaGF2aW91clxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJlaGF2aW91ciB7XG4gIHN0YXRpYyBpZCA9IDA7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBCZWhhdmlvdXIgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoZSBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZWFzaW5nPSdlYXNlTGluZWFyJ10gLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmQsIGZvciBleGFtcGxlIGVhc2UuZWFzZU91dFF1YXJ0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihsaWZlLCBlYXNpbmcpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgYmVoYXZpb3VyJ3MgbGlmZVxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5saWZlID0gVXRpbC5pbml0VmFsdWUobGlmZSwgSW5maW5pdHkpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJlaGF2aW91cidzIGVhc2luZyBmdW5jdGlvblxuICAgICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICAgKi9cbiAgICB0aGlzLmVhc2luZyA9IGVhc2UuZ2V0RWFzaW5nKGVhc2luZyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmVoYXZpb3VyJ3MgY3VycmVudCBhZ2VcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuYWdlID0gMDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiZWhhdmlvdXIncyBjdXJyZW50IGVuZXJneVxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5lbmVyZ3kgPSAxO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgYmVoYXZpb3VyIGlzIGRlYWRcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmRlYWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiZWhhdmlvdXIncyBwYXJlbnQgZW1pdHRlcnNcbiAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5wYXJlbnRzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmVoYXZpb3VyJ3MgdW5pcXVlIGlkXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmlkID0gYEJlaGF2aW91cl8ke0JlaGF2aW91ci5pZCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmVoYXZpb3VyJ3MgbmFtZVxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gXCJCZWhhdmlvdXJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoaXMgYmVoYXZpb3VyJ3MgbmV3IGxpZmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2VMaW5lYXInXSAtIFRoaXMgYmVoYXZpb3VyJ3MgbmV3IGVhc2luZ1xuICAgKi9cbiAgcmVzZXQobGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5saWZlID0gVXRpbC5pbml0VmFsdWUobGlmZSwgSW5maW5pdHkpO1xuICAgIHRoaXMuZWFzaW5nID0gZWFzZS5nZXRFYXNpbmcoZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgYSBmb3JjZSBieSAxOjEwMFxuICAgKiBAcGFyYW0ge1Byb3Rvbi5WZWN0b3IyRH0gZm9yY2UgLSBUaGUgZm9yY2UgdG8gbm9ybWFsaXplXG4gICAqIEByZXR1cm5zIHtQcm90b24uVmVjdG9yMkR9IFRoZSBub3JtYWxpemVkIGZvcmNlXG4gICAqL1xuICBub3JtYWxpemVGb3JjZShmb3JjZSkge1xuICAgIHJldHVybiBmb3JjZS5tdWx0aXBseVNjYWxhcihQcm90b24uTUVBU1VSRSk7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplIGEgdmFsdWUgYnkgMToxMDBcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIG5vcm1hbGl6ZVxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbm9ybWFsaXplZCB2YWx1ZVxuICAgKi9cbiAgbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgKiBQcm90b24uTUVBU1VSRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzIGZvciBhIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7fVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSBiZWhhdmlvdXIncyBsaWZlIGN5Y2xlXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBjYWxjdWxhdGUgZm9yXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBjYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5hZ2UgKz0gdGltZTtcblxuICAgIGlmICh0aGlzLmFnZSA+PSB0aGlzLmxpZmUgfHwgdGhpcy5kZWFkKSB7XG4gICAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNjYWxlID0gdGhpcy5lYXNpbmcocGFydGljbGUuYWdlIC8gcGFydGljbGUubGlmZSk7XG4gICAgICB0aGlzLmVuZXJneSA9IE1hdGgubWF4KDEgLSBzY2FsZSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIHRvIGEgcGFydGljbGVcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG9cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBUaGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveSB0aGlzIGJlaGF2aW91clxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBsZXQgaSA9IHRoaXMucGFyZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5wYXJlbnRzW2ldLnJlbW92ZUJlaGF2aW91cih0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhcmVudHMubGVuZ3RoID0gMDtcbiAgfVxufVxuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JjZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uRm9yY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZ4XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmeCwgZnksIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLmZvcmNlID0gdGhpcy5ub3JtYWxpemVGb3JjZShuZXcgVmVjdG9yMkQoZngsIGZ5KSk7XG4gICAgdGhpcy5uYW1lID0gXCJGb3JjZVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkZvcmNlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gZnhcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZ5XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoZngsIGZ5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmZvcmNlID0gdGhpcy5ub3JtYWxpemVGb3JjZShuZXcgVmVjdG9yMkQoZngsIGZ5KSk7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkZvcmNlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG4gICAgcGFydGljbGUuYS5hZGQodGhpcy5mb3JjZSk7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbi8qKlxuICogQXR0cmFjdGlvbiBiZWhhdmlvciBmb3IgcGFydGljbGVzLlxuICogVGhpcyBiZWhhdmlvdXIgbWFrZXMgcGFydGljbGVzIGZvbGxvdyBhIHNwZWNpZmljIHRhcmdldCBwb3NpdGlvbi5cbiAqIEBleHRlbmRzIEJlaGF2aW91clxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdHRyYWN0aW9uIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQXR0cmFjdGlvbi5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb24gLSBUaGUgYXR0cmFjdGlvbiBwb2ludCBjb29yZGluYXRlcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtmb3JjZT0xMDBdIC0gVGhlIHN0cmVuZ3RoIG9mIHRoZSBhdHRyYWN0aW9uIGZvcmNlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl1cz0xMDAwXSAtIFRoZSByYWRpdXMgb2YgaW5mbHVlbmNlIGZvciB0aGUgYXR0cmFjdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoZSBsaWZlIHNwYW4gb2YgdGhpcyBiZWhhdmlvdXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZWFzaW5nPSdlYXNlLmVhc2VMaW5lYXInXSAtIFRoZSBlYXNpbmcgZnVuY3Rpb24gZm9yIHRoaXMgYmVoYXZpb3VyLlxuICAgKi9cbiAgY29uc3RydWN0b3IodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGFyZ2V0IHBvc2l0aW9uIGZvciBhdHRyYWN0aW9uLlxuICAgICAqIEB0eXBlIHtWZWN0b3IyRH1cbiAgICAgKi9cbiAgICB0aGlzLnRhcmdldFBvc2l0aW9uID0gVXRpbC5pbml0VmFsdWUodGFyZ2V0UG9zaXRpb24sIG5ldyBWZWN0b3IyRCgpKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSByYWRpdXMgb2YgaW5mbHVlbmNlIGZvciB0aGUgYXR0cmFjdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMucmFkaXVzID0gVXRpbC5pbml0VmFsdWUocmFkaXVzLCAxMDAwKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzdHJlbmd0aCBvZiB0aGUgYXR0cmFjdGlvbiBmb3JjZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZm9yY2UgPSBVdGlsLmluaXRWYWx1ZSh0aGlzLm5vcm1hbGl6ZVZhbHVlKGZvcmNlKSwgMTAwKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzcXVhcmVkIHJhZGl1cyAoZm9yIG9wdGltaXphdGlvbikuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnJhZGl1c1NxID0gdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcblxuICAgIC8qKlxuICAgICAqIFRoZSBhdHRyYWN0aW9uIGZvcmNlIHZlY3Rvci5cbiAgICAgKiBAdHlwZSB7VmVjdG9yMkR9XG4gICAgICovXG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UgPSBuZXcgVmVjdG9yMkQoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzcXVhcmVkIGxlbmd0aCBvZiB0aGUgYXR0cmFjdGlvbiBmb3JjZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGVuZ3RoU3EgPSAwO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGJlaGF2aW91ci5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IFwiQXR0cmFjdGlvblwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb24gLSBUaGUgbmV3IGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZm9yY2U9MTAwXSAtIFRoZSBuZXcgc3RyZW5ndGggb2YgdGhlIGF0dHJhY3Rpb24gZm9yY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXVzPTEwMDBdIC0gVGhlIG5ldyByYWRpdXMgb2YgaW5mbHVlbmNlIGZvciB0aGUgYXR0cmFjdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoZSBuZXcgbGlmZSBzcGFuIG9mIHRoaXMgYmVoYXZpb3VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZS5lYXNlTGluZWFyJ10gLSBUaGUgbmV3IGVhc2luZyBmdW5jdGlvbiBmb3IgdGhpcyBiZWhhdmlvdXIuXG4gICAqL1xuICByZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy50YXJnZXRQb3NpdGlvbiA9IFV0aWwuaW5pdFZhbHVlKHRhcmdldFBvc2l0aW9uLCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5yYWRpdXMgPSBVdGlsLmluaXRWYWx1ZShyYWRpdXMsIDEwMDApO1xuICAgIHRoaXMuZm9yY2UgPSBVdGlsLmluaXRWYWx1ZSh0aGlzLm5vcm1hbGl6ZVZhbHVlKGZvcmNlKSwgMTAwKTtcbiAgICB0aGlzLnJhZGl1c1NxID0gdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZSA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMubGVuZ3RoU3EgPSAwO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhpcyBiZWhhdmlvdXIgdG8gYSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0by5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBUaGUgY3VycmVudCBzaW11bGF0aW9uIHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgcGFydGljbGUuXG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UuY29weSh0aGlzLnRhcmdldFBvc2l0aW9uKTtcbiAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5zdWIocGFydGljbGUucCk7XG4gICAgdGhpcy5sZW5ndGhTcSA9IHRoaXMuYXR0cmFjdGlvbkZvcmNlLmxlbmd0aFNxKCk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGhTcSA+IDAuMDAwMDQgJiYgdGhpcy5sZW5ndGhTcSA8IHRoaXMucmFkaXVzU3EpIHtcbiAgICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLm5vcm1hbGl6ZSgpO1xuICAgICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UubXVsdGlwbHlTY2FsYXIoMSAtIHRoaXMubGVuZ3RoU3EgLyB0aGlzLnJhZGl1c1NxKTtcbiAgICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLm11bHRpcGx5U2NhbGFyKHRoaXMuZm9yY2UpO1xuXG4gICAgICBwYXJ0aWNsZS5hLmFkZCh0aGlzLmF0dHJhY3Rpb25Gb3JjZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFuZG9tRHJpZnQgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBCZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBSYW5kb21EcmlmdFxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gZHJpZnRYIFx0XHRcdFx0WCB2YWx1ZSBvZiB0aGUgbmV3IFZlY3RvcjJEXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkcmlmdFkgIFx0XHRcdFx0WSB2YWx1ZSBvZiB0aGUgbmV3IFZlY3RvcjJEXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkZWxheSBcdFx0XHRcdEhvdyBtdWNoIGRlbGF5IHRoZSBkcmlmdCBzaG91bGQgaGF2ZVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge051bWJlcn0gdGltZSBUaGUgdGltZSBvZiB0aGUgZHJpZnRcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkcmlmdFgsIGRyaWZ0WSwgZGVsYXksIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGRyaWZ0WCwgZHJpZnRZLCBkZWxheSk7XG4gICAgdGhpcy50aW1lID0gMDtcbiAgICB0aGlzLm5hbWUgPSBcIlJhbmRvbURyaWZ0XCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNSYW5kb21EcmlmdFxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WCBcdFx0XHRcdFggdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZHJpZnRZICBcdFx0XHRcdFkgdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVsYXkgXHRcdFx0XHRIb3cgbXVjaCBkZWxheSB0aGUgZHJpZnQgc2hvdWxkIGhhdmVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGRyaWZ0WCwgZHJpZnRZLCBkZWxheSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5wYW5Gb2NlID0gbmV3IFZlY3RvcjJEKGRyaWZ0WCwgZHJpZnRZKTtcbiAgICB0aGlzLnBhbkZvY2UgPSB0aGlzLm5vcm1hbGl6ZUZvcmNlKHRoaXMucGFuRm9jZSk7XG4gICAgdGhpcy5kZWxheSA9IGRlbGF5O1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmRhdGEudGltZSA9IDA7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUmFuZG9tRHJpZnRcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0XHR0aW1lIHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSBcdFx0XHRpbmRleCB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG4gICAgcGFydGljbGUuZGF0YS50aW1lICs9IHRpbWU7XG5cbiAgICBpZiAocGFydGljbGUuZGF0YS50aW1lID49IHRoaXMuZGVsYXkpIHtcbiAgICAgIHBhcnRpY2xlLmEuYWRkWFkoXG4gICAgICAgIE1hdGhVdGlsLnJhbmRvbUFUb0IoLXRoaXMucGFuRm9jZS54LCB0aGlzLnBhbkZvY2UueCksXG4gICAgICAgIE1hdGhVdGlsLnJhbmRvbUFUb0IoLXRoaXMucGFuRm9jZS55LCB0aGlzLnBhbkZvY2UueSlcbiAgICAgICk7XG5cbiAgICAgIHBhcnRpY2xlLmRhdGEudGltZSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgRm9yY2UgZnJvbSBcIi4vRm9yY2VcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3Jhdml0eSBleHRlbmRzIEZvcmNlIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5HcmF2aXR5XG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBnIFx0XHRcdFx0XHRcdFx0R3Jhdml0eVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGcsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKDAsIGcsIGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5uYW1lID0gXCJHcmF2aXR5XCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uR3Jhdml0eVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGcgXHRcdFx0XHRcdFx0XHRHcmF2aXR5XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChnLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlci5yZXNldCgwLCBnLCBsaWZlLCBlYXNpbmcpO1xuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2xsaXNpb24gZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGFmdGVyIGNvbGxpc2lvblxuICAgKlxuICAgKiBAY2FsbGJhY2sgQ2FsbGJhY2tcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcml0Y2xlfSBvdGhlclBhcnRpY2xlXG4gICAqL1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkNvbGxpc2lvblxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gdG8gbWFzc1xuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5FbWl0dGVyfSBcdFtlbWl0dGVyPW51bGxdIFx0XHR0aGUgYXR0cmFjdGlvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFx0XHRbbWFzcz10cnVlXVxuICAgKiBAcGFyYW0ge0NhbGxiYWNrfVx0IFx0W2NhbGxiYWNrPW51bGxdXHRcdHRoZSBjYWxsYmFjayBhZnRlciB0aGUgY29sbGlzaW9uXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZW1pdHRlciwgbWFzcywgY2FsbGJhY2ssIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5yZXNldChlbWl0dGVyLCBtYXNzLCBjYWxsYmFjayk7XG4gICAgdGhpcy5uZXdQb29sID0gW107XG4gICAgdGhpcy5wb29sID0gW107XG4gICAgdGhpcy5uYW1lID0gXCJDb2xsaXNpb25cIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sbGlzaW9uXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiB0byBtYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLkVtaXR0ZXJ9IFx0W2VtaXR0ZXI9bnVsbF0gXHRcdHRoZSBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gXHRcdFttYXNzPXRydWVdXG4gICAqIEBwYXJhbSB7Q2FsbGJhY2t9XHQgXHRbY2FsbGJhY2s9bnVsbF1cdFx0dGhlIGNhbGxiYWNrIGFmdGVyIHRoZSBjb2xsaXNpb25cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdFtsaWZlPUluZmluaXR5XSBcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGVtaXR0ZXIsIG1hc3MsIGNhbGxiYWNrLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmVtaXR0ZXIgPSBVdGlsLmluaXRWYWx1ZShlbWl0dGVyLCBudWxsKTtcbiAgICB0aGlzLm1hc3MgPSBVdGlsLmluaXRWYWx1ZShtYXNzLCB0cnVlKTtcbiAgICB0aGlzLmNhbGxiYWNrID0gVXRpbC5pbml0VmFsdWUoY2FsbGJhY2ssIG51bGwpO1xuXG4gICAgdGhpcy5jb2xsaXNpb25Qb29sID0gW107XG4gICAgdGhpcy5kZWx0YSA9IG5ldyBWZWN0b3IyRCgpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sbGlzaW9uXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFx0dGltZSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gXHRcdFx0aW5kZXggdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICBpZiAodGhpcy5lbWl0dGVyKSB7XG4gICAgICBVdGlsLnNsaWNlQXJyYXkodGhpcy5lbWl0dGVyLnBhcnRpY2xlcywgaW5kZXgsIHRoaXMubmV3UG9vbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFV0aWwuc2xpY2VBcnJheSh0aGlzLnBvb2wsIGluZGV4LCB0aGlzLm5ld1Bvb2wpO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMubmV3UG9vbC5sZW5ndGg7XG4gICAgbGV0IG90aGVyUGFydGljbGU7XG4gICAgbGV0IGxlbmd0aFNxO1xuICAgIGxldCBvdmVybGFwO1xuICAgIGxldCB0b3RhbE1hc3M7XG4gICAgbGV0IGF2ZXJhZ2VNYXNzMSwgYXZlcmFnZU1hc3MyO1xuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBvdGhlclBhcnRpY2xlID0gdGhpcy5uZXdQb29sW2ldO1xuXG4gICAgICBpZiAob3RoZXJQYXJ0aWNsZSAhPT0gcGFydGljbGUpIHtcbiAgICAgICAgdGhpcy5kZWx0YS5jb3B5KG90aGVyUGFydGljbGUucCk7XG4gICAgICAgIHRoaXMuZGVsdGEuc3ViKHBhcnRpY2xlLnApO1xuXG4gICAgICAgIGxlbmd0aFNxID0gdGhpcy5kZWx0YS5sZW5ndGhTcSgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHBhcnRpY2xlLnJhZGl1cyArIG90aGVyUGFydGljbGUucmFkaXVzO1xuXG4gICAgICAgIGlmIChsZW5ndGhTcSA8PSBkaXN0YW5jZSAqIGRpc3RhbmNlKSB7XG4gICAgICAgICAgb3ZlcmxhcCA9IGRpc3RhbmNlIC0gTWF0aC5zcXJ0KGxlbmd0aFNxKTtcbiAgICAgICAgICBvdmVybGFwICs9IDAuNTtcblxuICAgICAgICAgIHRvdGFsTWFzcyA9IHBhcnRpY2xlLm1hc3MgKyBvdGhlclBhcnRpY2xlLm1hc3M7XG4gICAgICAgICAgYXZlcmFnZU1hc3MxID0gdGhpcy5tYXNzID8gb3RoZXJQYXJ0aWNsZS5tYXNzIC8gdG90YWxNYXNzIDogMC41O1xuICAgICAgICAgIGF2ZXJhZ2VNYXNzMiA9IHRoaXMubWFzcyA/IHBhcnRpY2xlLm1hc3MgLyB0b3RhbE1hc3MgOiAwLjU7XG5cbiAgICAgICAgICBwYXJ0aWNsZS5wLmFkZChcbiAgICAgICAgICAgIHRoaXMuZGVsdGFcbiAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgLm5vcm1hbGl6ZSgpXG4gICAgICAgICAgICAgIC5tdWx0aXBseVNjYWxhcihvdmVybGFwICogLWF2ZXJhZ2VNYXNzMSlcbiAgICAgICAgICApO1xuICAgICAgICAgIG90aGVyUGFydGljbGUucC5hZGQodGhpcy5kZWx0YS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihvdmVybGFwICogYXZlcmFnZU1hc3MyKSk7XG5cbiAgICAgICAgICB0aGlzLmNhbGxiYWNrICYmIHRoaXMuY2FsbGJhY2socGFydGljbGUsIG90aGVyUGFydGljbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3Jvc3Nab25lIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIERlZmluZXMgd2hhdCBoYXBwZW5zIGlmIHRoZSBwYXJ0aWNsZXMgY29tZSB0byB0aGUgZW5kIG9mIHRoZSBzcGVjaWZpZWQgem9uZVxuICAgKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uQ3Jvc3Nab25lXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlpvbmV9IHpvbmUgXHRcdFx0XHRcdFx0Y2FuIGJlIGFueSBQcm90b24uWm9uZSAtIGUuZy4gUHJvdG9uLlJlY3Rab25lKClcbiAgICogQHBhcmFtIHtTdHJpbmd9IFx0XHRbY3Jvc3NUeXBlPWRlYWRdIFx0XHRcdHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIHBhc3MgdGhlIHpvbmUgLSBhbGxvd2VkIHN0cmluZ3M6IGRlYWQgfCBib3VuZCB8IGNyb3NzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0W2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gXHRcdFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioem9uZSwgY3Jvc3NUeXBlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldCh6b25lLCBjcm9zc1R5cGUpO1xuICAgIHRoaXMubmFtZSA9IFwiQ3Jvc3Nab25lXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ3Jvc3Nab25lXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5ab25lfSB6b25lIFx0XHRcdFx0Y2FuIGJlIGFueSBQcm90b24uWm9uZSAtIGUuZy4gUHJvdG9uLlJlY3Rab25lKClcbiAgICogQHBhcmFtIHtTdHJpbmd9IFx0XHRbY3Jvc3NUeXBlPWRlYWRdIFx0d2hhdCBoYXBwZW5zIGlmIHRoZSBwYXJ0aWNsZXMgcGFzcyB0aGUgem9uZSAtIGFsbG93ZWQgc3RyaW5nczogZGVhZCB8IGJvdW5kIHwgY3Jvc3NcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRbbGlmZT1JbmZpbml0eV0gXHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFx0XHRbZWFzaW5nPWVhc2VMaW5lYXJdXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoem9uZSwgY3Jvc3NUeXBlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnpvbmUgPSB6b25lO1xuICAgIHRoaXMuem9uZS5jcm9zc1R5cGUgPSBVdGlsLmluaXRWYWx1ZShjcm9zc1R5cGUsIFwiZGVhZFwiKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ3Jvc3Nab25lXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG4gICAgdGhpcy56b25lLmNyb3NzaW5nKHBhcnRpY2xlKTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbi8qKlxuICogQWxwaGEgYmVoYXZpb3VyIGZvciBjb250cm9sbGluZyBwYXJ0aWNsZSBvcGFjaXR5IG92ZXIgdGltZS5cbiAqIEBleHRlbmRzIEJlaGF2aW91clxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbHBoYSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNhbWU7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYTtcblxuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBiO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBBbHBoYSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2E9MV0gLSBUaGUgaW5pdGlhbCBhbHBoYSB2YWx1ZSBvciByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2JdIC0gVGhlIGZpbmFsIGFscGhhIHZhbHVlIG9yIHJhbmdlLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYXMgJ2EnLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gVGhpcyBiZWhhdmlvdXIncyBsaWZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZUxpbmVhciddIC0gVGhpcyBiZWhhdmlvdXIncyBlYXNpbmcgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChhLCBiKTtcbiAgICB0aGlzLm5hbWUgPSBcIkFscGhhXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2E9MV0gLSBUaGUgaW5pdGlhbCBhbHBoYSB2YWx1ZSBvciByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2JdIC0gVGhlIGZpbmFsIGFscGhhIHZhbHVlIG9yIHJhbmdlLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYXMgJ2EnLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmVdIC0gVGhpcyBiZWhhdmlvdXIncyBsaWZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZ10gLSBUaGlzIGJlaGF2aW91cidzIGVhc2luZyBmdW5jdGlvbi5cbiAgICovXG4gIHJlc2V0KGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuc2FtZSA9IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIDEpKTtcbiAgICB0aGlzLmIgPSBTcGFuLnNldFNwYW5WYWx1ZShiKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgcGFydGljbGUncyBhbHBoYSB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUuXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuZGF0YS5hbHBoYUEgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcblxuICAgIGlmICh0aGlzLnNhbWUpIHBhcnRpY2xlLmRhdGEuYWxwaGFCID0gcGFydGljbGUuZGF0YS5hbHBoYUE7XG4gICAgZWxzZSBwYXJ0aWNsZS5kYXRhLmFscGhhQiA9IHRoaXMuYi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIGFscGhhIGJlaGF2aW91ciB0byB0aGUgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG8uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGN1cnJlbnQgc2ltdWxhdGlvbiB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHBhcnRpY2xlLlxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHBhcnRpY2xlLmFscGhhID0gcGFydGljbGUuZGF0YS5hbHBoYUIgKyAocGFydGljbGUuZGF0YS5hbHBoYUEgLSBwYXJ0aWNsZS5kYXRhLmFscGhhQikgKiB0aGlzLmVuZXJneTtcblxuICAgIGlmIChwYXJ0aWNsZS5hbHBoYSA8IDAuMDAxKSBwYXJ0aWNsZS5hbHBoYSA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG4vKipcbiAqIFNjYWxlIGJlaGF2aW91ciBmb3IgY29udHJvbGxpbmcgcGFydGljbGUgc2l6ZSBvdmVyIHRpbWUuXG4gKiBAZXh0ZW5kcyBCZWhhdmlvdXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NhbGUgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzYW1lO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTY2FsZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2E9MV0gLSBUaGUgaW5pdGlhbCBzY2FsZSB2YWx1ZSBvciByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2JdIC0gVGhlIGZpbmFsIHNjYWxlIHZhbHVlIG9yIHJhbmdlLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYXMgJ2EnLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gVGhpcyBiZWhhdmlvdXIncyBsaWZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZUxpbmVhciddIC0gVGhpcyBiZWhhdmlvdXIncyBlYXNpbmcgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChhLCBiKTtcbiAgICB0aGlzLm5hbWUgPSBcIlNjYWxlXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gYSAtIFRoZSBpbml0aWFsIHNjYWxlIHZhbHVlIG9yIHJhbmdlLlxuICAgKiBAcGFyYW0ge251bWJlcnxTcGFufSBbYl0gLSBUaGUgZmluYWwgc2NhbGUgdmFsdWUgb3IgcmFuZ2UuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSB0aGUgc2FtZSBhcyAnYScuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZV0gLSBUaGlzIGJlaGF2aW91cidzIGxpZmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZWFzaW5nXSAtIFRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVzZXQoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5zYW1lID0gYiA9PT0gbnVsbCB8fCBiID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUoYSwgMSkpO1xuICAgIHRoaXMuYiA9IFNwYW4uc2V0U3BhblZhbHVlKGIpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwYXJ0aWNsZSdzIHNjYWxlIHZhbHVlcy5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZS5cbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5kYXRhLnNjYWxlQSA9IHRoaXMuYS5nZXRWYWx1ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEub2xkUmFkaXVzID0gcGFydGljbGUucmFkaXVzO1xuICAgIHBhcnRpY2xlLmRhdGEuc2NhbGVCID0gdGhpcy5zYW1lID8gcGFydGljbGUuZGF0YS5zY2FsZUEgOiB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBzY2FsZSBiZWhhdmlvdXIgdG8gdGhlIHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFRoZSBjdXJyZW50IHNpbXVsYXRpb24gdGltZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBwYXJ0aWNsZS5cbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG4gICAgcGFydGljbGUuc2NhbGUgPSBwYXJ0aWNsZS5kYXRhLnNjYWxlQiArIChwYXJ0aWNsZS5kYXRhLnNjYWxlQSAtIHBhcnRpY2xlLmRhdGEuc2NhbGVCKSAqIHRoaXMuZW5lcmd5O1xuXG4gICAgaWYgKHBhcnRpY2xlLnNjYWxlIDwgMC4wMDAxKSBwYXJ0aWNsZS5zY2FsZSA9IDA7XG4gICAgcGFydGljbGUucmFkaXVzID0gcGFydGljbGUuZGF0YS5vbGRSYWRpdXMgKiBwYXJ0aWNsZS5zY2FsZTtcbiAgfVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbi8qKlxuICogUm90YXRlIGJlaGF2aW91ciBmb3IgY29udHJvbGxpbmcgcGFydGljbGUgcm90YXRpb24uXG4gKiBAZXh0ZW5kcyBCZWhhdmlvdXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2FtZTtcblxuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBhO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGI7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdHlsZTtcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUm90YXRlIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8U3Bhbn0gW2luZmx1ZW5jZT0nVmVsb2NpdHknXSAtIFRoZSByb3RhdGlvbidzIGluZmx1ZW5jZSBvciBpbml0aWFsIHJvdGF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8U3Bhbn0gW2JdIC0gVGhlIGZpbmFsIHJvdGF0aW9uIHZhbHVlIG9yIHJhbmdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0eWxlPSd0byddIC0gVGhlIHN0eWxlIG9mIHJvdGF0aW9uICgndG8nIG9yICdhZGQnKS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoaXMgYmVoYXZpb3VyJ3MgbGlmZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2VMaW5lYXInXSAtIFRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoaW5mbHVlbmNlLCBiLCBzdHlsZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoaW5mbHVlbmNlLCBiLCBzdHlsZSk7XG4gICAgdGhpcy5uYW1lID0gXCJSb3RhdGVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8U3Bhbn0gW2E9J1ZlbG9jaXR5J10gLSBUaGUgcm90YXRpb24ncyBpbmZsdWVuY2Ugb3IgaW5pdGlhbCByb3RhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfFNwYW59IFtiXSAtIFRoZSBmaW5hbCByb3RhdGlvbiB2YWx1ZSBvciByYW5nZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHlsZT0ndG8nXSAtIFRoZSBzdHlsZSBvZiByb3RhdGlvbiAoJ3RvJyBvciAnYWRkJykuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZV0gLSBUaGlzIGJlaGF2aW91cidzIGxpZmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZWFzaW5nXSAtIFRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVzZXQoYSwgYiwgc3R5bGUsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuc2FtZSA9IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5hID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUoYSwgXCJWZWxvY2l0eVwiKSk7XG4gICAgdGhpcy5iID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUoYiwgMCkpO1xuICAgIHRoaXMuc3R5bGUgPSBVdGlsLmluaXRWYWx1ZShzdHlsZSwgXCJ0b1wiKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycyBmb3IgYSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYXJ0aWNsZS5yb3RhdGlvbiAtIFRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUuZGF0YSAtIFRoZSBwYXJ0aWNsZSdzIGRhdGEgb2JqZWN0LlxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnJvdGF0aW9uID0gdGhpcy5hLmdldFZhbHVlKCk7XG4gICAgcGFydGljbGUuZGF0YS5yb3RhdGlvbkEgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcblxuICAgIGlmICghdGhpcy5zYW1lKSBwYXJ0aWNsZS5kYXRhLnJvdGF0aW9uQiA9IHRoaXMuYi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhpcyBiZWhhdmlvdXIgdG8gYSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG8uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGludGVncmF0ZSB0aW1lICgxL21zKS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIHBhcnRpY2xlIGluZGV4LlxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIGlmICghdGhpcy5zYW1lKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZSA9PT0gXCJ0b1wiIHx8IHRoaXMuc3R5bGUgPT09IFwiVE9cIiB8fCB0aGlzLnN0eWxlID09PSBcIl9cIikge1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiArPVxuICAgICAgICAgIHBhcnRpY2xlLmRhdGEucm90YXRpb25CICsgKHBhcnRpY2xlLmRhdGEucm90YXRpb25BIC0gcGFydGljbGUuZGF0YS5yb3RhdGlvbkIpICogdGhpcy5lbmVyZ3k7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiArPSBwYXJ0aWNsZS5kYXRhLnJvdGF0aW9uQjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYS5hID09PSBcIlZcIiB8fCB0aGlzLmEuYSA9PT0gXCJWZWxvY2l0eVwiIHx8IHRoaXMuYS5hID09PSBcInZcIikge1xuICAgICAgLy8gYmV0YS4uLlxuICAgICAgcGFydGljbGUucm90YXRpb24gPSBwYXJ0aWNsZS5nZXREaXJlY3Rpb24oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IEFycmF5U3BhbiBmcm9tIFwiLi4vbWF0aC9BcnJheVNwYW5cIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbG9yIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Db2xvclxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IFthXSB0aGUgc3RyaW5nIHNob3VsZCBiZSBhIGhleCBlLmcuICMwMDAwMDAgZm9yIGJsYWNrXG4gICAqIEBwYXJhbSB7UHJvdG9uLkFycmF5U3BhbiB8IFN0cmluZ30gW2JdIHRoZSBzdHJpbmcgc2hvdWxkIGJlIGEgaGV4IGUuZy4gIzAwMDAwMCBmb3IgYmxhY2tcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoYSwgYik7XG4gICAgdGhpcy5uYW1lID0gXCJDb2xvclwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbG9yXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IGEgdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IGIgdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuYSA9IEFycmF5U3Bhbi5jcmVhdGVBcnJheVNwYW4oYSk7XG4gICAgdGhpcy5iID0gQXJyYXlTcGFuLmNyZWF0ZUFycmF5U3BhbihiKTtcbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycyBmb3IgYWxsIHBhcnRpY2xlc1xuICAgKlxuICAgKiBAbWV0aG9kIGluaXRpYWxpemVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmNvbG9yID0gdGhpcy5hLmdldFZhbHVlKCk7XG4gICAgcGFydGljbGUuZGF0YS5jb2xvckEgPSBDb2xvclV0aWwuaGV4VG9SZ2IocGFydGljbGUuY29sb3IpO1xuXG4gICAgaWYgKHRoaXMuYikgcGFydGljbGUuZGF0YS5jb2xvckIgPSBDb2xvclV0aWwuaGV4VG9SZ2IodGhpcy5iLmdldFZhbHVlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Db2xvclxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICBpZiAodGhpcy5iKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgICBwYXJ0aWNsZS5yZ2IuciA9IHBhcnRpY2xlLmRhdGEuY29sb3JCLnIgKyAocGFydGljbGUuZGF0YS5jb2xvckEuciAtIHBhcnRpY2xlLmRhdGEuY29sb3JCLnIpICogdGhpcy5lbmVyZ3k7XG4gICAgICBwYXJ0aWNsZS5yZ2IuZyA9IHBhcnRpY2xlLmRhdGEuY29sb3JCLmcgKyAocGFydGljbGUuZGF0YS5jb2xvckEuZyAtIHBhcnRpY2xlLmRhdGEuY29sb3JCLmcpICogdGhpcy5lbmVyZ3k7XG4gICAgICBwYXJ0aWNsZS5yZ2IuYiA9IHBhcnRpY2xlLmRhdGEuY29sb3JCLmIgKyAocGFydGljbGUuZGF0YS5jb2xvckEuYiAtIHBhcnRpY2xlLmRhdGEuY29sb3JCLmIpICogdGhpcy5lbmVyZ3k7XG5cbiAgICAgIHBhcnRpY2xlLnJnYi5yID0gcGFydGljbGUucmdiLnIgPDwgMDtcbiAgICAgIHBhcnRpY2xlLnJnYi5nID0gcGFydGljbGUucmdiLmcgPDwgMDtcbiAgICAgIHBhcnRpY2xlLnJnYi5iID0gcGFydGljbGUucmdiLmIgPDwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUucmdiLnIgPSBwYXJ0aWNsZS5kYXRhLmNvbG9yQS5yO1xuICAgICAgcGFydGljbGUucmdiLmcgPSBwYXJ0aWNsZS5kYXRhLmNvbG9yQS5nO1xuICAgICAgcGFydGljbGUucmdiLmIgPSBwYXJ0aWNsZS5kYXRhLmNvbG9yQS5iO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcbmltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmNvbnN0IENIQU5HSU5HID0gXCJjaGFuZ2luZ1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDeWNsb25lIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5DeWNsb25lXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gZm9yY2VcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoYW5nbGUsIGZvcmNlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuICAgIHRoaXMuc2V0QW5nbGVBbmRGb3JjZShhbmdsZSwgZm9yY2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQ3ljbG9uZVwiO1xuICB9XG5cbiAgc2V0QW5nbGVBbmRGb3JjZShhbmdsZSwgZm9yY2UpIHtcbiAgICB0aGlzLmZvcmNlID0gQ0hBTkdJTkc7XG4gICAgdGhpcy5hbmdsZSA9IE1hdGhVdGlsLlBJIC8gMjtcblxuICAgIGlmIChhbmdsZSA9PT0gXCJyaWdodFwiKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gTWF0aFV0aWwuUEkgLyAyO1xuICAgIH0gZWxzZSBpZiAoYW5nbGUgPT09IFwibGVmdFwiKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gLU1hdGhVdGlsLlBJIC8gMjtcbiAgICB9IGVsc2UgaWYgKGFuZ2xlID09PSBcInJhbmRvbVwiKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gXCJyYW5kb21cIjtcbiAgICB9IGVsc2UgaWYgKGFuZ2xlIGluc3RhbmNlb2YgU3Bhbikge1xuICAgICAgdGhpcy5hbmdsZSA9IFwic3BhblwiO1xuICAgICAgdGhpcy5zcGFuID0gYW5nbGU7XG4gICAgfSBlbHNlIGlmIChhbmdsZSkge1xuICAgICAgdGhpcy5hbmdsZSA9IGFuZ2xlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIFN0cmluZyhmb3JjZSkudG9Mb3dlckNhc2UoKSA9PT0gXCJjaGFuZ2luZ1wiIHx8XG4gICAgICBTdHJpbmcoZm9yY2UpLnRvTG93ZXJDYXNlKCkgPT09IFwiY2hhbmdcIiB8fFxuICAgICAgU3RyaW5nKGZvcmNlKS50b0xvd2VyQ2FzZSgpID09PSBcImF1dG9cIlxuICAgICkge1xuICAgICAgdGhpcy5mb3JjZSA9IENIQU5HSU5HO1xuICAgIH0gZWxzZSBpZiAoZm9yY2UpIHtcbiAgICAgIHRoaXMuZm9yY2UgPSBmb3JjZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ3ljbG9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFuZ2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmb3JjZVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGFuZ2xlLCBmb3JjZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5hbmdsZSA9IE1hdGhVdGlsLlBJIC8gMjtcbiAgICB0aGlzLnNldEFuZ2xlQW5kRm9yY2UoYW5nbGUsIGZvcmNlKTtcbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuYW5nbGUgPT09IFwicmFuZG9tXCIpIHtcbiAgICAgIHBhcnRpY2xlLmRhdGEuY2FuZ2xlID0gTWF0aFV0aWwucmFuZG9tQVRvQigtTWF0aFV0aWwuUEksIE1hdGhVdGlsLlBJKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYW5nbGUgPT09IFwic3BhblwiKSB7XG4gICAgICBwYXJ0aWNsZS5kYXRhLmNhbmdsZSA9IHRoaXMuc3Bhbi5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZSA9IG5ldyBWZWN0b3IyRCgwLCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ3ljbG9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgbGV0IGxlbmd0aDtcbiAgICBsZXQgZ3JhZGllbnQgPSBwYXJ0aWNsZS52LmdldEdyYWRpZW50KCk7XG4gICAgaWYgKHRoaXMuYW5nbGUgPT09IFwicmFuZG9tXCIgfHwgdGhpcy5hbmdsZSA9PT0gXCJzcGFuXCIpIHtcbiAgICAgIGdyYWRpZW50ICs9IHBhcnRpY2xlLmRhdGEuY2FuZ2xlO1xuICAgIH0gZWxzZSB7XG4gICAgICBncmFkaWVudCArPSB0aGlzLmFuZ2xlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcmNlID09PSBDSEFOR0lORykge1xuICAgICAgbGVuZ3RoID0gcGFydGljbGUudi5sZW5ndGgoKSAvIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5mb3JjZTtcbiAgICB9XG5cbiAgICBwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUueCA9IGxlbmd0aCAqIE1hdGguY29zKGdyYWRpZW50KTtcbiAgICBwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUueSA9IGxlbmd0aCAqIE1hdGguc2luKGdyYWRpZW50KTtcbiAgICBwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUgPSB0aGlzLm5vcm1hbGl6ZUZvcmNlKHBhcnRpY2xlLmRhdGEuY3ljbG9uZSk7XG4gICAgcGFydGljbGUuYS5hZGQocGFydGljbGUuZGF0YS5jeWNsb25lKTtcbiAgfVxufVxuIiwiaW1wb3J0IEF0dHJhY3Rpb24gZnJvbSBcIi4vQXR0cmFjdGlvblwiO1xuXG4vKipcbiAqIFRoZSBvcHBvc2l0ZSBvZiBBdHRyYWN0aW9uIC0gdHVybnMgdGhlIGZvcmNlXG4gKlxuICogQGNsYXNzXG4gKiBAZXh0ZW5kcyBQcm90b24uQXR0cmFjdGlvblxuICogQG1lbWJlcm9mISBQcm90b24jXG4gKiBAYWxpYXMgUHJvdG9uLlJlcHVsc2lvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXB1bHNpb24gZXh0ZW5kcyBBdHRyYWN0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUmVwdWxzaW9uIGJlaGF2aW91ciBpbnN0YW5jZVxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIC0gVGhlIHJlcHVsc2lvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW2ZvcmNlPTEwMF0gLSBUaGUgc3RyZW5ndGggb2YgdGhlIHJlcHVsc2lvbiBmb3JjZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl1cz0xMDAwXSAtIFRoZSByYWRpdXMgb2YgaW5mbHVlbmNlIGZvciB0aGUgcmVwdWxzaW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGUgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZUxpbmVhciddIC0gVGhlIGJlaGF2aW91cidzIGVhc2luZyBmdW5jdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHN0cmVuZ3RoIG9mIHRoZSByZXB1bHNpb24gZm9yY2VcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZm9yY2UgKj0gLTE7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSBcIlJlcHVsc2lvblwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5WZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb24gLSBUaGUgbmV3IHJlcHVsc2lvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW2ZvcmNlPTEwMF0gLSBUaGUgbmV3IHN0cmVuZ3RoIG9mIHRoZSByZXB1bHNpb24gZm9yY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpdXM9MTAwMF0gLSBUaGUgbmV3IHJhZGl1cyBvZiBpbmZsdWVuY2UgZm9yIHRoZSByZXB1bHNpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoZSBuZXcgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZUxpbmVhciddIC0gVGhlIG5ldyBiZWhhdmlvdXIncyBlYXNpbmcgZnVuY3Rpb25cbiAgICovXG4gIHJlc2V0KHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlci5yZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKTtcbiAgICB0aGlzLmZvcmNlICo9IC0xO1xuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmF2aXR5V2VsbCBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIEJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIEdyYXZpdHlXZWxsXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IFtjZW50ZXJQb2ludD1uZXcgVmVjdG9yMkRdIFRoZSBwb2ludCBpbiB0aGUgY2VudGVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVx0XHRcdFx0XHRUaGUgZm9yY2VcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XVx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNlbnRlclBvaW50LCBmb3JjZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMuZGlzdGFuY2VWZWMgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmNlbnRlclBvaW50ID0gVXRpbC5pbml0VmFsdWUoY2VudGVyUG9pbnQsIG5ldyBWZWN0b3IyRCgpKTtcbiAgICB0aGlzLmZvcmNlID0gVXRpbC5pbml0VmFsdWUodGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSksIDEwMCk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIkdyYXZpdHlXZWxsXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNHcmF2aXR5V2VsbFxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gW2NlbnRlclBvaW50PW5ldyBWZWN0b3IyRF0gVGhlIHBvaW50IGluIHRoZSBjZW50ZXJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtmb3JjZT0xMDBdXHRcdFx0XHRcdFRoZSBmb3JjZVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZUxpbmVhcl1cdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChjZW50ZXJQb2ludCwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuZGlzdGFuY2VWZWMgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmNlbnRlclBvaW50ID0gVXRpbC5pbml0VmFsdWUoY2VudGVyUG9pbnQsIG5ldyBWZWN0b3IyRCgpKTtcbiAgICB0aGlzLmZvcmNlID0gVXRpbC5pbml0VmFsdWUodGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSksIDEwMCk7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHt9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI0dyYXZpdHlXZWxsXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5kaXN0YW5jZVZlYy5zZXQodGhpcy5jZW50ZXJQb2ludC54IC0gcGFydGljbGUucC54LCB0aGlzLmNlbnRlclBvaW50LnkgLSBwYXJ0aWNsZS5wLnkpO1xuICAgIGNvbnN0IGRpc3RhbmNlU3EgPSB0aGlzLmRpc3RhbmNlVmVjLmxlbmd0aFNxKCk7XG5cbiAgICBpZiAoZGlzdGFuY2VTcSAhPT0gMCkge1xuICAgICAgY29uc3QgZGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlVmVjLmxlbmd0aCgpO1xuICAgICAgY29uc3QgZmFjdG9yID0gKHRoaXMuZm9yY2UgKiB0aW1lKSAvIChkaXN0YW5jZVNxICogZGlzdGFuY2UpO1xuXG4gICAgICBwYXJ0aWNsZS52LnggKz0gZmFjdG9yICogdGhpcy5kaXN0YW5jZVZlYy54O1xuICAgICAgcGFydGljbGUudi55ICs9IGZhY3RvciAqIHRoaXMuZGlzdGFuY2VWZWMueTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBQcm9wVXRpbCBmcm9tIFwiLi4vdXRpbHMvUHJvcFV0aWxcIjtcbmltcG9ydCBJbml0aWFsaXplIGZyb20gXCIuL0luaXRpYWxpemVcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGluaXRpYWxpemUoZW1pdHRlciwgcGFydGljbGUsIGluaXRpYWxpemVzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gaW5pdGlhbGl6ZXMubGVuZ3RoO1xuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaW5pdGlhbGl6ZXNbaV0gaW5zdGFuY2VvZiBJbml0aWFsaXplKSB7XG4gICAgICAgIGluaXRpYWxpemVzW2ldLmluaXQoZW1pdHRlciwgcGFydGljbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbml0KGVtaXR0ZXIsIHBhcnRpY2xlLCBpbml0aWFsaXplc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5iaW5kRW1pdHRlcihlbWl0dGVyLCBwYXJ0aWNsZSk7XG4gIH0sXG5cbiAgLy8gaW5pdFxuICBpbml0KGVtaXR0ZXIsIHBhcnRpY2xlLCBpbml0aWFsaXplKSB7XG4gICAgUHJvcFV0aWwuc2V0UHJvcChwYXJ0aWNsZSwgaW5pdGlhbGl6ZSk7XG4gICAgUHJvcFV0aWwuc2V0VmVjdG9yVmFsKHBhcnRpY2xlLCBpbml0aWFsaXplKTtcbiAgfSxcblxuICBiaW5kRW1pdHRlcihlbWl0dGVyLCBwYXJ0aWNsZSkge1xuICAgIGlmIChlbWl0dGVyLmJpbmRFbWl0dGVyKSB7XG4gICAgICBwYXJ0aWNsZS5wLmFkZChlbWl0dGVyLnApO1xuICAgICAgcGFydGljbGUudi5hZGQoZW1pdHRlci52KTtcbiAgICAgIHBhcnRpY2xlLmEuYWRkKGVtaXR0ZXIuYSk7XG4gICAgICBwYXJ0aWNsZS52LnJvdGF0ZShNYXRoVXRpbC5kZWdyZWVUcmFuc2Zvcm0oZW1pdHRlci5yb3RhdGlvbikpO1xuICAgIH1cbiAgfVxufTtcbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgUHVpZCBmcm9tIFwiLi4vdXRpbHMvUHVpZFwiO1xuaW1wb3J0IFBhcnRpY2xlIGZyb20gXCIuLi9jb3JlL1BhcnRpY2xlXCI7XG5pbXBvcnQgRXZlbnREaXNwYXRjaGVyIGZyb20gXCIuLi9ldmVudHMvRXZlbnREaXNwYXRjaGVyXCI7XG5cbmltcG9ydCBSYXRlIGZyb20gXCIuLi9pbml0aWFsaXplL1JhdGVcIjtcbmltcG9ydCBJbml0aWFsaXplVXRpbCBmcm9tIFwiLi4vaW5pdGlhbGl6ZS9Jbml0aWFsaXplVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbWl0dGVyIGV4dGVuZHMgUGFydGljbGUge1xuICAvKipcbiAgICogWW91IGNhbiB1c2UgdGhpcyBlbWl0IHBhcnRpY2xlcy5cbiAgICpcbiAgICogSXQgd2lsbCBkaXNwYXRjaCBmb2xsb3cgZXZlbnRzOlxuICAgKiBQQVJUSUNMRV9DUkVBVEVEXG4gICAqIFBBUlRJQ0xFX1VQREFUQVxuICAgKiBQQVJUSUNMRV9ERUFEXG4gICAqXG4gICAqIEBjbGFzcyBFbWl0dGVyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZiB0aGUgcGFyYW1ldGVycyBvYmplY3Q7XG4gICAqIGZvciBleGFtcGxlIHtkYW1waW5nOjAuMDEsYmluZEVtaXR0ZXI6ZmFsc2V9XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25mID0ge30pIHtcbiAgICBzdXBlcihjb25mKTtcblxuICAgIHRoaXMucGFydGljbGVzID0gW107XG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG4gICAgdGhpcy5pbml0aWFsaXplcyA9IFtdO1xuXG4gICAgdGhpcy5lbWl0VGltZSA9IDA7XG4gICAgdGhpcy5lbWl0U3BlZWQgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gLTE7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnJpY3Rpb24gY29lZmZpY2llbnQgZm9yIGFsbCBwYXJ0aWNsZSBlbWl0IGJ5IFRoaXM7XG4gICAgICogQHByb3BlcnR5IGRhbXBpbmdcbiAgICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgICAqIEBkZWZhdWx0IDAuMDA2XG4gICAgICovXG4gICAgdGhpcy5kYW1waW5nID0gMC4wMDY7XG5cbiAgICAvKipcbiAgICAgKiBJZiBiaW5kRW1pdHRlciB0aGUgcGFydGljbGVzIGNhbiBiaW5kIHRoaXMgZW1pdHRlcidzIHByb3BlcnR5O1xuICAgICAqIEBwcm9wZXJ0eSBiaW5kRW1pdHRlclxuICAgICAqIEB0eXBlIHtCb29sZWFufVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICB0aGlzLmJpbmRFbWl0dGVyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHBlciBzZWNvbmQgZW1pdCAoYSBbcGFydGljbGVdL2IgW3NdKTtcbiAgICAgKiBAcHJvcGVydHkgcmF0ZVxuICAgICAqIEB0eXBlIHtSYXRlfVxuICAgICAqIEBkZWZhdWx0IFJhdGUoMSwgLjEpXG4gICAgICovXG4gICAgdGhpcy5yYXRlID0gbmV3IFJhdGUoMSwgMC4xKTtcblxuICAgIHRoaXMubmFtZSA9IFwiRW1pdHRlclwiO1xuICAgIHRoaXMuaWQgPSBQdWlkLmlkKHRoaXMubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhcnQgZW1pdCBwYXJ0aWNsZVxuICAgKiBAbWV0aG9kIGVtaXRcbiAgICogQHBhcmFtIHtOdW1iZXIgfCBTdHJpbmd9IFt0b3RhbFRpbWVdIGJlZ2luIGVtaXQgdGltZTtcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBib29sZWFufSBbbGlmZV0gdGhlIGxpZmUgb2YgdGhpcyBlbWl0dGVyXG4gICAqL1xuICBlbWl0KHRvdGFsVGltZSwgbGlmZSkge1xuICAgIHRoaXMuc3RvcGVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0VGltZSA9IDA7XG4gICAgdGhpcy50b3RhbFRpbWUgPSBVdGlsLmluaXRWYWx1ZSh0b3RhbFRpbWUsIEluZmluaXR5KTtcblxuICAgIGlmIChsaWZlID09PSB0cnVlIHx8IGxpZmUgPT09IFwibGlmZVwiIHx8IGxpZmUgPT09IFwiZGVzdHJveVwiKSB7XG4gICAgICB0aGlzLmxpZmUgPSB0b3RhbFRpbWUgPT09IFwib25jZVwiID8gMSA6IHRoaXMudG90YWxUaW1lO1xuICAgIH0gZWxzZSBpZiAoIWlzTmFOKGxpZmUpKSB7XG4gICAgICB0aGlzLmxpZmUgPSBsaWZlO1xuICAgIH1cbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0b3AgZW1pdGluZ1xuICAgKiBAbWV0aG9kIHN0b3BcbiAgICovXG4gIHN0b3AoKSB7XG4gICAgdGhpcy50b3RhbFRpbWUgPSAtMTtcbiAgICB0aGlzLmVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnN0b3BlZCA9IHRydWU7XG4gIH1cblxuICBwcmVFbWl0KHRpbWUpIHtcbiAgICBsZXQgb2xkU3RvcGVkID0gdGhpcy5zdG9wZWQ7XG4gICAgbGV0IG9sZEVtaXRUaW1lID0gdGhpcy5lbWl0VGltZTtcbiAgICBsZXQgb2xkVG90YWxUaW1lID0gdGhpcy50b3RhbFRpbWU7XG5cbiAgICB0aGlzLnN0b3BlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gdGltZTtcbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuXG4gICAgY29uc3Qgc3RlcCA9IDAuMDE2NztcbiAgICB3aGlsZSAodGltZSA+IHN0ZXApIHtcbiAgICAgIHRpbWUgLT0gc3RlcDtcbiAgICAgIHRoaXMudXBkYXRlKHN0ZXApO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcGVkID0gb2xkU3RvcGVkO1xuICAgIHRoaXMuZW1pdFRpbWUgPSBvbGRFbWl0VGltZSArIE1hdGgubWF4KHRpbWUsIDApO1xuICAgIHRoaXMudG90YWxUaW1lID0gb2xkVG90YWxUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSBjdXJyZW50IGFsbCBwYXJ0aWNsZXNcbiAgICogQG1ldGhvZCByZW1vdmVBbGxQYXJ0aWNsZXNcbiAgICovXG4gIHJlbW92ZUFsbFBhcnRpY2xlcygpIHtcbiAgICBsZXQgaSA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB0aGlzLnBhcnRpY2xlc1tpXS5kZWFkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgaW5pdGlhbGl6ZSB0byB0aGlzIGVtaXR0ZXJcbiAgICogQG1ldGhvZCBhZGRTZWxmSW5pdGlhbGl6ZVxuICAgKi9cbiAgYWRkU2VsZkluaXRpYWxpemUoaW5pdGlhbGl6ZSkge1xuICAgIGlmIChpbml0aWFsaXplW1wiaW5pdFwiXSkge1xuICAgICAgaW5pdGlhbGl6ZS5pbml0KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLmluaXRBbGwoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBJbml0aWFsaXplIHRvIHBhcnRpY2xlcztcbiAgICpcbiAgICogeW91IGNhbiB1c2UgaW5pdGlhbGl6ZXMgYXJyYXk6Zm9yIGV4YW1wbGUgZW1pdHRlci5hZGRJbml0aWFsaXplKGluaXRpYWxpemUxLGluaXRpYWxpemUyLGluaXRpYWxpemUzKTtcbiAgICogQG1ldGhvZCBhZGRJbml0aWFsaXplXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZX0gaW5pdGlhbGl6ZSBsaWtlIHRoaXMgbmV3IFJhZGl1cygxLCAxMilcbiAgICovXG4gIGFkZEluaXRpYWxpemUoLi4ucmVzdCkge1xuICAgIGxldCBpID0gcmVzdC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgdGhpcy5pbml0aWFsaXplcy5wdXNoKHJlc3RbaV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSB0aGUgSW5pdGlhbGl6ZVxuICAgKiBAbWV0aG9kIHJlbW92ZUluaXRpYWxpemVcbiAgICogQHBhcmFtIHtJbml0aWFsaXplfSBpbml0aWFsaXplIGEgaW5pdGlhbGl6ZVxuICAgKi9cbiAgcmVtb3ZlSW5pdGlhbGl6ZShpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcy5pbmRleE9mKGluaXRpYWxpemVyKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgdGhpcy5pbml0aWFsaXplcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSBhbGwgSW5pdGlhbGl6ZXNcbiAgICogQG1ldGhvZCByZW1vdmVJbml0aWFsaXplcnNcbiAgICovXG4gIHJlbW92ZUFsbEluaXRpYWxpemVycygpIHtcbiAgICBVdGlsLmVtcHR5QXJyYXkodGhpcy5pbml0aWFsaXplcyk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBCZWhhdmlvdXIgdG8gcGFydGljbGVzO1xuICAgKlxuICAgKiB5b3UgY2FuIHVzZSBCZWhhdmlvdXJzIGFycmF5OmVtaXR0ZXIuYWRkQmVoYXZpb3VyKEJlaGF2aW91cjEsQmVoYXZpb3VyMixCZWhhdmlvdXIzKTtcbiAgICogQG1ldGhvZCBhZGRCZWhhdmlvdXJcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciBsaWtlIHRoaXMgbmV3IENvbG9yKCdyYW5kb20nKVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKC4uLnJlc3QpIHtcbiAgICBsZXQgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgbGV0IGJlaGF2aW91ciA9IHJlc3RbaV07XG4gICAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuICAgICAgaWYgKGJlaGF2aW91ci5wYXJlbnRzKSBiZWhhdmlvdXIucGFyZW50cy5wdXNoKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdGhlIEJlaGF2aW91clxuICAgKiBAbWV0aG9kIHJlbW92ZUJlaGF2aW91clxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIGEgYmVoYXZpb3VyXG4gICAqL1xuICByZW1vdmVCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcbiAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmIChiZWhhdmlvdXIucGFyZW50cykge1xuICAgICAgaW5kZXggPSBiZWhhdmlvdXIucGFyZW50cy5pbmRleE9mKGJlaGF2aW91cik7XG4gICAgICBiZWhhdmlvdXIucGFyZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgYWxsIGJlaGF2aW91cnNcbiAgICogQG1ldGhvZCByZW1vdmVBbGxCZWhhdmlvdXJzXG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZW1wdHlBcnJheSh0aGlzLmJlaGF2aW91cnMpO1xuICB9XG5cbiAgLy8gZW1pdHRlciB1cGRhdGVcbiAgdXBkYXRlKHRpbWUpIHtcbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuICAgIGlmICh0aGlzLmFnZSA+PSB0aGlzLmxpZmUgfHwgdGhpcy5kZWFkKSB0aGlzLmRlc3Ryb3koKTtcblxuICAgIHRoaXMuZW1pdHRpbmcodGltZSk7XG4gICAgdGhpcy5pbnRlZ3JhdGUodGltZSk7XG4gIH1cblxuICBpbnRlZ3JhdGUodGltZSkge1xuICAgIGlmICghdGhpcy5wYXJlbnQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhbXBpbmcgPSAxIC0gdGhpcy5kYW1waW5nO1xuICAgIHRoaXMucGFyZW50LmludGVncmF0b3IuY2FsY3VsYXRlKHRoaXMsIHRpbWUsIGRhbXBpbmcpO1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIGxldCBpLCBwYXJ0aWNsZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2ldO1xuXG4gICAgICAvLyBwYXJ0aWNsZSB1cGRhdGVcbiAgICAgIHBhcnRpY2xlLnVwZGF0ZSh0aW1lLCBpKTtcbiAgICAgIHRoaXMucGFyZW50LmludGVncmF0b3IuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goXCJQQVJUSUNMRV9VUERBVEVcIiwgcGFydGljbGUpO1xuXG4gICAgICAvLyBjaGVjayBkZWFkXG4gICAgICBpZiAocGFydGljbGUuZGVhZCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiUEFSVElDTEVfREVBRFwiLCBwYXJ0aWNsZSk7XG5cbiAgICAgICAgdGhpcy5wYXJlbnQucG9vbC5leHBpcmUocGFydGljbGUpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCkge1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQsIHRhcmdldCk7XG4gICAgdGhpcy5iaW5kRXZlbnQgJiYgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgZW1pdHRpbmcodGltZSkge1xuICAgIGlmICh0aGlzLnN0b3BlZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMudG90YWxUaW1lID09PSBcIm5vbmVcIikge1xuICAgICAgdGhpcy5lbWl0VGltZSArPSB0aW1lO1xuICAgIH0gZWxzZSBpZiAodGhpcy50b3RhbFRpbWUgPT09IFwib25jZVwiKSB7XG4gICAgICBsZXQgaTtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucmF0ZS5nZXRWYWx1ZSg5OTk5OSk7XG5cbiAgICAgIGlmIChsZW5ndGggPiAwKSB0aGlzLmVtaXRTcGVlZCA9IGxlbmd0aDtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgdGhpcy50b3RhbFRpbWUgPSBcIm5vbmVcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0VGltZSArPSB0aW1lO1xuXG4gICAgICBpZiAodGhpcy5lbWl0VGltZSA8IHRoaXMudG90YWxUaW1lKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucmF0ZS5nZXRWYWx1ZSh0aW1lKTtcbiAgICAgICAgbGV0IGk7XG5cbiAgICAgICAgaWYgKGxlbmd0aCA+IDApIHRoaXMuZW1pdFNwZWVkID0gbGVuZ3RoO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHRoaXMuY3JlYXRlUGFydGljbGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlIHNpbmdsZSBwYXJ0aWNsZTtcbiAgICpcbiAgICogY2FuIHVzZSBlbWl0KHt4OjEwfSxuZXcgR3Jhdml0eSgxMCkseydwYXJ0aWNsZVVwZGF0ZScsZnVufSkgb3IgZW1pdChbe3g6MTB9LG5ldyBJbml0aWFsaXplXSxuZXcgR3Jhdml0eSgxMCkseydwYXJ0aWNsZVVwZGF0ZScsZnVufSlcbiAgICogQG1ldGhvZCByZW1vdmVBbGxQYXJ0aWNsZXNcbiAgICovXG4gIGNyZWF0ZVBhcnRpY2xlKGluaXRpYWxpemUsIGJlaGF2aW91cikge1xuICAgIGNvbnN0IHBhcnRpY2xlID0gdGhpcy5wYXJlbnQucG9vbC5nZXQoUGFydGljbGUpO1xuICAgIHRoaXMuc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5pdGlhbGl6ZSwgYmVoYXZpb3VyKTtcbiAgICB0aGlzLmRpc3BhdGNoKFwiUEFSVElDTEVfQ1JFQVRFRFwiLCBwYXJ0aWNsZSk7XG5cbiAgICByZXR1cm4gcGFydGljbGU7XG4gIH1cblxuICBzZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbml0aWFsaXplLCBiZWhhdmlvdXIpIHtcbiAgICBsZXQgaW5pdGlhbGl6ZXMgPSB0aGlzLmluaXRpYWxpemVzO1xuICAgIGxldCBiZWhhdmlvdXJzID0gdGhpcy5iZWhhdmlvdXJzO1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemVzID0gVXRpbC50b0FycmF5KGluaXRpYWxpemUpO1xuICAgIGlmIChiZWhhdmlvdXIpIGJlaGF2aW91cnMgPSBVdGlsLnRvQXJyYXkoYmVoYXZpb3VyKTtcblxuICAgIHBhcnRpY2xlLnJlc2V0KCk7XG4gICAgSW5pdGlhbGl6ZVV0aWwuaW5pdGlhbGl6ZSh0aGlzLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZXMpO1xuICAgIHBhcnRpY2xlLmFkZEJlaGF2aW91cnMoYmVoYXZpb3Vycyk7XG4gICAgcGFydGljbGUucGFyZW50ID0gdGhpcztcblxuICAgIHRoaXMucGFydGljbGVzLnB1c2gocGFydGljbGUpO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLnBhcnRpY2xlcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdG9yeSB0aGlzIEVtaXR0ZXJcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZGVhZCA9IHRydWU7XG4gICAgdGhpcy5yZW1vdmUoKTtcbiAgICB0aGlzLnJlbW92ZUFsbEluaXRpYWxpemVycygpO1xuICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnJlbW92ZUVtaXR0ZXIodGhpcyk7XG5cbiAgICB0aGlzLnJhdGUgPSBudWxsO1xuICAgIHRoaXMub2xkID0gbnVsbDtcbiAgICB0aGlzLnJnYiA9IG51bGw7XG4gICAgdGhpcy52ID0gbnVsbDtcbiAgICB0aGlzLmEgPSBudWxsO1xuICAgIHRoaXMucCA9IG51bGw7XG4gIH1cbn1cblxuRXZlbnREaXNwYXRjaGVyLmJpbmQoRW1pdHRlcik7XG4iLCJpbXBvcnQgRW1pdHRlciBmcm9tIFwiLi9FbWl0dGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJlaGF2aW91ckVtaXR0ZXIgZXh0ZW5kcyBFbWl0dGVyIHtcbiAgLyoqXG4gICAqIFRoZSBCZWhhdmlvdXJFbWl0dGVyIGNsYXNzIGluaGVyaXRzIGZyb20gUHJvdG9uLkVtaXR0ZXJcbiAgICpcbiAgICogdXNlIHRoZSBCZWhhdmlvdXJFbWl0dGVyIHlvdSBjYW4gYWRkIGJlaGF2aW91cnMgdG8gc2VsZjtcbiAgICogQGNsYXNzIFByb3Rvbi5CZWhhdmlvdXJFbWl0dGVyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZiB0aGUgcGFyYW1ldGVycyBvYmplY3Q7XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25mKSB7XG4gICAgc3VwZXIoY29uZik7XG5cbiAgICB0aGlzLnNlbGZCZWhhdmlvdXJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBCZWhhdmlvdXIgdG8gZW1pdHRlcjtcbiAgICpcbiAgICogeW91IGNhbiB1c2UgQmVoYXZpb3VycyBhcnJheTplbWl0dGVyLmFkZFNlbGZCZWhhdmlvdXIoQmVoYXZpb3VyMSxCZWhhdmlvdXIyLEJlaGF2aW91cjMpO1xuICAgKiBAbWV0aG9kIGFkZFNlbGZCZWhhdmlvdXJcbiAgICogQHBhcmFtIHtQcm90b24uQmVoYXZpb3VyfSBiZWhhdmlvdXIgbGlrZSB0aGlzIG5ldyBQcm90b24uQ29sb3IoJ3JhbmRvbScpXG4gICAqL1xuICBhZGRTZWxmQmVoYXZpb3VyKC4uLnJlc3QpIHtcbiAgICBsZXQgaSxcbiAgICAgIGxlbmd0aCA9IHJlc3QubGVuZ3RoO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYmVoYXZpb3VyID0gcmVzdFtpXTtcbiAgICAgIHRoaXMuc2VsZkJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuICAgICAgYmVoYXZpb3VyLmluaXRpYWxpemUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSB0aGUgQmVoYXZpb3VyIGZvciBzZWxmXG4gICAqIEBtZXRob2QgcmVtb3ZlU2VsZkJlaGF2aW91clxuICAgKiBAcGFyYW0ge1Byb3Rvbi5CZWhhdmlvdXJ9IGJlaGF2aW91ciBhIGJlaGF2aW91clxuICAgKi9cbiAgcmVtb3ZlU2VsZkJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZkJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuICAgIGlmIChpbmRleCA+IC0xKSB0aGlzLnNlbGZCZWhhdmlvdXJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICB1cGRhdGUodGltZSkge1xuICAgIHN1cGVyLnVwZGF0ZSh0aW1lKTtcblxuICAgIGlmICghdGhpcy5zbGVlcCkge1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5zZWxmQmVoYXZpb3Vycy5sZW5ndGg7XG4gICAgICBsZXQgaTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuc2VsZkJlaGF2aW91cnNbaV0uYXBwbHlCZWhhdmlvdXIodGhpcywgdGltZSwgaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEVtaXR0ZXIgZnJvbSBcIi4vRW1pdHRlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb2xsb3dFbWl0dGVyIGV4dGVuZHMgRW1pdHRlciB7XG4gIC8qKlxuICAgKiBUaGUgRm9sbG93RW1pdHRlciBjbGFzcyBpbmhlcml0cyBmcm9tIFByb3Rvbi5FbWl0dGVyXG4gICAqXG4gICAqIHVzZSB0aGUgRm9sbG93RW1pdHRlciB3aWxsIGVtaXQgcGFydGljbGUgd2hlbiBtb3VzZW1vdmluZ1xuICAgKlxuICAgKiBAY2xhc3MgUHJvdG9uLkZvbGxvd0VtaXR0ZXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7RWxlbWVudH0gbW91c2VUYXJnZXQgbW91c2VldmVudCdzIHRhcmdldDtcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGVhc2UgdGhlIGVhc2luZyBvZiBmb2xsb3dpbmcgc3BlZWQ7XG4gICAqIEBkZWZhdWx0IDAuN1xuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZiB0aGUgcGFyYW1ldGVycyBvYmplY3Q7XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihtb3VzZVRhcmdldCwgZWFzZSwgY29uZikge1xuICAgIHN1cGVyKGNvbmYpO1xuXG4gICAgdGhpcy5tb3VzZVRhcmdldCA9IFV0aWwuaW5pdFZhbHVlKG1vdXNlVGFyZ2V0LCB3aW5kb3cpO1xuICAgIHRoaXMuZWFzZSA9IFV0aWwuaW5pdFZhbHVlKGVhc2UsIDAuNyk7XG5cbiAgICB0aGlzLl9hbGxvd0VtaXR0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RXZlbnRIYW5kbGVyKCk7XG4gIH1cblxuICBpbml0RXZlbnRIYW5kbGVyKCkge1xuICAgIHRoaXMubW91c2Vtb3ZlSGFuZGxlciA9IGUgPT4gdGhpcy5tb3VzZW1vdmUuY2FsbCh0aGlzLCBlKTtcbiAgICB0aGlzLm1vdXNlZG93bkhhbmRsZXIgPSBlID0+IHRoaXMubW91c2Vkb3duLmNhbGwodGhpcywgZSk7XG4gICAgdGhpcy5tb3VzZXVwSGFuZGxlciA9IGUgPT4gdGhpcy5tb3VzZXVwLmNhbGwodGhpcywgZSk7XG4gICAgdGhpcy5tb3VzZVRhcmdldC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMubW91c2Vtb3ZlSGFuZGxlciwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0IGVtaXQgcGFydGljbGVcbiAgICogQG1ldGhvZCBlbWl0XG4gICAqL1xuICBlbWl0KCkge1xuICAgIHRoaXMuX2FsbG93RW1pdHRpbmcgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0b3AgZW1pdGluZ1xuICAgKiBAbWV0aG9kIHN0b3BcbiAgICovXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5fYWxsb3dFbWl0dGluZyA9IGZhbHNlO1xuICB9XG5cbiAgbW91c2Vtb3ZlKGUpIHtcbiAgICBpZiAoZS5sYXllclggfHwgZS5sYXllclggPT09IDApIHtcbiAgICAgIHRoaXMucC54ICs9IChlLmxheWVyWCAtIHRoaXMucC54KSAqIHRoaXMuZWFzZTtcbiAgICAgIHRoaXMucC55ICs9IChlLmxheWVyWSAtIHRoaXMucC55KSAqIHRoaXMuZWFzZTtcbiAgICB9IGVsc2UgaWYgKGUub2Zmc2V0WCB8fCBlLm9mZnNldFggPT09IDApIHtcbiAgICAgIHRoaXMucC54ICs9IChlLm9mZnNldFggLSB0aGlzLnAueCkgKiB0aGlzLmVhc2U7XG4gICAgICB0aGlzLnAueSArPSAoZS5vZmZzZXRZIC0gdGhpcy5wLnkpICogdGhpcy5lYXNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9hbGxvd0VtaXR0aW5nKSBzdXBlci5lbWl0KFwib25jZVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgRW1pdHRlclxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMubW91c2VUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdXNlbW92ZUhhbmRsZXIsIGZhbHNlKTtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgYSBwaWN0dXJlIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBpcyBvciBub1xuICAgKi9cbiAgaXNJbWFnZShvYmopIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChvYmouX19pc0ltYWdlKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IHRhZ05hbWUgPSBgJHtvYmoudGFnTmFtZX1gLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3Qgbm9kZU5hbWUgPSBgJHtvYmoubm9kZU5hbWV9YC50b1VwcGVyQ2FzZSgpO1xuICAgIGlmIChub2RlTmFtZSA9PT0gXCJJTUdcIiB8fCB0YWdOYW1lID09PSBcIklNR1wiKSB7XG4gICAgICBvYmouX19pc0ltYWdlID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgYSBzdHJpbmcgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IGlzIG9yIG5vXG4gICAqL1xuICBpc1N0cmluZyhvYmopIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIjtcbiAgfVxufTtcbiIsImltcG9ydCBQb29sIGZyb20gXCIuLi9jb3JlL1Bvb2xcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgc3Ryb2tlKSB7XG4gICAgdGhpcy5wb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuc3Ryb2tlID0gc3Ryb2tlO1xuICAgIHRoaXMuY2lyY2xlQ29uZiA9IHsgaXNDaXJjbGU6IHRydWUgfTtcblxuICAgIHRoaXMuaW5pdEV2ZW50SGFuZGxlcigpO1xuICAgIHRoaXMubmFtZSA9IFwiQmFzZVJlbmRlcmVyXCI7XG4gIH1cblxuICBzZXRTdHJva2UoY29sb3IgPSBcIiMwMDAwMDBcIiwgdGhpbmtuZXNzID0gMSkge1xuICAgIHRoaXMuc3Ryb2tlID0geyBjb2xvciwgdGhpbmtuZXNzIH07XG4gIH1cblxuICBpbml0RXZlbnRIYW5kbGVyKCkge1xuICAgIHRoaXMuX3Byb3RvblVwZGF0ZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLm9uUHJvdG9uVXBkYXRlLmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRoaXMuX3Byb3RvblVwZGF0ZUFmdGVySGFuZGxlciA9ICgpID0+IHtcbiAgICAgIHRoaXMub25Qcm90b25VcGRhdGVBZnRlci5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0aGlzLl9lbWl0dGVyQWRkZWRIYW5kbGVyID0gZW1pdHRlciA9PiB7XG4gICAgICB0aGlzLm9uRW1pdHRlckFkZGVkLmNhbGwodGhpcywgZW1pdHRlcik7XG4gICAgfTtcblxuICAgIHRoaXMuX2VtaXR0ZXJSZW1vdmVkSGFuZGxlciA9IGVtaXR0ZXIgPT4ge1xuICAgICAgdGhpcy5vbkVtaXR0ZXJSZW1vdmVkLmNhbGwodGhpcywgZW1pdHRlcik7XG4gICAgfTtcblxuICAgIHRoaXMuX3BhcnRpY2xlQ3JlYXRlZEhhbmRsZXIgPSBwYXJ0aWNsZSA9PiB7XG4gICAgICB0aGlzLm9uUGFydGljbGVDcmVhdGVkLmNhbGwodGhpcywgcGFydGljbGUpO1xuICAgIH07XG5cbiAgICB0aGlzLl9wYXJ0aWNsZVVwZGF0ZUhhbmRsZXIgPSBwYXJ0aWNsZSA9PiB7XG4gICAgICB0aGlzLm9uUGFydGljbGVVcGRhdGUuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7XG4gICAgfTtcblxuICAgIHRoaXMuX3BhcnRpY2xlRGVhZEhhbmRsZXIgPSBwYXJ0aWNsZSA9PiB7XG4gICAgICB0aGlzLm9uUGFydGljbGVEZWFkLmNhbGwodGhpcywgcGFydGljbGUpO1xuICAgIH07XG4gIH1cblxuICBpbml0KHByb3Rvbikge1xuICAgIHRoaXMucGFyZW50ID0gcHJvdG9uO1xuXG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFXCIsIHRoaXMuX3Byb3RvblVwZGF0ZUhhbmRsZXIpO1xuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUFJPVE9OX1VQREFURV9BRlRFUlwiLCB0aGlzLl9wcm90b25VcGRhdGVBZnRlckhhbmRsZXIpO1xuXG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX0FEREVEXCIsIHRoaXMuX2VtaXR0ZXJBZGRlZEhhbmRsZXIpO1xuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiRU1JVFRFUl9SRU1PVkVEXCIsIHRoaXMuX2VtaXR0ZXJSZW1vdmVkSGFuZGxlcik7XG5cbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX0NSRUFURURcIiwgdGhpcy5fcGFydGljbGVDcmVhdGVkSGFuZGxlcik7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9VUERBVEVcIiwgdGhpcy5fcGFydGljbGVVcGRhdGVIYW5kbGVyKTtcbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX0RFQURcIiwgdGhpcy5fcGFydGljbGVEZWFkSGFuZGxlcik7XG4gIH1cblxuICByZXNpemUod2lkdGgsIGhlaWdodCkge31cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgdGhpcy5wb29sLmRlc3Ryb3koKTtcbiAgICB0aGlzLnBvb2wgPSBudWxsO1xuICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5zdHJva2UgPSBudWxsO1xuICB9XG5cbiAgcmVtb3ZlKHByb3Rvbikge1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFXCIsIHRoaXMuX3Byb3RvblVwZGF0ZUhhbmRsZXIpO1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFX0FGVEVSXCIsIHRoaXMuX3Byb3RvblVwZGF0ZUFmdGVySGFuZGxlcik7XG5cbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRU1JVFRFUl9BRERFRFwiLCB0aGlzLl9lbWl0dGVyQWRkZWRIYW5kbGVyKTtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRU1JVFRFUl9SRU1PVkVEXCIsIHRoaXMuX2VtaXR0ZXJSZW1vdmVkSGFuZGxlcik7XG5cbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfQ1JFQVRFRFwiLCB0aGlzLl9wYXJ0aWNsZUNyZWF0ZWRIYW5kbGVyKTtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfVVBEQVRFXCIsIHRoaXMuX3BhcnRpY2xlVXBkYXRlSGFuZGxlcik7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX0RFQURcIiwgdGhpcy5fcGFydGljbGVEZWFkSGFuZGxlcik7XG5cbiAgICB0aGlzLnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBvblByb3RvblVwZGF0ZSgpIHt9XG4gIG9uUHJvdG9uVXBkYXRlQWZ0ZXIoKSB7fVxuXG4gIG9uRW1pdHRlckFkZGVkKGVtaXR0ZXIpIHt9XG4gIG9uRW1pdHRlclJlbW92ZWQoZW1pdHRlcikge31cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge31cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge31cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHt9XG59XG4iLCJpbXBvcnQgVHlwZXMgZnJvbSBcIi4uL3V0aWxzL1R5cGVzXCI7XG5pbXBvcnQgSW1nVXRpbCBmcm9tIFwiLi4vdXRpbHMvSW1nVXRpbFwiO1xuaW1wb3J0IENvbG9yVXRpbCBmcm9tIFwiLi4vdXRpbHMvQ29sb3JVdGlsXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbi8qKlxuICogQ2FudmFzUmVuZGVyZXIgY2xhc3MgZm9yIHJlbmRlcmluZyBwYXJ0aWNsZXMgb24gYSBjYW52YXMgZWxlbWVudC5cbiAqIEBleHRlbmRzIEJhc2VSZW5kZXJlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYW52YXNSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBAdHlwZSB7b2JqZWN0fG51bGx9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdHJva2U7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb250ZXh0O1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYnVmZmVyQ2FjaGU7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENhbnZhc1JlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSBlbGVtZW50IC0gVGhlIGNhbnZhcyBlbGVtZW50IHRvIHJlbmRlciBvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIHRoaXMuYnVmZmVyQ2FjaGUgPSB7fTtcbiAgICB0aGlzLm5hbWUgPSBcIkNhbnZhc1JlbmRlcmVyXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzaXplcyB0aGUgY2FudmFzIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIFRoZSBuZXcgd2lkdGggb2YgdGhlIGNhbnZhcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCAtIFRoZSBuZXcgaGVpZ2h0IG9mIHRoZSBjYW52YXMuXG4gICAqL1xuICByZXNpemUod2lkdGgsIGhlaWdodCkge1xuICAgIHRoaXMuZWxlbWVudC53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuZWxlbWVudC5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBjYW52YXMgb24gUHJvdG9uIHVwZGF0ZS5cbiAgICovXG4gIG9uUHJvdG9uVXBkYXRlKCkge1xuICAgIHRoaXMuY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5lbGVtZW50LndpZHRoLCB0aGlzLmVsZW1lbnQuaGVpZ2h0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHBhcnRpY2xlIGNyZWF0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSBUaGUgY3JlYXRlZCBwYXJ0aWNsZS5cbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIEltZ1V0aWwuZ2V0SW1nRnJvbUNhY2hlKHBhcnRpY2xlLmJvZHksIHRoaXMuYWRkSW1nMkJvZHksIHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUuY29sb3IgPSBwYXJ0aWNsZS5jb2xvciB8fCBcIiNmZjAwMDBcIjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBwYXJ0aWNsZSB1cGRhdGVzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSBUaGUgdXBkYXRlZCBwYXJ0aWNsZS5cbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgaWYgKFR5cGVzLmlzSW1hZ2UocGFydGljbGUuYm9keSkpIHtcbiAgICAgICAgdGhpcy5kcmF3SW1hZ2UocGFydGljbGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYXdDaXJjbGUocGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHBhcnRpY2xlIGRlc3RydWN0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSBUaGUgZGVzdHJveWVkIHBhcnRpY2xlLlxuICAgKi9cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGltYWdlIHRvIHRoZSBwYXJ0aWNsZSBib2R5LlxuICAgKiBAcGFyYW0ge0hUTUxJbWFnZUVsZW1lbnR9IGltZyAtIFRoZSBpbWFnZSB0byBhZGQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBhZGQgdGhlIGltYWdlIHRvLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYWRkSW1nMkJvZHkoaW1nLCBwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmJvZHkgPSBpbWc7XG4gIH1cblxuICAvKipcbiAgICogRHJhd3MgYW4gaW1hZ2UgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBkcmF3LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZHJhd0ltYWdlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgdyA9IChwYXJ0aWNsZS5ib2R5LndpZHRoICogcGFydGljbGUuc2NhbGUpIHwgMDtcbiAgICBjb25zdCBoID0gKHBhcnRpY2xlLmJvZHkuaGVpZ2h0ICogcGFydGljbGUuc2NhbGUpIHwgMDtcbiAgICBjb25zdCB4ID0gcGFydGljbGUucC54IC0gdyAvIDI7XG4gICAgY29uc3QgeSA9IHBhcnRpY2xlLnAueSAtIGggLyAyO1xuXG4gICAgaWYgKCEhcGFydGljbGUuY29sb3IpIHtcbiAgICAgIGlmICghcGFydGljbGUuZGF0YVtcImJ1ZmZlclwiXSkgcGFydGljbGUuZGF0YS5idWZmZXIgPSB0aGlzLmNyZWF0ZUJ1ZmZlcihwYXJ0aWNsZS5ib2R5KTtcblxuICAgICAgY29uc3QgYnVmQ29udGV4dCA9IHBhcnRpY2xlLmRhdGEuYnVmZmVyLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgIGJ1ZkNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHBhcnRpY2xlLmRhdGEuYnVmZmVyLndpZHRoLCBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci5oZWlnaHQpO1xuICAgICAgYnVmQ29udGV4dC5nbG9iYWxBbHBoYSA9IHBhcnRpY2xlLmFscGhhO1xuICAgICAgYnVmQ29udGV4dC5kcmF3SW1hZ2UocGFydGljbGUuYm9keSwgMCwgMCk7XG5cbiAgICAgIGJ1ZkNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gXCJzb3VyY2UtYXRvcFwiO1xuICAgICAgYnVmQ29udGV4dC5maWxsU3R5bGUgPSBDb2xvclV0aWwucmdiVG9IZXgocGFydGljbGUucmdiKTtcbiAgICAgIGJ1ZkNvbnRleHQuZmlsbFJlY3QoMCwgMCwgcGFydGljbGUuZGF0YS5idWZmZXIud2lkdGgsIHBhcnRpY2xlLmRhdGEuYnVmZmVyLmhlaWdodCk7XG4gICAgICBidWZDb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IFwic291cmNlLW92ZXJcIjtcbiAgICAgIGJ1ZkNvbnRleHQuZ2xvYmFsQWxwaGEgPSAxO1xuXG4gICAgICB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICBwYXJ0aWNsZS5kYXRhLmJ1ZmZlcixcbiAgICAgICAgMCxcbiAgICAgICAgMCxcbiAgICAgICAgcGFydGljbGUuZGF0YS5idWZmZXIud2lkdGgsXG4gICAgICAgIHBhcnRpY2xlLmRhdGEuYnVmZmVyLmhlaWdodCxcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgdyxcbiAgICAgICAgaFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250ZXh0LnNhdmUoKTtcblxuICAgICAgdGhpcy5jb250ZXh0Lmdsb2JhbEFscGhhID0gcGFydGljbGUuYWxwaGE7XG4gICAgICB0aGlzLmNvbnRleHQudHJhbnNsYXRlKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KTtcbiAgICAgIHRoaXMuY29udGV4dC5yb3RhdGUoTWF0aFV0aWwuZGVncmVlVHJhbnNmb3JtKHBhcnRpY2xlLnJvdGF0aW9uKSk7XG4gICAgICB0aGlzLmNvbnRleHQudHJhbnNsYXRlKC1wYXJ0aWNsZS5wLngsIC1wYXJ0aWNsZS5wLnkpO1xuICAgICAgdGhpcy5jb250ZXh0LmRyYXdJbWFnZShwYXJ0aWNsZS5ib2R5LCAwLCAwLCBwYXJ0aWNsZS5ib2R5LndpZHRoLCBwYXJ0aWNsZS5ib2R5LmhlaWdodCwgeCwgeSwgdywgaCk7XG5cbiAgICAgIHRoaXMuY29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG4gICAgICB0aGlzLmNvbnRleHQucmVzdG9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3cyBhIGNpcmN1bGFyIHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gZHJhdy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRyYXdDaXJjbGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUucmdiKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gYHJnYmEoJHtwYXJ0aWNsZS5yZ2Iucn0sJHtwYXJ0aWNsZS5yZ2IuZ30sJHtwYXJ0aWNsZS5yZ2IuYn0sJHtwYXJ0aWNsZS5hbHBoYX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9IHBhcnRpY2xlLmNvbG9yO1xuICAgIH1cblxuICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB0aGlzLmNvbnRleHQuYXJjKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55LCBwYXJ0aWNsZS5yYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLnN0cm9rZSkge1xuICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gdGhpcy5zdHJva2UuY29sb3I7XG4gICAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gdGhpcy5zdHJva2UudGhpbmtuZXNzO1xuICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZSgpO1xuICAgIH1cblxuICAgIHRoaXMuY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLmNvbnRleHQuZmlsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBidWZmZXIgZm9yIGltYWdlIHBhcnRpY2xlcy5cbiAgICogQHBhcmFtIHtIVE1MSW1hZ2VFbGVtZW50fSBpbWFnZSAtIFRoZSBpbWFnZSB0byBjcmVhdGUgYSBidWZmZXIgZm9yLlxuICAgKiBAcmV0dXJucyB7SFRNTENhbnZhc0VsZW1lbnR8dW5kZWZpbmVkfSBUaGUgY3JlYXRlZCBidWZmZXIgY2FudmFzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY3JlYXRlQnVmZmVyKGltYWdlKSB7XG4gICAgaWYgKFR5cGVzLmlzSW1hZ2UoaW1hZ2UpKSB7XG4gICAgICBjb25zdCBzaXplID0gaW1hZ2Uud2lkdGggKyBcIl9cIiArIGltYWdlLmhlaWdodDtcbiAgICAgIGxldCBjYW52YXMgPSB0aGlzLmJ1ZmZlckNhY2hlW3NpemVdO1xuXG4gICAgICBpZiAoIWNhbnZhcykge1xuICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICBjYW52YXMud2lkdGggPSBpbWFnZS53aWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGltYWdlLmhlaWdodDtcbiAgICAgICAgdGhpcy5idWZmZXJDYWNoZVtzaXplXSA9IGNhbnZhcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbnZhcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIHJlbmRlcmVyIGFuZCBjbGVhbnMgdXAgcmVzb3VyY2VzLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5zdHJva2UgPSBudWxsO1xuICAgIHRoaXMuY29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5idWZmZXJDYWNoZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBEb21VdGlsIGZyb20gXCIuLi91dGlscy9Eb21VdGlsXCI7XG5pbXBvcnQgSW1nVXRpbCBmcm9tIFwiLi4vdXRpbHMvSW1nVXRpbFwiO1xuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgRE9NLWJhc2VkIHJlbmRlcmVyIGZvciBwYXJ0aWNsZSBzeXN0ZW1zLlxuICogQGV4dGVuZHMgQmFzZVJlbmRlcmVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERvbVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRG9tUmVuZGVyZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgSFRNTCBlbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLnRyYW5zZm9ybTNkID0gZmFsc2U7XG4gICAgdGhpcy5wb29sLmNyZWF0ZSA9IChib2R5LCBwYXJ0aWNsZSkgPT4gdGhpcy5jcmVhdGVCb2R5KGJvZHksIHBhcnRpY2xlKTtcbiAgICB0aGlzLmFkZEltZzJCb2R5ID0gdGhpcy5hZGRJbWcyQm9keS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJEb21SZW5kZXJlclwiO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgSW1nVXRpbC5nZXRJbWdGcm9tQ2FjaGUocGFydGljbGUuYm9keSwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldCh0aGlzLmNpcmNsZUNvbmYsIHBhcnRpY2xlKTtcbiAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuYm9keVJlYWR5KHBhcnRpY2xlKSkge1xuICAgICAgaWYgKHRoaXMudHJhbnNmb3JtM2QpIHtcbiAgICAgICAgRG9tVXRpbC50cmFuc2Zvcm0zZChwYXJ0aWNsZS5ib2R5LCBwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSwgcGFydGljbGUuc2NhbGUsIHBhcnRpY2xlLnJvdGF0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERvbVV0aWwudHJhbnNmb3JtKHBhcnRpY2xlLmJvZHksIHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55LCBwYXJ0aWNsZS5zY2FsZSwgcGFydGljbGUucm90YXRpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJ0aWNsZS5ib2R5LnN0eWxlLm9wYWNpdHkgPSBwYXJ0aWNsZS5hbHBoYTtcblxuICAgICAgaWYgKHBhcnRpY2xlLmJvZHkuaXNDaXJjbGUpIHtcbiAgICAgICAgcGFydGljbGUuYm9keS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBwYXJ0aWNsZS5jb2xvciB8fCBcIiNmZjAwMDBcIjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmJvZHlSZWFkeShwYXJ0aWNsZSkpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBib2R5UmVhZHkocGFydGljbGUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHBhcnRpY2xlLmJvZHkgPT09IFwib2JqZWN0XCIgJiYgcGFydGljbGUuYm9keSAmJiAhcGFydGljbGUuYm9keS5pc0lubmVyO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBtZXRob2RcbiAgYWRkSW1nMkJvZHkoaW1nLCBwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5kZWFkKSByZXR1cm47XG4gICAgcGFydGljbGUuYm9keSA9IHRoaXMucG9vbC5nZXQoaW1nLCBwYXJ0aWNsZSk7XG4gICAgRG9tVXRpbC5yZXNpemUocGFydGljbGUuYm9keSwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcblxuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgfVxuXG4gIGNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpIHtcbiAgICBpZiAoYm9keS5pc0NpcmNsZSkgcmV0dXJuIHRoaXMuY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKTtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTcHJpdGUoYm9keSwgcGFydGljbGUpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBtZXRob2RzXG4gIGNyZWF0ZUNpcmNsZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGRvbSA9IERvbVV0aWwuY3JlYXRlRGl2KGAke3BhcnRpY2xlLmlkfV9kb21gLCAyICogcGFydGljbGUucmFkaXVzLCAyICogcGFydGljbGUucmFkaXVzKTtcbiAgICBkb20uc3R5bGUuYm9yZGVyUmFkaXVzID0gYCR7cGFydGljbGUucmFkaXVzfXB4YDtcblxuICAgIGlmICh0aGlzLnN0cm9rZSkge1xuICAgICAgZG9tLnN0eWxlLmJvcmRlckNvbG9yID0gdGhpcy5zdHJva2UuY29sb3I7XG4gICAgICBkb20uc3R5bGUuYm9yZGVyV2lkdGggPSBgJHt0aGlzLnN0cm9rZS50aGlua25lc3N9cHhgO1xuICAgIH1cbiAgICBkb20uaXNDaXJjbGUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGRvbTtcbiAgfVxuXG4gIGNyZWF0ZVNwcml0ZShib2R5LCBwYXJ0aWNsZSkge1xuICAgIGNvbnN0IHVybCA9IHR5cGVvZiBib2R5ID09PSBcInN0cmluZ1wiID8gYm9keSA6IGJvZHkuc3JjO1xuICAgIGNvbnN0IGRvbSA9IERvbVV0aWwuY3JlYXRlRGl2KGAke3BhcnRpY2xlLmlkfV9kb21gLCBib2R5LndpZHRoLCBib2R5LmhlaWdodCk7XG4gICAgZG9tLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJHt1cmx9KWA7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSByZW5kZXJlciBhbmQgY2xlYW5zIHVwIHJlc291cmNlcy5cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgfVxufVxuIiwiaW1wb3J0IFR5cGVzIGZyb20gXCIuLi91dGlscy9UeXBlc1wiO1xuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzZWxSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHN0cm9rZSkge1xuICAgIHN1cGVyKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5zdHJva2UgPSBzdHJva2U7XG4gICAgdGhpcy5uYW1lID0gXCJFYXNlbFJlbmRlcmVyXCI7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICB0aGlzLmNyZWF0ZVNwcml0ZShwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVsZW1lbnQuYWRkQ2hpbGQocGFydGljbGUuYm9keSk7XG4gIH1cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkueCA9IHBhcnRpY2xlLnAueDtcbiAgICAgIHBhcnRpY2xlLmJvZHkueSA9IHBhcnRpY2xlLnAueTtcblxuICAgICAgcGFydGljbGUuYm9keS5hbHBoYSA9IHBhcnRpY2xlLmFscGhhO1xuICAgICAgcGFydGljbGUuYm9keS5zY2FsZVggPSBwYXJ0aWNsZS5ib2R5LnNjYWxlWSA9IHBhcnRpY2xlLnNjYWxlO1xuICAgICAgcGFydGljbGUuYm9keS5yb3RhdGlvbiA9IHBhcnRpY2xlLnJvdGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkucGFyZW50ICYmIHBhcnRpY2xlLmJvZHkucGFyZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgICAgdGhpcy5wb29sLmV4cGlyZShwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChwYXJ0aWNsZS5ncmFwaGljcykgdGhpcy5wb29sLmV4cGlyZShwYXJ0aWNsZS5ncmFwaGljcyk7XG4gIH1cblxuICAvLyBwcml2YXRlXG4gIGNyZWF0ZVNwcml0ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHBhcnRpY2xlLmJvZHkpO1xuXG4gICAgaWYgKHBhcnRpY2xlLmJvZHkucGFyZW50KSByZXR1cm47XG4gICAgaWYgKHBhcnRpY2xlLmJvZHlbXCJpbWFnZVwiXSkge1xuICAgICAgcGFydGljbGUuYm9keS5yZWdYID0gcGFydGljbGUuYm9keS5pbWFnZS53aWR0aCAvIDI7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnJlZ1kgPSBwYXJ0aWNsZS5ib2R5LmltYWdlLmhlaWdodCAvIDI7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZ3JhcGhpY3MgPSB0aGlzLnBvb2wuZ2V0KHdpbmRvdy5jcmVhdGVqcy5HcmFwaGljcyk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGlmIChUeXBlcy5pc1N0cmluZyh0aGlzLnN0cm9rZSkpIHtcbiAgICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2UodGhpcy5zdHJva2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2UoXCIjMDAwMDAwXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBncmFwaGljcy5iZWdpbkZpbGwocGFydGljbGUuY29sb3IgfHwgXCIjZmYwMDAwXCIpLmRyYXdDaXJjbGUoMCwgMCwgcGFydGljbGUucmFkaXVzKTtcbiAgICBjb25zdCBzaGFwZSA9IHRoaXMucG9vbC5nZXQod2luZG93LmNyZWF0ZWpzLlNoYXBlLCBbZ3JhcGhpY3NdKTtcblxuICAgIHBhcnRpY2xlLmJvZHkgPSBzaGFwZTtcbiAgICBwYXJ0aWNsZS5ncmFwaGljcyA9IGdyYXBoaWNzO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5zdHJva2UgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgUmVjdGFuZ2xlIGZyb20gXCIuLi9tYXRoL1JlY3RhbmdsZVwiO1xuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGl4ZWwtYmFzZWQgcmVuZGVyZXIgZm9yIHBhcnRpY2xlIHN5c3RlbXMuXG4gKiBAZXh0ZW5kcyBCYXNlUmVuZGVyZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGl4ZWxSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBpeGVsUmVuZGVyZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7SFRNTENhbnZhc0VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgY2FudmFzIGVsZW1lbnQgdG8gcmVuZGVyIHRvLlxuICAgKiBAcGFyYW0ge1JlY3RhbmdsZX0gW3JlY3RhbmdsZV0gLSBUaGUgcmVjdGFuZ2xlIGRlZmluaW5nIHRoZSByZW5kZXJpbmcgYXJlYS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHJlY3RhbmdsZSkge1xuICAgIHN1cGVyKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICB0aGlzLmltYWdlRGF0YSA9IG51bGw7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSByZWN0YW5nbGU7XG4gICAgdGhpcy5jcmVhdGVJbWFnZURhdGEocmVjdGFuZ2xlKTtcblxuICAgIHRoaXMubmFtZSA9IFwiUGl4ZWxSZW5kZXJlclwiO1xuICB9XG5cbiAgcmVzaXplKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB0aGlzLmVsZW1lbnQud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmVsZW1lbnQuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgY3JlYXRlSW1hZ2VEYXRhKHJlY3RhbmdsZSkge1xuICAgIHRoaXMucmVjdGFuZ2xlID0gcmVjdGFuZ2xlID8gcmVjdGFuZ2xlIDogbmV3IFJlY3RhbmdsZSgwLCAwLCB0aGlzLmVsZW1lbnQud2lkdGgsIHRoaXMuZWxlbWVudC5oZWlnaHQpO1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gdGhpcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh0aGlzLnJlY3RhbmdsZS53aWR0aCwgdGhpcy5yZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICB0aGlzLmNvbnRleHQucHV0SW1hZ2VEYXRhKHRoaXMuaW1hZ2VEYXRhLCB0aGlzLnJlY3RhbmdsZS54LCB0aGlzLnJlY3RhbmdsZS55KTtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlKCkge1xuICAgIHRoaXMuY29udGV4dC5jbGVhclJlY3QodGhpcy5yZWN0YW5nbGUueCwgdGhpcy5yZWN0YW5nbGUueSwgdGhpcy5yZWN0YW5nbGUud2lkdGgsIHRoaXMucmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgdGhpcy5pbWFnZURhdGEgPSB0aGlzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKFxuICAgICAgdGhpcy5yZWN0YW5nbGUueCxcbiAgICAgIHRoaXMucmVjdGFuZ2xlLnksXG4gICAgICB0aGlzLnJlY3RhbmdsZS53aWR0aCxcbiAgICAgIHRoaXMucmVjdGFuZ2xlLmhlaWdodFxuICAgICk7XG4gIH1cblxuICBvblByb3RvblVwZGF0ZUFmdGVyKCkge1xuICAgIHRoaXMuY29udGV4dC5wdXRJbWFnZURhdGEodGhpcy5pbWFnZURhdGEsIHRoaXMucmVjdGFuZ2xlLngsIHRoaXMucmVjdGFuZ2xlLnkpO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHt9XG5cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmltYWdlRGF0YSkge1xuICAgICAgdGhpcy5zZXRQaXhlbChcbiAgICAgICAgdGhpcy5pbWFnZURhdGEsXG4gICAgICAgIChwYXJ0aWNsZS5wLnggLSB0aGlzLnJlY3RhbmdsZS54KSA+PiAwLFxuICAgICAgICAocGFydGljbGUucC55IC0gdGhpcy5yZWN0YW5nbGUueSkgPj4gMCxcbiAgICAgICAgcGFydGljbGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2V0UGl4ZWwoaW1hZ2VkYXRhLCB4LCB5LCBwYXJ0aWNsZSkge1xuICAgIGNvbnN0IHJnYiA9IHBhcnRpY2xlLnJnYjtcbiAgICBpZiAoeCA8IDAgfHwgeCA+IHRoaXMuZWxlbWVudC53aWR0aCB8fCB5IDwgMCB8fCB5ID4gdGhpcy5lbGVtZW50LmhlaWdodCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaSA9ICgoeSA+PiAwKSAqIGltYWdlZGF0YS53aWR0aCArICh4ID4+IDApKSAqIDQ7XG4gICAgaW1hZ2VkYXRhLmRhdGFbaV0gPSByZ2IucjtcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgMV0gPSByZ2IuZztcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgMl0gPSByZ2IuYjtcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgM10gPSBwYXJ0aWNsZS5hbHBoYSAqIDI1NTtcbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7fVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcmVuZGVyZXIgYW5kIGNsZWFucyB1cCByZXNvdXJjZXMuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gICAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgICB0aGlzLmltYWdlRGF0YSA9IG51bGw7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgVHlwZXMgZnJvbSBcIi4uL3V0aWxzL1R5cGVzXCI7XG5pbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxubGV0IFBJWElDbGFzcztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgUElYSS1iYXNlZCByZW5kZXJlciBmb3IgcGFydGljbGUgc3lzdGVtcy5cbiAqIEBleHRlbmRzIEJhc2VSZW5kZXJlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQaXhpUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQaXhpUmVuZGVyZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7UElYSS5Db250YWluZXJ9IGVsZW1lbnQgLSBUaGUgUElYSSBjb250YWluZXIgdG8gcmVuZGVyIHRvLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IFtzdHJva2VdIC0gVGhlIHN0cm9rZSBjb2xvciBmb3IgcGFydGljbGVzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgc3Ryb2tlKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IHN0cm9rZTtcbiAgICB0aGlzLmNvbG9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRDb2xvciA9IGZhbHNlO1xuICAgIHRoaXMuYmxlbmRNb2RlID0gbnVsbDtcbiAgICB0aGlzLnBvb2wuY3JlYXRlID0gKGJvZHksIHBhcnRpY2xlKSA9PiB0aGlzLmNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpO1xuICAgIHRoaXMuc2V0UElYSSh3aW5kb3cuUElYSSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIlBpeGlSZW5kZXJlclwiO1xuICB9XG5cbiAgc2V0UElYSShQSVhJKSB7XG4gICAgdHJ5IHtcbiAgICAgIFBJWElDbGFzcyA9IFBJWEkgfHwgeyBTcHJpdGU6IHt9IH07XG4gICAgICB0aGlzLmNyZWF0ZUZyb21JbWFnZSA9IFBJWElDbGFzcy5TcHJpdGUuZnJvbSB8fCBQSVhJQ2xhc3MuU3ByaXRlLmZyb21JbWFnZTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7fVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHBhcnRpY2xlLmJvZHksIHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUuYm9keSA9IHRoaXMucG9vbC5nZXQodGhpcy5jaXJjbGVDb25mLCBwYXJ0aWNsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmxlbmRNb2RlKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LmJsZW5kTW9kZSA9IHRoaXMuYmxlbmRNb2RlO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudC5hZGRDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICB0aGlzLnRyYW5zZm9ybShwYXJ0aWNsZSwgcGFydGljbGUuYm9keSk7XG5cbiAgICBpZiAodGhpcy5zZXRDb2xvciA9PT0gdHJ1ZSB8fCB0aGlzLmNvbG9yID09PSB0cnVlKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnRpbnQgPSBDb2xvclV0aWwuZ2V0SGV4MTZGcm9tUGFydGljbGUocGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gIH1cblxuICB0cmFuc2Zvcm0ocGFydGljbGUsIHRhcmdldCkge1xuICAgIHRhcmdldC54ID0gcGFydGljbGUucC54O1xuICAgIHRhcmdldC55ID0gcGFydGljbGUucC55O1xuXG4gICAgdGFyZ2V0LmFscGhhID0gcGFydGljbGUuYWxwaGE7XG5cbiAgICB0YXJnZXQuc2NhbGUueCA9IHBhcnRpY2xlLnNjYWxlO1xuICAgIHRhcmdldC5zY2FsZS55ID0gcGFydGljbGUuc2NhbGU7XG5cbiAgICAvLyB1c2luZyBjYWNoZWQgdmVyc2lvbiBvZiBNYXRoVXRpbC5QSV8xODAgZm9yIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZS5cbiAgICB0YXJnZXQucm90YXRpb24gPSBwYXJ0aWNsZS5yb3RhdGlvbiAqIE1hdGhVdGlsLlBJXzE4MDsgLy8gTWF0aFV0aWwuUElfMTgwO1xuICB9XG5cbiAgY3JlYXRlQm9keShib2R5LCBwYXJ0aWNsZSkge1xuICAgIGlmIChib2R5LmlzQ2lyY2xlKSByZXR1cm4gdGhpcy5jcmVhdGVDaXJjbGUocGFydGljbGUpO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMuY3JlYXRlU3ByaXRlKGJvZHkpO1xuICB9XG5cbiAgY3JlYXRlU3ByaXRlKGJvZHkpIHtcbiAgICBjb25zdCBzcHJpdGUgPSBib2R5LmlzSW5uZXIgPyB0aGlzLmNyZWF0ZUZyb21JbWFnZShib2R5LnNyYykgOiBuZXcgUElYSUNsYXNzLlNwcml0ZShib2R5KTtcblxuICAgIHNwcml0ZS5hbmNob3IueCA9IDAuNTtcbiAgICBzcHJpdGUuYW5jaG9yLnkgPSAwLjU7XG5cbiAgICByZXR1cm4gc3ByaXRlO1xuICB9XG5cbiAgY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZ3JhcGhpY3MgPSBuZXcgUElYSUNsYXNzLkdyYXBoaWNzKCk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGNvbnN0IHN0cm9rZSA9IFR5cGVzLmlzU3RyaW5nKHRoaXMuc3Ryb2tlKSA/IHRoaXMuc3Ryb2tlIDogMHgwMDAwMDA7XG4gICAgICBncmFwaGljcy5iZWdpblN0cm9rZShzdHJva2UpO1xuICAgIH1cblxuICAgIGdyYXBoaWNzLmJlZ2luRmlsbChwYXJ0aWNsZS5jb2xvciB8fCAweDAwOGNlZCk7XG4gICAgZ3JhcGhpY3MuZHJhd0NpcmNsZSgwLCAwLCBwYXJ0aWNsZS5yYWRpdXMpO1xuICAgIGdyYXBoaWNzLmVuZEZpbGwoKTtcblxuICAgIHJldHVybiBncmFwaGljcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcmVuZGVyZXIgYW5kIGNsZWFucyB1cCByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSB7QXJyYXk8UGFydGljbGU+fSBwYXJ0aWNsZXMgLSBUaGUgcGFydGljbGVzIHRvIGNsZWFuIHVwLlxuICAgKi9cbiAgZGVzdHJveShwYXJ0aWNsZXMpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICBsZXQgaSA9IHBhcnRpY2xlcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgbGV0IHBhcnRpY2xlID0gcGFydGljbGVzW2ldO1xuICAgICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IE1hdDMgZnJvbSBcIi4uL21hdGgvTWF0M1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNU3RhY2sge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hdHMgPSBbXTtcbiAgICB0aGlzLnNpemUgPSAwO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB0aGlzLm1hdHMucHVzaChNYXQzLmNyZWF0ZShbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pKTtcbiAgfVxuXG4gIHNldChtLCBpKSB7XG4gICAgaWYgKGkgPT09IDApIE1hdDMuc2V0KG0sIHRoaXMubWF0c1swXSk7XG4gICAgZWxzZSBNYXQzLm11bHRpcGx5KHRoaXMubWF0c1tpIC0gMV0sIG0sIHRoaXMubWF0c1tpXSk7XG5cbiAgICB0aGlzLnNpemUgPSBNYXRoLm1heCh0aGlzLnNpemUsIGkgKyAxKTtcbiAgfVxuXG4gIHB1c2gobSkge1xuICAgIGlmICh0aGlzLnNpemUgPT09IDApIE1hdDMuc2V0KG0sIHRoaXMubWF0c1swXSk7XG4gICAgZWxzZSBNYXQzLm11bHRpcGx5KHRoaXMubWF0c1t0aGlzLnNpemUgLSAxXSwgbSwgdGhpcy5tYXRzW3RoaXMuc2l6ZV0pO1xuXG4gICAgdGhpcy5zaXplKys7XG4gIH1cblxuICBwb3AoKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSA+IDApIHRoaXMuc2l6ZS0tO1xuICB9XG5cbiAgdG9wKCkge1xuICAgIHJldHVybiB0aGlzLm1hdHNbdGhpcy5zaXplIC0gMV07XG4gIH1cbn1cbiIsImltcG9ydCBNYXQzIGZyb20gXCIuLi9tYXRoL01hdDNcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgSW1nVXRpbCBmcm9tIFwiLi4vdXRpbHMvSW1nVXRpbFwiO1xuaW1wb3J0IE1TdGFjayBmcm9tIFwiLi4vdXRpbHMvTVN0YWNrXCI7XG5pbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi4vdXRpbHMvRG9tVXRpbFwiO1xuaW1wb3J0IFdlYkdMVXRpbCBmcm9tIFwiLi4vdXRpbHMvV2ViR0xVdGlsXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgV2ViR0wtYmFzZWQgcmVuZGVyZXIgZm9yIHBhcnRpY2xlIHN5c3RlbXMuXG4gKiBAZXh0ZW5kcyBCYXNlUmVuZGVyZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2ViR0xSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlYkdMUmVuZGVyZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7SFRNTENhbnZhc0VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgY2FudmFzIGVsZW1lbnQgdG8gcmVuZGVyIHRvLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCkge1xuICAgIHN1cGVyKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5nbCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KFwiZXhwZXJpbWVudGFsLXdlYmdsXCIsIHsgYW50aWFsaWFzOiB0cnVlLCBzdGVuY2lsOiBmYWxzZSwgZGVwdGg6IGZhbHNlIH0pO1xuICAgIGlmICghdGhpcy5nbCkgYWxlcnQoXCJTb3JyeSB5b3VyIGJyb3dzZXIgZG8gbm90IHN1cHBlc3QgV2ViR0whXCIpO1xuXG4gICAgdGhpcy5pbml0VmFyKCk7XG4gICAgdGhpcy5zZXRNYXhSYWRpdXMoKTtcbiAgICB0aGlzLmluaXRTaGFkZXJzKCk7XG4gICAgdGhpcy5pbml0QnVmZmVycygpO1xuXG4gICAgdGhpcy5nbC5ibGVuZEVxdWF0aW9uKHRoaXMuZ2wuRlVOQ19BREQpO1xuICAgIHRoaXMuZ2wuYmxlbmRGdW5jKHRoaXMuZ2wuU1JDX0FMUEhBLCB0aGlzLmdsLk9ORV9NSU5VU19TUkNfQUxQSEEpO1xuICAgIHRoaXMuZ2wuZW5hYmxlKHRoaXMuZ2wuQkxFTkQpO1xuICAgIHRoaXMuYWRkSW1nMkJvZHkgPSB0aGlzLmFkZEltZzJCb2R5LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIldlYkdMUmVuZGVyZXJcIjtcbiAgfVxuXG4gIGluaXQocHJvdG9uKSB7XG4gICAgc3VwZXIuaW5pdChwcm90b24pO1xuICAgIHRoaXMucmVzaXplKHRoaXMuZWxlbWVudC53aWR0aCwgdGhpcy5lbGVtZW50LmhlaWdodCk7XG4gIH1cblxuICByZXNpemUod2lkdGgsIGhlaWdodCkge1xuICAgIHRoaXMudW1hdFs0XSA9IC0yO1xuICAgIHRoaXMudW1hdFs3XSA9IDE7XG5cbiAgICB0aGlzLnNtYXRbMF0gPSAxIC8gd2lkdGg7XG4gICAgdGhpcy5zbWF0WzRdID0gMSAvIGhlaWdodDtcblxuICAgIHRoaXMubXN0YWNrLnNldCh0aGlzLnVtYXQsIDApO1xuICAgIHRoaXMubXN0YWNrLnNldCh0aGlzLnNtYXQsIDEpO1xuXG4gICAgdGhpcy5nbC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB0aGlzLmVsZW1lbnQud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmVsZW1lbnQuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgc2V0TWF4UmFkaXVzKHJhZGl1cykge1xuICAgIHRoaXMuY2lyY2xlQ2FudmFzVVJMID0gdGhpcy5jcmVhdGVDaXJjbGUocmFkaXVzKTtcbiAgfVxuXG4gIGdldFZlcnRleFNoYWRlcigpIHtcbiAgICBjb25zdCB2c1NvdXJjZSA9IFtcbiAgICAgIFwidW5pZm9ybSB2ZWMyIHZpZXdwb3J0O1wiLFxuICAgICAgXCJhdHRyaWJ1dGUgdmVjMiBhVmVydGV4UG9zaXRpb247XCIsXG4gICAgICBcImF0dHJpYnV0ZSB2ZWMyIGFUZXh0dXJlQ29vcmQ7XCIsXG4gICAgICBcInVuaWZvcm0gbWF0MyB0TWF0O1wiLFxuICAgICAgXCJ2YXJ5aW5nIHZlYzIgdlRleHR1cmVDb29yZDtcIixcbiAgICAgIFwidmFyeWluZyBmbG9hdCBhbHBoYTtcIixcbiAgICAgIFwidm9pZCBtYWluKCkge1wiLFxuICAgICAgXCJ2ZWMzIHYgPSB0TWF0ICogdmVjMyhhVmVydGV4UG9zaXRpb24sIDEuMCk7XCIsXG4gICAgICBcImdsX1Bvc2l0aW9uID0gdmVjNCh2LngsIHYueSwgMCwgMSk7XCIsXG4gICAgICBcInZUZXh0dXJlQ29vcmQgPSBhVGV4dHVyZUNvb3JkO1wiLFxuICAgICAgXCJhbHBoYSA9IHRNYXRbMF1bMl07XCIsXG4gICAgICBcIn1cIlxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgICByZXR1cm4gdnNTb3VyY2U7XG4gIH1cblxuICBnZXRGcmFnbWVudFNoYWRlcigpIHtcbiAgICBjb25zdCBmc1NvdXJjZSA9IFtcbiAgICAgIFwicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XCIsXG4gICAgICBcInZhcnlpbmcgdmVjMiB2VGV4dHVyZUNvb3JkO1wiLFxuICAgICAgXCJ2YXJ5aW5nIGZsb2F0IGFscGhhO1wiLFxuICAgICAgXCJ1bmlmb3JtIHNhbXBsZXIyRCB1U2FtcGxlcjtcIixcbiAgICAgIFwidW5pZm9ybSB2ZWM0IGNvbG9yO1wiLFxuICAgICAgXCJ1bmlmb3JtIGJvb2wgdXNlVGV4dHVyZTtcIixcbiAgICAgIFwidW5pZm9ybSB2ZWMzIHVDb2xvcjtcIixcbiAgICAgIFwidm9pZCBtYWluKCkge1wiLFxuICAgICAgXCJ2ZWM0IHRleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1U2FtcGxlciwgdlRleHR1cmVDb29yZCk7XCIsXG4gICAgICBcImdsX0ZyYWdDb2xvciA9IHRleHR1cmVDb2xvciAqIHZlYzQodUNvbG9yLCAxLjApO1wiLFxuICAgICAgXCJnbF9GcmFnQ29sb3IudyAqPSBhbHBoYTtcIixcbiAgICAgIFwifVwiXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiBmc1NvdXJjZTtcbiAgfVxuXG4gIGluaXRWYXIoKSB7XG4gICAgdGhpcy5tc3RhY2sgPSBuZXcgTVN0YWNrKCk7XG4gICAgdGhpcy51bWF0ID0gTWF0My5jcmVhdGUoWzIsIDAsIDEsIDAsIC0yLCAwLCAtMSwgMSwgMV0pO1xuICAgIHRoaXMuc21hdCA9IE1hdDMuY3JlYXRlKFsxIC8gMTAwLCAwLCAxLCAwLCAxIC8gMTAwLCAwLCAwLCAwLCAxXSk7XG4gICAgdGhpcy50ZXh0dXJlYnVmZmVycyA9IHt9O1xuICB9XG5cbiAgYmxlbmRFcXVhdGlvbihBKSB7XG4gICAgdGhpcy5nbC5ibGVuZEVxdWF0aW9uKHRoaXMuZ2xbQV0pO1xuICB9XG5cbiAgYmxlbmRGdW5jKEEsIEIpIHtcbiAgICB0aGlzLmdsLmJsZW5kRnVuYyh0aGlzLmdsW0FdLCB0aGlzLmdsW0JdKTtcbiAgfVxuXG4gIGdldFNoYWRlcihnbCwgc3RyLCBmcykge1xuICAgIGNvbnN0IHNoYWRlciA9IGZzID8gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUikgOiBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7XG5cbiAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdHIpO1xuICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyKTtcblxuICAgIGlmICghZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuQ09NUElMRV9TVEFUVVMpKSB7XG4gICAgICBhbGVydChnbC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYWRlcjtcbiAgfVxuXG4gIGluaXRTaGFkZXJzKCkge1xuICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyID0gdGhpcy5nZXRTaGFkZXIodGhpcy5nbCwgdGhpcy5nZXRGcmFnbWVudFNoYWRlcigpLCB0cnVlKTtcbiAgICBjb25zdCB2ZXJ0ZXhTaGFkZXIgPSB0aGlzLmdldFNoYWRlcih0aGlzLmdsLCB0aGlzLmdldFZlcnRleFNoYWRlcigpLCBmYWxzZSk7XG5cbiAgICB0aGlzLnNwcm9ncmFtID0gdGhpcy5nbC5jcmVhdGVQcm9ncmFtKCk7XG4gICAgdGhpcy5nbC5hdHRhY2hTaGFkZXIodGhpcy5zcHJvZ3JhbSwgdmVydGV4U2hhZGVyKTtcbiAgICB0aGlzLmdsLmF0dGFjaFNoYWRlcih0aGlzLnNwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7XG4gICAgdGhpcy5nbC5saW5rUHJvZ3JhbSh0aGlzLnNwcm9ncmFtKTtcblxuICAgIGlmICghdGhpcy5nbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHRoaXMuc3Byb2dyYW0sIHRoaXMuZ2wuTElOS19TVEFUVVMpKSBhbGVydChcIkNvdWxkIG5vdCBpbml0aWFsaXNlIHNoYWRlcnNcIik7XG5cbiAgICB0aGlzLmdsLnVzZVByb2dyYW0odGhpcy5zcHJvZ3JhbSk7XG4gICAgdGhpcy5zcHJvZ3JhbS52cGEgPSB0aGlzLmdsLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwiYVZlcnRleFBvc2l0aW9uXCIpO1xuICAgIHRoaXMuc3Byb2dyYW0udGNhID0gdGhpcy5nbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcImFUZXh0dXJlQ29vcmRcIik7XG4gICAgdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0aGlzLnNwcm9ncmFtLnRjYSk7XG4gICAgdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0aGlzLnNwcm9ncmFtLnZwYSk7XG5cbiAgICB0aGlzLnNwcm9ncmFtLnRNYXRVbmlmb3JtID0gdGhpcy5nbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJ0TWF0XCIpO1xuICAgIHRoaXMuc3Byb2dyYW0uc2FtcGxlclVuaWZvcm0gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcInVTYW1wbGVyXCIpO1xuICAgIHRoaXMuc3Byb2dyYW0udXNlVGV4ID0gdGhpcy5nbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJ1c2VUZXh0dXJlXCIpO1xuICAgIHRoaXMuc3Byb2dyYW0uY29sb3IgPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcInVDb2xvclwiKTtcbiAgICB0aGlzLmdsLnVuaWZvcm0xaSh0aGlzLnNwcm9ncmFtLnVzZVRleCwgMSk7XG4gIH1cblxuICBpbml0QnVmZmVycygpIHtcbiAgICBjb25zdCB2cyA9IFswLCAzLCAxLCAwLCAyLCAzXTtcbiAgICBsZXQgaWR4O1xuXG4gICAgdGhpcy51bml0SUJ1ZmZlciA9IHRoaXMuZ2wuY3JlYXRlQnVmZmVyKCk7XG4gICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMudW5pdElCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YSh0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkodnMpLCB0aGlzLmdsLlNUQVRJQ19EUkFXKTtcblxuICAgIGxldCBpO1xuICAgIGxldCBpZHMgPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIGlkcy5wdXNoKGkpO1xuICAgIGlkeCA9IG5ldyBVaW50MTZBcnJheShpZHMpO1xuXG4gICAgdGhpcy51bml0STMzID0gdGhpcy5nbC5jcmVhdGVCdWZmZXIoKTtcbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdGhpcy51bml0STMzKTtcbiAgICB0aGlzLmdsLmJ1ZmZlckRhdGEodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaWR4LCB0aGlzLmdsLlNUQVRJQ19EUkFXKTtcblxuICAgIGlkcyA9IFtdO1xuICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgaWRzLnB1c2goaSwgaSArIDEsIGkgKyAyKTtcbiAgICBpZHggPSBuZXcgVWludDE2QXJyYXkoaWRzKTtcblxuICAgIHRoaXMuc3RyaXBCdWZmZXIgPSB0aGlzLmdsLmNyZWF0ZUJ1ZmZlcigpO1xuICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLnN0cmlwQnVmZmVyKTtcbiAgICB0aGlzLmdsLmJ1ZmZlckRhdGEodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaWR4LCB0aGlzLmdsLlNUQVRJQ19EUkFXKTtcbiAgfVxuXG4gIGNyZWF0ZUNpcmNsZShyYWlkdXMpIHtcbiAgICB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cyA9IFdlYkdMVXRpbC5uaHBvdChVdGlsLmluaXRWYWx1ZShyYWlkdXMsIDMyKSk7XG4gICAgY29uc3QgY2FudmFzID0gRG9tVXRpbC5jcmVhdGVDYW52YXMoXCJjaXJjbGVfY2FudmFzXCIsIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzICogMiwgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMgKiAyKTtcbiAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcblxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgY29udGV4dC5hcmModGhpcy5jaXJjbGVDYW52YXNSYWRpdXMsIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzLCB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgY29udGV4dC5maWxsU3R5bGUgPSBcIiNGRkZcIjtcbiAgICBjb250ZXh0LmZpbGwoKTtcblxuICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCk7XG4gIH1cblxuICBkcmF3SW1nMkNhbnZhcyhwYXJ0aWNsZSkge1xuICAgIGNvbnN0IF93ID0gcGFydGljbGUuYm9keS53aWR0aDtcbiAgICBjb25zdCBfaCA9IHBhcnRpY2xlLmJvZHkuaGVpZ2h0O1xuXG4gICAgY29uc3QgX3dpZHRoID0gV2ViR0xVdGlsLm5ocG90KHBhcnRpY2xlLmJvZHkud2lkdGgpO1xuICAgIGNvbnN0IF9oZWlnaHQgPSBXZWJHTFV0aWwubmhwb3QocGFydGljbGUuYm9keS5oZWlnaHQpO1xuXG4gICAgY29uc3QgX3NjYWxlWCA9IHBhcnRpY2xlLmJvZHkud2lkdGggLyBfd2lkdGg7XG4gICAgY29uc3QgX3NjYWxlWSA9IHBhcnRpY2xlLmJvZHkuaGVpZ2h0IC8gX2hlaWdodDtcblxuICAgIGlmICghdGhpcy50ZXh0dXJlYnVmZmVyc1twYXJ0aWNsZS5kYXRhLnNyY10pXG4gICAgICB0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXSA9IFtcbiAgICAgICAgdGhpcy5nbC5jcmVhdGVUZXh0dXJlKCksXG4gICAgICAgIHRoaXMuZ2wuY3JlYXRlQnVmZmVyKCksXG4gICAgICAgIHRoaXMuZ2wuY3JlYXRlQnVmZmVyKClcbiAgICAgIF07XG5cbiAgICBwYXJ0aWNsZS5kYXRhLnRleHR1cmUgPSB0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXVswXTtcbiAgICBwYXJ0aWNsZS5kYXRhLnZjQnVmZmVyID0gdGhpcy50ZXh0dXJlYnVmZmVyc1twYXJ0aWNsZS5kYXRhLnNyY11bMV07XG4gICAgcGFydGljbGUuZGF0YS50Y0J1ZmZlciA9IHRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdWzJdO1xuXG4gICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuQVJSQVlfQlVGRkVSLCBwYXJ0aWNsZS5kYXRhLnRjQnVmZmVyKTtcbiAgICB0aGlzLmdsLmJ1ZmZlckRhdGEoXG4gICAgICB0aGlzLmdsLkFSUkFZX0JVRkZFUixcbiAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWzAuMCwgMC4wLCBfc2NhbGVYLCAwLjAsIDAuMCwgX3NjYWxlWSwgX3NjYWxlWSwgX3NjYWxlWV0pLFxuICAgICAgdGhpcy5nbC5TVEFUSUNfRFJBV1xuICAgICk7XG4gICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuQVJSQVlfQlVGRkVSLCBwYXJ0aWNsZS5kYXRhLnZjQnVmZmVyKTtcbiAgICB0aGlzLmdsLmJ1ZmZlckRhdGEoXG4gICAgICB0aGlzLmdsLkFSUkFZX0JVRkZFUixcbiAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWzAuMCwgMC4wLCBfdywgMC4wLCAwLjAsIF9oLCBfdywgX2hdKSxcbiAgICAgIHRoaXMuZ2wuU1RBVElDX0RSQVdcbiAgICApO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHBhcnRpY2xlLmRhdGEuY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjb25zdCBkYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgX3dpZHRoLCBfaGVpZ2h0KTtcblxuICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCBwYXJ0aWNsZS5kYXRhLnRleHR1cmUpO1xuICAgIHRoaXMuZ2wudGV4SW1hZ2UyRCh0aGlzLmdsLlRFWFRVUkVfMkQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy5nbC5SR0JBLCB0aGlzLmdsLlVOU0lHTkVEX0JZVEUsIGRhdGEpO1xuICAgIHRoaXMuZ2wudGV4UGFyYW1ldGVyaSh0aGlzLmdsLlRFWFRVUkVfMkQsIHRoaXMuZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLmdsLkxJTkVBUik7XG4gICAgdGhpcy5nbC50ZXhQYXJhbWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCwgdGhpcy5nbC5URVhUVVJFX01JTl9GSUxURVIsIHRoaXMuZ2wuTElORUFSX01JUE1BUF9ORUFSRVNUKTtcbiAgICB0aGlzLmdsLmdlbmVyYXRlTWlwbWFwKHRoaXMuZ2wuVEVYVFVSRV8yRCk7XG5cbiAgICBwYXJ0aWNsZS5kYXRhLnRleHR1cmVMb2FkZWQgPSB0cnVlO1xuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZVdpZHRoID0gX3c7XG4gICAgcGFydGljbGUuZGF0YS50ZXh0dXJlSGVpZ2h0ID0gX2g7XG4gIH1cblxuICBvblByb3RvblVwZGF0ZSgpIHtcbiAgICAvLyB0aGlzLmdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7XG4gICAgLy8gdGhpcy5nbC5jbGVhcih0aGlzLmdsLkNPTE9SX0JVRkZFUl9CSVQgfCB0aGlzLmdsLkRFUFRIX0JVRkZFUl9CSVQpO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5kYXRhLnRleHR1cmVMb2FkZWQgPSBmYWxzZTtcbiAgICBwYXJ0aWNsZS5kYXRhLnRtYXQgPSBNYXQzLmNyZWF0ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEudG1hdFs4XSA9IDE7XG4gICAgcGFydGljbGUuZGF0YS5pbWF0ID0gTWF0My5jcmVhdGUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLmltYXRbOF0gPSAxO1xuXG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIEltZ1V0aWwuZ2V0SW1nRnJvbUNhY2hlKHBhcnRpY2xlLmJvZHksIHRoaXMuYWRkSW1nMkJvZHksIHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgSW1nVXRpbC5nZXRJbWdGcm9tQ2FjaGUodGhpcy5jaXJjbGVDYW52YXNVUkwsIHRoaXMuYWRkSW1nMkJvZHksIHBhcnRpY2xlKTtcbiAgICAgIHBhcnRpY2xlLmRhdGEub2xkU2NhbGUgPSBwYXJ0aWNsZS5yYWRpdXMgLyB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cztcbiAgICB9XG4gIH1cblxuICAvLyBwcml2YXRlXG4gIGFkZEltZzJCb2R5KGltZywgcGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuZGVhZCkgcmV0dXJuO1xuICAgIHBhcnRpY2xlLmJvZHkgPSBpbWc7XG4gICAgcGFydGljbGUuZGF0YS5zcmMgPSBpbWcuc3JjO1xuICAgIHBhcnRpY2xlLmRhdGEuY2FudmFzID0gSW1nVXRpbC5nZXRDYW52YXNGcm9tQ2FjaGUoaW1nKTtcbiAgICBwYXJ0aWNsZS5kYXRhLm9sZFNjYWxlID0gMTtcblxuICAgIHRoaXMuZHJhd0ltZzJDYW52YXMocGFydGljbGUpO1xuICB9XG5cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5kYXRhLnRleHR1cmVMb2FkZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlTWF0cml4KHBhcnRpY2xlKTtcblxuICAgICAgdGhpcy5nbC51bmlmb3JtM2YodGhpcy5zcHJvZ3JhbS5jb2xvciwgcGFydGljbGUucmdiLnIgLyAyNTUsIHBhcnRpY2xlLnJnYi5nIC8gMjU1LCBwYXJ0aWNsZS5yZ2IuYiAvIDI1NSk7XG4gICAgICB0aGlzLmdsLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5zcHJvZ3JhbS50TWF0VW5pZm9ybSwgZmFsc2UsIHRoaXMubXN0YWNrLnRvcCgpKTtcblxuICAgICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuQVJSQVlfQlVGRkVSLCBwYXJ0aWNsZS5kYXRhLnZjQnVmZmVyKTtcbiAgICAgIHRoaXMuZ2wudmVydGV4QXR0cmliUG9pbnRlcih0aGlzLnNwcm9ncmFtLnZwYSwgMiwgdGhpcy5nbC5GTE9BVCwgZmFsc2UsIDAsIDApO1xuICAgICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuQVJSQVlfQlVGRkVSLCBwYXJ0aWNsZS5kYXRhLnRjQnVmZmVyKTtcbiAgICAgIHRoaXMuZ2wudmVydGV4QXR0cmliUG9pbnRlcih0aGlzLnNwcm9ncmFtLnRjYSwgMiwgdGhpcy5nbC5GTE9BVCwgZmFsc2UsIDAsIDApO1xuICAgICAgdGhpcy5nbC5iaW5kVGV4dHVyZSh0aGlzLmdsLlRFWFRVUkVfMkQsIHBhcnRpY2xlLmRhdGEudGV4dHVyZSk7XG4gICAgICB0aGlzLmdsLnVuaWZvcm0xaSh0aGlzLnNwcm9ncmFtLnNhbXBsZXJVbmlmb3JtLCAwKTtcbiAgICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLnVuaXRJQnVmZmVyKTtcblxuICAgICAgdGhpcy5nbC5kcmF3RWxlbWVudHModGhpcy5nbC5UUklBTkdMRVMsIDYsIHRoaXMuZ2wuVU5TSUdORURfU0hPUlQsIDApO1xuICAgICAgdGhpcy5tc3RhY2sucG9wKCk7XG4gICAgfVxuICB9XG5cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHt9XG5cbiAgdXBkYXRlTWF0cml4KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgbW92ZU9yaWdpbk1hdHJpeCA9IFdlYkdMVXRpbC5tYWtlVHJhbnNsYXRpb24oXG4gICAgICAtcGFydGljbGUuZGF0YS50ZXh0dXJlV2lkdGggLyAyLFxuICAgICAgLXBhcnRpY2xlLmRhdGEudGV4dHVyZUhlaWdodCAvIDJcbiAgICApO1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uTWF0cml4ID0gV2ViR0xVdGlsLm1ha2VUcmFuc2xhdGlvbihwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSk7XG5cbiAgICBjb25zdCBhbmdlbCA9IHBhcnRpY2xlLnJvdGF0aW9uICogTWF0aFV0aWwuUElfMTgwO1xuICAgIGNvbnN0IHJvdGF0aW9uTWF0cml4ID0gV2ViR0xVdGlsLm1ha2VSb3RhdGlvbihhbmdlbCk7XG5cbiAgICBjb25zdCBzY2FsZSA9IHBhcnRpY2xlLnNjYWxlICogcGFydGljbGUuZGF0YS5vbGRTY2FsZTtcbiAgICBjb25zdCBzY2FsZU1hdHJpeCA9IFdlYkdMVXRpbC5tYWtlU2NhbGUoc2NhbGUsIHNjYWxlKTtcbiAgICBsZXQgbWF0cml4ID0gV2ViR0xVdGlsLm1hdHJpeE11bHRpcGx5KG1vdmVPcmlnaW5NYXRyaXgsIHNjYWxlTWF0cml4KTtcblxuICAgIG1hdHJpeCA9IFdlYkdMVXRpbC5tYXRyaXhNdWx0aXBseShtYXRyaXgsIHJvdGF0aW9uTWF0cml4KTtcbiAgICBtYXRyaXggPSBXZWJHTFV0aWwubWF0cml4TXVsdGlwbHkobWF0cml4LCB0cmFuc2xhdGlvbk1hdHJpeCk7XG5cbiAgICBNYXQzLmludmVyc2UobWF0cml4LCBwYXJ0aWNsZS5kYXRhLmltYXQpO1xuICAgIG1hdHJpeFsyXSA9IHBhcnRpY2xlLmFscGhhO1xuXG4gICAgdGhpcy5tc3RhY2sucHVzaChtYXRyaXgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5nbCA9IG51bGw7XG4gICAgdGhpcy5tc3RhY2sgPSBudWxsO1xuICAgIHRoaXMudW1hdCA9IG51bGw7XG4gICAgdGhpcy5zbWF0ID0gbnVsbDtcbiAgICB0aGlzLnRleHR1cmVidWZmZXJzID0gbnVsbDtcbiAgfVxufVxuIiwiaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY3VzdG9tIHJlbmRlcmVyIHRoYXQgZXh0ZW5kcyB0aGUgQmFzZVJlbmRlcmVyLlxuICogQGV4dGVuZHMgQmFzZVJlbmRlcmVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEN1c3RvbVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQ3VzdG9tUmVuZGVyZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgSFRNTCBlbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSByZW5kZXJlci5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IFwiQ3VzdG9tUmVuZGVyZXJcIjtcbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGxpbmUgem9uZSBmb3IgcGFydGljbGUgc3lzdGVtcy5cbiAqIEBleHRlbmRzIFpvbmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGluZVpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTGluZVpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4MSAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IHBvaW50LlxuICAgKiBAcGFyYW0ge251bWJlcn0geTEgLSBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt4Ml0gLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeTJdIC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgc2Vjb25kIHBvaW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RpcmVjdGlvbj1cIj5cIl0gLSBUaGUgZGlyZWN0aW9uIG9mIHRoZSBsaW5lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoeDEsIHkxLCB4MiwgeTIsIGRpcmVjdGlvbiA9IFwiPlwiKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh4MiAtIHgxID49IDApIHtcbiAgICAgIHRoaXMueDEgPSB4MTtcbiAgICAgIHRoaXMueTEgPSB5MTtcbiAgICAgIHRoaXMueDIgPSB4MjtcbiAgICAgIHRoaXMueTIgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54MSA9IHgyO1xuICAgICAgdGhpcy55MSA9IHkyO1xuICAgICAgdGhpcy54MiA9IHgxO1xuICAgICAgdGhpcy55MiA9IHkxO1xuICAgIH1cblxuICAgIHRoaXMuZHggPSB0aGlzLngyIC0gdGhpcy54MTtcbiAgICB0aGlzLmR5ID0gdGhpcy55MiAtIHRoaXMueTE7XG5cbiAgICB0aGlzLm1pbnggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB0aGlzLm1pbnkgPSBNYXRoLm1pbih0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB0aGlzLm1heHggPSBNYXRoLm1heCh0aGlzLngxLCB0aGlzLngyKTtcbiAgICB0aGlzLm1heHkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcblxuICAgIHRoaXMuZG90ID0gdGhpcy54MiAqIHRoaXMueTEgLSB0aGlzLngxICogdGhpcy55MjtcbiAgICB0aGlzLnh4eXkgPSB0aGlzLmR4ICogdGhpcy5keCArIHRoaXMuZHkgKiB0aGlzLmR5O1xuXG4gICAgdGhpcy5ncmFkaWVudCA9IHRoaXMuZ2V0R3JhZGllbnQoKTtcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG4gICAgdGhpcy5kaXJlY3Rpb24gPSBVdGlsLmluaXRWYWx1ZShkaXJlY3Rpb24sIFwiPlwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmFuZG9tIHBvc2l0aW9uIG9uIHRoZSBsaW5lLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IEEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmFuZG9tIHBvc2l0aW9uLlxuICAgKi9cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy5yYW5kb20gPSBNYXRoLnJhbmRvbSgpO1xuICAgIHRoaXMudmVjdG9yLnggPSB0aGlzLngxICsgdGhpcy5yYW5kb20gKiB0aGlzLmxlbmd0aCAqIE1hdGguY29zKHRoaXMuZ3JhZGllbnQpO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkxICsgdGhpcy5yYW5kb20gKiB0aGlzLmxlbmd0aCAqIE1hdGguc2luKHRoaXMuZ3JhZGllbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMudmVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hpY2ggc2lkZSBvZiB0aGUgbGluZSBhIHBvaW50IGlzIG9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcG9pbnQgaXMgb24gdGhlIHBvc2l0aXZlIHNpZGUgb2YgdGhlIGxpbmUsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGdldERpcmVjdGlvbih4LCB5KSB7XG4gICAgY29uc3QgQSA9IHRoaXMuZHk7XG4gICAgY29uc3QgQiA9IC10aGlzLmR4O1xuICAgIGNvbnN0IEMgPSB0aGlzLmRvdDtcbiAgICBjb25zdCBEID0gQiA9PT0gMCA/IDEgOiBCO1xuXG4gICAgaWYgKChBICogeCArIEIgKiB5ICsgQykgKiBEID4gMCkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2YgYSBwb2ludCBmcm9tIHRoZSBsaW5lLlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgcG9pbnQgdG8gdGhlIGxpbmUuXG4gICAqL1xuICBnZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgY29uc3QgQSA9IHRoaXMuZHk7XG4gICAgY29uc3QgQiA9IC10aGlzLmR4O1xuICAgIGNvbnN0IEMgPSB0aGlzLmRvdDtcbiAgICBjb25zdCBEID0gQSAqIHggKyBCICogeSArIEM7XG5cbiAgICByZXR1cm4gRCAvIE1hdGguc3FydCh0aGlzLnh4eXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHN5bW1ldHJpYyB2ZWN0b3Igb2YgYSBnaXZlbiB2ZWN0b3Igd2l0aCByZXNwZWN0IHRvIHRoZSBsaW5lLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSB2IC0gVGhlIHZlY3RvciB0byByZWZsZWN0LlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoZSByZWZsZWN0ZWQgdmVjdG9yLlxuICAgKi9cbiAgZ2V0U3ltbWV0cmljKHYpIHtcbiAgICBjb25zdCB0aGEyID0gdi5nZXRHcmFkaWVudCgpO1xuICAgIGNvbnN0IHRoYTEgPSB0aGlzLmdldEdyYWRpZW50KCk7XG4gICAgY29uc3QgdGhhID0gMiAqICh0aGExIC0gdGhhMik7XG5cbiAgICBjb25zdCBvbGR4ID0gdi54O1xuICAgIGNvbnN0IG9sZHkgPSB2Lnk7XG5cbiAgICB2LnggPSBvbGR4ICogTWF0aC5jb3ModGhhKSAtIG9sZHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHYueSA9IG9sZHggKiBNYXRoLnNpbih0aGEpICsgb2xkeSAqIE1hdGguY29zKHRoYSk7XG5cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBncmFkaWVudCAoYW5nbGUpIG9mIHRoZSBsaW5lLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZ3JhZGllbnQgb2YgdGhlIGxpbmUgaW4gcmFkaWFucy5cbiAgICovXG4gIGdldEdyYWRpZW50KCkge1xuICAgIHJldHVybiBNYXRoLmF0YW4yKHRoaXMuZHksIHRoaXMuZHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHBhcnRpY2xlIGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHRoZSBsaW5lLlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBhcnRpY2xlIGlzIHdpdGhpbiByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmFuZ2VPdXQocGFydGljbGUpIHtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYWJzKHRoaXMuZ2V0R3JhZGllbnQoKSk7XG5cbiAgICBpZiAoYW5nbGUgPD0gTWF0aFV0aWwuUEkgLyA0KSB7XG4gICAgICBpZiAocGFydGljbGUucC54IDw9IHRoaXMubWF4eCAmJiBwYXJ0aWNsZS5wLnggPj0gdGhpcy5taW54KSByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueSA8PSB0aGlzLm1heHkgJiYgcGFydGljbGUucC55ID49IHRoaXMubWlueSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxlbmd0aCBvZiB0aGUgbGluZS5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGxlbmd0aCBvZiB0aGUgbGluZS5cbiAgICovXG4gIGdldExlbmd0aCgpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZHggKiB0aGlzLmR4ICsgdGhpcy5keSAqIHRoaXMuZHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgcGFydGljbGUgY3Jvc3NpbmcgYmVoYXZpb3IgYmFzZWQgb24gdGhlIGNyb3NzVHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gY2hlY2sgZm9yIGNyb3NzaW5nLlxuICAgKi9cbiAgY3Jvc3NpbmcocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiZGVhZFwiKSB7XG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09IFwiPlwiIHx8IHRoaXMuZGlyZWN0aW9uID09PSBcIlJcIiB8fCB0aGlzLmRpcmVjdGlvbiA9PT0gXCJyaWdodFwiIHx8IHRoaXMuZGlyZWN0aW9uID09PSBcImRvd25cIikge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2VPdXQocGFydGljbGUpKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLmdldERpcmVjdGlvbihwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSkpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlT3V0KHBhcnRpY2xlKSkgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMuZ2V0RGlyZWN0aW9uKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KSkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJib3VuZFwiKSB7XG4gICAgICBpZiAoIXRoaXMucmFuZ2VPdXQocGFydGljbGUpKSByZXR1cm47XG5cbiAgICAgIGlmICh0aGlzLmdldERpc3RhbmNlKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KSA8PSBwYXJ0aWNsZS5yYWRpdXMpIHtcbiAgICAgICAgaWYgKHRoaXMuZHggPT09IDApIHtcbiAgICAgICAgICBwYXJ0aWNsZS52LnggKj0gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5keSA9PT0gMCkge1xuICAgICAgICAgIHBhcnRpY2xlLnYueSAqPSAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdldFN5bW1ldHJpYyhwYXJ0aWNsZS52KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiY3Jvc3NcIikge1xuICAgICAgaWYgKHRoaXMuYWxlcnQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlNvcnJ5LCBMaW5lWm9uZSBkb2VzIG5vdCBzdXBwb3J0IGNyb3NzIG1ldGhvZCFcIik7XG4gICAgICAgIHRoaXMuYWxlcnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjaXJjdWxhciB6b25lIGluIGEgMkQgc3BhY2UuXG4gKiBAZXh0ZW5kcyBab25lXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENpcmNsZVpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQ2lyY2xlWm9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBjaXJjbGUncyBjZW50ZXIuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgY2lyY2xlJ3MgY2VudGVyLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl1c10gLSBUaGUgcmFkaXVzIG9mIHRoZSBjaXJjbGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4LCB5LCByYWRpdXMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzO1xuICAgIHRoaXMuYW5nbGUgPSAwO1xuICAgIHRoaXMuY2VudGVyID0geyB4LCB5IH07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHJhbmRvbSBwb3NpdGlvbiB3aXRoaW4gdGhlIGNpcmNsZS5cbiAgICogQHJldHVybnMge09iamVjdH0gQW4gb2JqZWN0IHdpdGggeCBhbmQgeSBjb29yZGluYXRlcy5cbiAgICovXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMuYW5nbGUgPSBNYXRoVXRpbC5QSXgyICogTWF0aC5yYW5kb20oKTtcbiAgICB0aGlzLnJhbmRvbVJhZGl1cyA9IE1hdGgucmFuZG9tKCkgKiB0aGlzLnJhZGl1cztcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54ICsgdGhpcy5yYW5kb21SYWRpdXMgKiBNYXRoLmNvcyh0aGlzLmFuZ2xlKTtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55ICsgdGhpcy5yYW5kb21SYWRpdXMgKiBNYXRoLnNpbih0aGlzLmFuZ2xlKTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjZW50ZXIgb2YgdGhlIGNpcmNsZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgbmV3IHgtY29vcmRpbmF0ZSBvZiB0aGUgY2VudGVyLlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSBuZXcgeS1jb29yZGluYXRlIG9mIHRoZSBjZW50ZXIuXG4gICAqL1xuICBzZXRDZW50ZXIoeCwgeSkge1xuICAgIHRoaXMuY2VudGVyLnggPSB4O1xuICAgIHRoaXMuY2VudGVyLnkgPSB5O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgcGFydGljbGUgY3Jvc3NpbmcgYmVoYXZpb3IuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBjaGVjayBmb3IgY3Jvc3NpbmcuXG4gICAqL1xuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGQgPSBwYXJ0aWNsZS5wLmRpc3RhbmNlVG8odGhpcy5jZW50ZXIpO1xuXG4gICAgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImRlYWRcIikge1xuICAgICAgaWYgKGQgLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnJhZGl1cykgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJib3VuZFwiKSB7XG4gICAgICBpZiAoZCArIHBhcnRpY2xlLnJhZGl1cyA+PSB0aGlzLnJhZGl1cykgdGhpcy5nZXRTeW1tZXRyaWMocGFydGljbGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiY3Jvc3NcIikge1xuICAgICAgaWYgKHRoaXMuYWxlcnQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlNvcnJ5LCBDaXJjbGVab25lIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3MgbWV0aG9kIVwiKTtcbiAgICAgICAgdGhpcy5hbGVydCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBzeW1tZXRyaWMgcG9zaXRpb24gb2YgYSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGNhbGN1bGF0ZSBzeW1tZXRyeSBmb3IuXG4gICAqL1xuICBnZXRTeW1tZXRyaWMocGFydGljbGUpIHtcbiAgICBjb25zdCB0aGEyID0gcGFydGljbGUudi5nZXRHcmFkaWVudCgpO1xuICAgIGNvbnN0IHRoYTEgPSB0aGlzLmdldEdyYWRpZW50KHBhcnRpY2xlKTtcblxuICAgIGNvbnN0IHRoYSA9IDIgKiAodGhhMSAtIHRoYTIpO1xuICAgIGNvbnN0IG9sZHggPSBwYXJ0aWNsZS52Lng7XG4gICAgY29uc3Qgb2xkeSA9IHBhcnRpY2xlLnYueTtcblxuICAgIHBhcnRpY2xlLnYueCA9IG9sZHggKiBNYXRoLmNvcyh0aGEpIC0gb2xkeSAqIE1hdGguc2luKHRoYSk7XG4gICAgcGFydGljbGUudi55ID0gb2xkeCAqIE1hdGguc2luKHRoYSkgKyBvbGR5ICogTWF0aC5jb3ModGhhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBncmFkaWVudCBmb3IgYSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGNhbGN1bGF0ZSB0aGUgZ3JhZGllbnQgZm9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgY2FsY3VsYXRlZCBncmFkaWVudC5cbiAgICovXG4gIGdldEdyYWRpZW50KHBhcnRpY2xlKSB7XG4gICAgcmV0dXJuIC1NYXRoVXRpbC5QSV8yICsgTWF0aC5hdGFuMihwYXJ0aWNsZS5wLnkgLSB0aGlzLmNlbnRlci55LCBwYXJ0aWNsZS5wLnggLSB0aGlzLmNlbnRlci54KTtcbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSByZWN0YW5ndWxhciB6b25lIGZvciBwYXJ0aWNsZSBzeXN0ZW1zLlxuICogQGV4dGVuZHMgWm9uZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWN0Wm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZWN0Wm9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt3aWR0aF0gLSBUaGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtoZWlnaHRdIC0gVGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDIwMCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSByYW5kb20gcG9zaXRpb24gd2l0aGluIHRoZSByZWN0YW5ndWxhciB6b25lLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IEEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmFuZG9tIHBvc2l0aW9uLlxuICAgKi9cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueCArIE1hdGgucmFuZG9tKCkgKiB0aGlzLndpZHRoO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkgKyBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG4gICAgcmV0dXJuIHRoaXMudmVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgcGFydGljbGUgY3Jvc3NpbmcgYmVoYXZpb3IgYmFzZWQgb24gdGhlIGNyb3NzVHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gY2hlY2sgZm9yIGNyb3NzaW5nLlxuICAgKi9cbiAgY3Jvc3NpbmcocGFydGljbGUpIHtcbiAgICAvLyBwYXJ0aWNsZSBkZWFkIHpvbmVcbiAgICBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiZGVhZFwiKSB7XG4gICAgICBpZiAocGFydGljbGUucC54ICsgcGFydGljbGUucmFkaXVzIDwgdGhpcy54KSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKHBhcnRpY2xlLnAueCAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueCArIHRoaXMud2lkdGgpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuXG4gICAgICBpZiAocGFydGljbGUucC55ICsgcGFydGljbGUucmFkaXVzIDwgdGhpcy55KSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKHBhcnRpY2xlLnAueSAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueSArIHRoaXMuaGVpZ2h0KSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBwYXJ0aWNsZSBib3VuZCB6b25lXG4gICAgZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiYm91bmRcIikge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueCAtIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnggPSB0aGlzLnggKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueCAqPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAocGFydGljbGUucC54ICsgcGFydGljbGUucmFkaXVzID4gdGhpcy54ICsgdGhpcy53aWR0aCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnggPSB0aGlzLnggKyB0aGlzLndpZHRoIC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgICBwYXJ0aWNsZS52LnggKj0gLTE7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0aWNsZS5wLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnkpIHtcbiAgICAgICAgcGFydGljbGUucC55ID0gdGhpcy55ICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgICBwYXJ0aWNsZS52LnkgKj0gLTE7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpY2xlLnAueSArIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueSArIHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHBhcnRpY2xlLnAueSA9IHRoaXMueSArIHRoaXMuaGVpZ2h0IC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgICBwYXJ0aWNsZS52LnkgKj0gLTE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcGFydGljbGUgY3Jvc3Mgem9uZVxuICAgIGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImNyb3NzXCIpIHtcbiAgICAgIGlmIChwYXJ0aWNsZS5wLnggKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnggJiYgcGFydGljbGUudi54IDw9IDApIHtcbiAgICAgICAgcGFydGljbGUucC54ID0gdGhpcy54ICsgdGhpcy53aWR0aCArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIH0gZWxzZSBpZiAocGFydGljbGUucC54IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy54ICsgdGhpcy53aWR0aCAmJiBwYXJ0aWNsZS52LnggPj0gMCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnggPSB0aGlzLnggLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0aWNsZS5wLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnkgJiYgcGFydGljbGUudi55IDw9IDApIHtcbiAgICAgICAgcGFydGljbGUucC55ID0gdGhpcy55ICsgdGhpcy5oZWlnaHQgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpY2xlLnAueSAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueSArIHRoaXMuaGVpZ2h0ICYmIHBhcnRpY2xlLnYueSA+PSAwKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueSA9IHRoaXMueSAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHpvbmUgYmFzZWQgb24gaW1hZ2UgZGF0YS5cbiAqIEBleHRlbmRzIFpvbmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW1hZ2Vab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEltYWdlWm9uZS5cbiAgICogQHBhcmFtIHtJbWFnZURhdGF9IGltYWdlRGF0YSAtIFRoZSBpbWFnZSBkYXRhIHRvIHVzZSBmb3IgdGhlIHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeD0wXSAtIFRoZSB4LWNvb3JkaW5hdGUgb2Zmc2V0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3k9MF0gLSBUaGUgeS1jb29yZGluYXRlIG9mZnNldC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkPTJdIC0gVGhlIHNhbXBsaW5nIGRlbnNpdHkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpbWFnZURhdGEsIHgsIHksIGQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVzZXQoaW1hZ2VEYXRhLCB4LCB5LCBkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIEltYWdlWm9uZSB3aXRoIG5ldyBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge0ltYWdlRGF0YX0gaW1hZ2VEYXRhIC0gVGhlIGltYWdlIGRhdGEgdG8gdXNlIGZvciB0aGUgem9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt4PTBdIC0gVGhlIHgtY29vcmRpbmF0ZSBvZmZzZXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeT0wXSAtIFRoZSB5LWNvb3JkaW5hdGUgb2Zmc2V0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2Q9Ml0gLSBUaGUgc2FtcGxpbmcgZGVuc2l0eS5cbiAgICovXG4gIHJlc2V0KGltYWdlRGF0YSwgeCwgeSwgZCkge1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gaW1hZ2VEYXRhO1xuICAgIHRoaXMueCA9IFV0aWwuaW5pdFZhbHVlKHgsIDApO1xuICAgIHRoaXMueSA9IFV0aWwuaW5pdFZhbHVlKHksIDApO1xuICAgIHRoaXMuZCA9IFV0aWwuaW5pdFZhbHVlKGQsIDIpO1xuXG4gICAgdGhpcy52ZWN0b3JzID0gW107XG4gICAgdGhpcy5zZXRWZWN0b3JzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB2ZWN0b3JzIGJhc2VkIG9uIHRoZSBpbWFnZSBkYXRhLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgdmVjdG9yIG9iamVjdC5cbiAgICovXG4gIHNldFZlY3RvcnMoKSB7XG4gICAgbGV0IGksIGo7XG4gICAgY29uc3QgbGVuZ3RoMSA9IHRoaXMuaW1hZ2VEYXRhLndpZHRoO1xuICAgIGNvbnN0IGxlbmd0aDIgPSB0aGlzLmltYWdlRGF0YS5oZWlnaHQ7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoMTsgaSArPSB0aGlzLmQpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBsZW5ndGgyOyBqICs9IHRoaXMuZCkge1xuICAgICAgICBsZXQgaW5kZXggPSAoKGogPj4gMCkgKiBsZW5ndGgxICsgKGkgPj4gMCkpICogNDtcblxuICAgICAgICBpZiAodGhpcy5pbWFnZURhdGEuZGF0YVtpbmRleCArIDNdID4gMCkge1xuICAgICAgICAgIHRoaXMudmVjdG9ycy5wdXNoKHsgeDogaSArIHRoaXMueCwgeTogaiArIHRoaXMueSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwb2ludCBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHgtY29vcmRpbmF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeS1jb29yZGluYXRlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcG9pbnQgaXMgd2l0aGluIGJvdW5kcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgZ2V0Qm91bmQoeCwgeSkge1xuICAgIGNvbnN0IGluZGV4ID0gKCh5ID4+IDApICogdGhpcy5pbWFnZURhdGEud2lkdGggKyAoeCA+PiAwKSkgKiA0O1xuICAgIHJldHVybiB0aGlzLmltYWdlRGF0YS5kYXRhW2luZGV4ICsgM10gPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSByYW5kb20gcG9zaXRpb24gd2l0aGluIHRoZSBpbWFnZSB6b25lLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBBIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIHBvc2l0aW9uLlxuICAgKi9cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgY29uc3QgdmVjdG9yID0gVXRpbC5nZXRSYW5kRnJvbUFycmF5KHRoaXMudmVjdG9ycyk7XG4gICAgcmV0dXJuIHRoaXMudmVjdG9yLmNvcHkodmVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjb2xvciBhdCBhIHNwZWNpZmljIHBvaW50IGluIHRoZSBpbWFnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeC1jb29yZGluYXRlLlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5LWNvb3JkaW5hdGUuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHIsIGcsIGIsIGFuZCBhIHZhbHVlcy5cbiAgICovXG4gIGdldENvbG9yKHgsIHkpIHtcbiAgICB4IC09IHRoaXMueDtcbiAgICB5IC09IHRoaXMueTtcbiAgICBjb25zdCBpID0gKCh5ID4+IDApICogdGhpcy5pbWFnZURhdGEud2lkdGggKyAoeCA+PiAwKSkgKiA0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHI6IHRoaXMuaW1hZ2VEYXRhLmRhdGFbaV0sXG4gICAgICBnOiB0aGlzLmltYWdlRGF0YS5kYXRhW2kgKyAxXSxcbiAgICAgIGI6IHRoaXMuaW1hZ2VEYXRhLmRhdGFbaSArIDJdLFxuICAgICAgYTogdGhpcy5pbWFnZURhdGEuZGF0YVtpICsgM11cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgcGFydGljbGUgY3Jvc3NpbmcgYmVoYXZpb3IuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBjaGVjayBmb3IgY3Jvc3NpbmcuXG4gICAqL1xuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIHBhcnRpY2xlLmRlYWQgPSB0aGlzLmdldEJvdW5kKHBhcnRpY2xlLnAueCAtIHRoaXMueCwgcGFydGljbGUucC55IC0gdGhpcy55KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmICghdGhpcy5nZXRCb3VuZChwYXJ0aWNsZS5wLnggLSB0aGlzLngsIHBhcnRpY2xlLnAueSAtIHRoaXMueSkpIHBhcnRpY2xlLnYubmVnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBJbWFnZVpvbmUgYW5kIGNsZWFucyB1cCByZXNvdXJjZXMuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLmltYWdlRGF0YSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IENpcmNsZVpvbmUgZnJvbSBcIi4uL3pvbmUvQ2lyY2xlWm9uZVwiO1xuaW1wb3J0IFBvaW50Wm9uZSBmcm9tIFwiLi4vem9uZS9Qb2ludFpvbmVcIjtcbmltcG9ydCBMaW5lWm9uZSBmcm9tIFwiLi4vem9uZS9MaW5lWm9uZVwiO1xuaW1wb3J0IFJlY3Rab25lIGZyb20gXCIuLi96b25lL1JlY3Rab25lXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYWRkRXZlbnRMaXN0ZW5lcihwcm90b24sIGZ1bmMpIHtcbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVfQUZURVJcIiwgKCkgPT4gZnVuYygpKTtcbiAgfSxcblxuICBnZXRTdHlsZShjb2xvciA9IFwiI2ZmMDAwMFwiKSB7XG4gICAgY29uc3QgcmdiID0gQ29sb3JVdGlsLmhleFRvUmdiKGNvbG9yKTtcbiAgICByZXR1cm4gYHJnYmEoJHtyZ2Iucn0sICR7cmdiLmd9LCAke3JnYi5ifSwgMC41KWA7XG4gIH0sXG5cbiAgZHJhd1pvbmUocHJvdG9uLCBjYW52YXMsIHpvbmUsIGNsZWFyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmdldFN0eWxlKCk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIocHJvdG9uLCAoKSA9PiB7XG4gICAgICBpZiAoY2xlYXIpIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgIGlmICh6b25lIGluc3RhbmNlb2YgUG9pbnRab25lKSB7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQuYXJjKHpvbmUueCwgem9uZS55LCAxMCwgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgIH0gZWxzZSBpZiAoem9uZSBpbnN0YW5jZW9mIExpbmVab25lKSB7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBzdHlsZTtcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oem9uZS54MSwgem9uZS55MSk7XG4gICAgICAgIGNvbnRleHQubGluZVRvKHpvbmUueDIsIHpvbmUueTIpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfSBlbHNlIGlmICh6b25lIGluc3RhbmNlb2YgUmVjdFpvbmUpIHtcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHN0eWxlO1xuICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHpvbmUueCwgem9uZS55LCB6b25lLndpZHRoLCB6b25lLmhlaWdodCk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICB9IGVsc2UgaWYgKHpvbmUgaW5zdGFuY2VvZiBDaXJjbGVab25lKSB7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBzdHlsZTtcbiAgICAgICAgY29udGV4dC5hcmMoem9uZS54LCB6b25lLnksIHpvbmUucmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgZHJhd0VtaXR0ZXIocHJvdG9uLCBjYW52YXMsIGVtaXR0ZXIsIGNsZWFyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmdldFN0eWxlKCk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIocHJvdG9uLCAoKSA9PiB7XG4gICAgICBpZiAoY2xlYXIpIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHN0eWxlO1xuICAgICAgY29udGV4dC5hcmMoZW1pdHRlci5wLngsIGVtaXR0ZXIucC55LCAxMCwgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIH0pO1xuICB9XG59O1xuIiwiaW1wb3J0IFByb3RvbiBmcm9tIFwiLi9jb3JlL1Byb3RvblwiO1xuaW1wb3J0IFBhcnRpY2xlIGZyb20gXCIuL2NvcmUvUGFydGljbGVcIjtcbmltcG9ydCBQb29sIGZyb20gXCIuL2NvcmUvUG9vbFwiO1xuXG5pbXBvcnQgVXRpbCBmcm9tIFwiLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgUG9sYXIyRCBmcm9tIFwiLi9tYXRoL1BvbGFyMkRcIjtcbmltcG9ydCBNYXQzIGZyb20gXCIuL21hdGgvTWF0M1wiO1xuaW1wb3J0IFNwYW4gZnJvbSBcIi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgQXJyYXlTcGFuIGZyb20gXCIuL21hdGgvQXJyYXlTcGFuXCI7XG5pbXBvcnQgUmVjdGFuZ2xlIGZyb20gXCIuL21hdGgvUmVjdGFuZ2xlXCI7XG5pbXBvcnQgZWFzZSBmcm9tIFwiLi9tYXRoL2Vhc2VcIjtcblxuaW1wb3J0IFJhdGUgZnJvbSBcIi4vaW5pdGlhbGl6ZS9SYXRlXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9pbml0aWFsaXplL0luaXRpYWxpemVcIjtcbmltcG9ydCBMaWZlIGZyb20gXCIuL2luaXRpYWxpemUvTGlmZVwiO1xuaW1wb3J0IFBvc2l0aW9uIGZyb20gXCIuL2luaXRpYWxpemUvUG9zaXRpb25cIjtcbmltcG9ydCBWZWxvY2l0eSBmcm9tIFwiLi9pbml0aWFsaXplL1ZlbG9jaXR5XCI7XG5pbXBvcnQgTWFzcyBmcm9tIFwiLi9pbml0aWFsaXplL01hc3NcIjtcbmltcG9ydCBSYWRpdXMgZnJvbSBcIi4vaW5pdGlhbGl6ZS9SYWRpdXNcIjtcbmltcG9ydCBCb2R5IGZyb20gXCIuL2luaXRpYWxpemUvQm9keVwiO1xuXG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL2JlaGF2aW91ci9CZWhhdmlvdXJcIjtcbmltcG9ydCBGb3JjZSBmcm9tIFwiLi9iZWhhdmlvdXIvRm9yY2VcIjtcbmltcG9ydCBBdHRyYWN0aW9uIGZyb20gXCIuL2JlaGF2aW91ci9BdHRyYWN0aW9uXCI7XG5pbXBvcnQgUmFuZG9tRHJpZnQgZnJvbSBcIi4vYmVoYXZpb3VyL1JhbmRvbURyaWZ0XCI7XG5pbXBvcnQgR3Jhdml0eSBmcm9tIFwiLi9iZWhhdmlvdXIvR3Jhdml0eVwiO1xuaW1wb3J0IENvbGxpc2lvbiBmcm9tIFwiLi9iZWhhdmlvdXIvQ29sbGlzaW9uXCI7XG5pbXBvcnQgQ3Jvc3Nab25lIGZyb20gXCIuL2JlaGF2aW91ci9Dcm9zc1pvbmVcIjtcbmltcG9ydCBBbHBoYSBmcm9tIFwiLi9iZWhhdmlvdXIvQWxwaGFcIjtcbmltcG9ydCBTY2FsZSBmcm9tIFwiLi9iZWhhdmlvdXIvU2NhbGVcIjtcbmltcG9ydCBSb3RhdGUgZnJvbSBcIi4vYmVoYXZpb3VyL1JvdGF0ZVwiO1xuaW1wb3J0IENvbG9yIGZyb20gXCIuL2JlaGF2aW91ci9Db2xvclwiO1xuaW1wb3J0IEN5Y2xvbmUgZnJvbSBcIi4vYmVoYXZpb3VyL0N5Y2xvbmVcIjtcbmltcG9ydCBSZXB1bHNpb24gZnJvbSBcIi4vYmVoYXZpb3VyL1JlcHVsc2lvblwiO1xuaW1wb3J0IEdyYXZpdHlXZWxsIGZyb20gXCIuL2JlaGF2aW91ci9HcmF2aXR5V2VsbFwiO1xuXG5pbXBvcnQgRW1pdHRlciBmcm9tIFwiLi9lbWl0dGVyL0VtaXR0ZXJcIjtcbmltcG9ydCBCZWhhdmlvdXJFbWl0dGVyIGZyb20gXCIuL2VtaXR0ZXIvQmVoYXZpb3VyRW1pdHRlclwiO1xuaW1wb3J0IEZvbGxvd0VtaXR0ZXIgZnJvbSBcIi4vZW1pdHRlci9Gb2xsb3dFbWl0dGVyXCI7XG5cbmltcG9ydCBDYW52YXNSZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvQ2FudmFzUmVuZGVyZXJcIjtcbmltcG9ydCBEb21SZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvRG9tUmVuZGVyZXJcIjtcbmltcG9ydCBFYXNlbFJlbmRlcmVyIGZyb20gXCIuL3JlbmRlci9FYXNlbFJlbmRlcmVyXCI7XG5pbXBvcnQgUGl4ZWxSZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvUGl4ZWxSZW5kZXJlclwiO1xuaW1wb3J0IFBpeGlSZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvUGl4aVJlbmRlcmVyXCI7XG5pbXBvcnQgV2ViR0xSZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvV2ViR0xSZW5kZXJlclwiO1xuaW1wb3J0IEN1c3RvbVJlbmRlcmVyIGZyb20gXCIuL3JlbmRlci9DdXN0b21SZW5kZXJlclwiO1xuXG5pbXBvcnQgWm9uZSBmcm9tIFwiLi96b25lL1pvbmVcIjtcbmltcG9ydCBMaW5lWm9uZSBmcm9tIFwiLi96b25lL0xpbmVab25lXCI7XG5pbXBvcnQgQ2lyY2xlWm9uZSBmcm9tIFwiLi96b25lL0NpcmNsZVpvbmVcIjtcbmltcG9ydCBQb2ludFpvbmUgZnJvbSBcIi4vem9uZS9Qb2ludFpvbmVcIjtcbmltcG9ydCBSZWN0Wm9uZSBmcm9tIFwiLi96b25lL1JlY3Rab25lXCI7XG5pbXBvcnQgSW1hZ2Vab25lIGZyb20gXCIuL3pvbmUvSW1hZ2Vab25lXCI7XG5cbmltcG9ydCBEZWJ1ZyBmcm9tIFwiLi9kZWJ1Zy9EZWJ1Z1wiO1xuXG4vLyBuYW1lc3BhY2VcblByb3Rvbi5QYXJ0aWNsZSA9IFBhcnRpY2xlO1xuUHJvdG9uLlBvb2wgPSBQb29sO1xuXG5Qcm90b24uVXRpbCA9IFV0aWw7XG5Qcm90b24uQ29sb3JVdGlsID0gQ29sb3JVdGlsO1xuUHJvdG9uLk1hdGhVdGlsID0gTWF0aFV0aWw7XG5Qcm90b24uVmVjdG9yMkQgPSBQcm90b24uVmVjdG9yID0gVmVjdG9yMkQ7XG5Qcm90b24uUG9sYXIyRCA9IFByb3Rvbi5Qb2xhciA9IFBvbGFyMkQ7XG5Qcm90b24uQXJyYXlTcGFuID0gQXJyYXlTcGFuO1xuUHJvdG9uLlJlY3RhbmdsZSA9IFJlY3RhbmdsZTtcblByb3Rvbi5SYXRlID0gUmF0ZTtcblByb3Rvbi5lYXNlID0gZWFzZTtcblByb3Rvbi5TcGFuID0gU3BhbjtcblByb3Rvbi5NYXQzID0gTWF0MztcblByb3Rvbi5nZXRTcGFuID0gKGEsIGIsIGNlbnRlcikgPT4gbmV3IFNwYW4oYSwgYiwgY2VudGVyKTtcblByb3Rvbi5jcmVhdGVBcnJheVNwYW4gPSBBcnJheVNwYW4uY3JlYXRlQXJyYXlTcGFuO1xuXG5Qcm90b24uSW5pdGlhbGl6ZSA9IFByb3Rvbi5Jbml0ID0gSW5pdGlhbGl6ZTtcblByb3Rvbi5MaWZlID0gUHJvdG9uLkwgPSBMaWZlO1xuUHJvdG9uLlBvc2l0aW9uID0gUHJvdG9uLlAgPSBQb3NpdGlvbjtcblByb3Rvbi5WZWxvY2l0eSA9IFByb3Rvbi5WID0gVmVsb2NpdHk7XG5Qcm90b24uTWFzcyA9IFByb3Rvbi5NID0gTWFzcztcblByb3Rvbi5SYWRpdXMgPSBQcm90b24uUiA9IFJhZGl1cztcblByb3Rvbi5Cb2R5ID0gUHJvdG9uLkIgPSBCb2R5O1xuXG5Qcm90b24uQmVoYXZpb3VyID0gQmVoYXZpb3VyO1xuUHJvdG9uLkZvcmNlID0gUHJvdG9uLkYgPSBGb3JjZTtcblByb3Rvbi5BdHRyYWN0aW9uID0gUHJvdG9uLkEgPSBBdHRyYWN0aW9uO1xuUHJvdG9uLlJhbmRvbURyaWZ0ID0gUHJvdG9uLlJEID0gUmFuZG9tRHJpZnQ7XG5Qcm90b24uR3Jhdml0eSA9IFByb3Rvbi5HID0gR3Jhdml0eTtcblByb3Rvbi5Db2xsaXNpb24gPSBDb2xsaXNpb247XG5Qcm90b24uQ3Jvc3Nab25lID0gQ3Jvc3Nab25lO1xuUHJvdG9uLkFscGhhID0gQWxwaGE7XG5Qcm90b24uU2NhbGUgPSBQcm90b24uUyA9IFNjYWxlO1xuUHJvdG9uLlJvdGF0ZSA9IFJvdGF0ZTtcblByb3Rvbi5Db2xvciA9IENvbG9yO1xuUHJvdG9uLlJlcHVsc2lvbiA9IFJlcHVsc2lvbjtcblByb3Rvbi5DeWNsb25lID0gQ3ljbG9uZTtcblByb3Rvbi5HcmF2aXR5V2VsbCA9IEdyYXZpdHlXZWxsO1xuXG5Qcm90b24uRW1pdHRlciA9IEVtaXR0ZXI7XG5Qcm90b24uQmVoYXZpb3VyRW1pdHRlciA9IEJlaGF2aW91ckVtaXR0ZXI7XG5Qcm90b24uRm9sbG93RW1pdHRlciA9IEZvbGxvd0VtaXR0ZXI7XG5cblByb3Rvbi5ab25lID0gWm9uZTtcblByb3Rvbi5MaW5lWm9uZSA9IExpbmVab25lO1xuUHJvdG9uLkNpcmNsZVpvbmUgPSBDaXJjbGVab25lO1xuUHJvdG9uLlBvaW50Wm9uZSA9IFBvaW50Wm9uZTtcblByb3Rvbi5SZWN0Wm9uZSA9IFJlY3Rab25lO1xuUHJvdG9uLkltYWdlWm9uZSA9IEltYWdlWm9uZTtcblxuUHJvdG9uLkNhbnZhc1JlbmRlcmVyID0gQ2FudmFzUmVuZGVyZXI7XG5Qcm90b24uRG9tUmVuZGVyZXIgPSBEb21SZW5kZXJlcjtcblByb3Rvbi5FYXNlbFJlbmRlcmVyID0gRWFzZWxSZW5kZXJlcjtcblByb3Rvbi5QaXhpUmVuZGVyZXIgPSBQaXhpUmVuZGVyZXI7XG5Qcm90b24uUGl4ZWxSZW5kZXJlciA9IFBpeGVsUmVuZGVyZXI7XG5Qcm90b24uV2ViR0xSZW5kZXJlciA9IFByb3Rvbi5XZWJHbFJlbmRlcmVyID0gV2ViR0xSZW5kZXJlcjtcblByb3Rvbi5DdXN0b21SZW5kZXJlciA9IEN1c3RvbVJlbmRlcmVyO1xuXG5Qcm90b24uRGVidWcgPSBEZWJ1ZztcblV0aWwuYXNzaWduKFByb3RvbiwgZWFzZSk7XG5cbi8vIGV4cG9ydFxuZXhwb3J0IGRlZmF1bHQgUHJvdG9uO1xuZXhwb3J0IHtcbiAgUGFydGljbGUsXG4gIFBvb2wsXG4gIFV0aWwsXG4gIENvbG9yVXRpbCxcbiAgTWF0aFV0aWwsXG4gIFZlY3RvcjJELFxuICBQb2xhcjJELFxuICBNYXQzLFxuICBTcGFuLFxuICBBcnJheVNwYW4sXG4gIFJlY3RhbmdsZSxcbiAgZWFzZSxcbiAgUmF0ZSxcbiAgSW5pdGlhbGl6ZSxcbiAgTGlmZSxcbiAgUG9zaXRpb24sXG4gIFZlbG9jaXR5LFxuICBNYXNzLFxuICBSYWRpdXMsXG4gIEJvZHksXG4gIEJlaGF2aW91cixcbiAgRm9yY2UsXG4gIEF0dHJhY3Rpb24sXG4gIFJhbmRvbURyaWZ0LFxuICBHcmF2aXR5LFxuICBDb2xsaXNpb24sXG4gIENyb3NzWm9uZSxcbiAgQWxwaGEsXG4gIFNjYWxlLFxuICBSb3RhdGUsXG4gIENvbG9yLFxuICBDeWNsb25lLFxuICBSZXB1bHNpb24sXG4gIEdyYXZpdHlXZWxsLFxuICBFbWl0dGVyLFxuICBCZWhhdmlvdXJFbWl0dGVyLFxuICBGb2xsb3dFbWl0dGVyLFxuICBDYW52YXNSZW5kZXJlcixcbiAgRG9tUmVuZGVyZXIsXG4gIEVhc2VsUmVuZGVyZXIsXG4gIFBpeGVsUmVuZGVyZXIsXG4gIFBpeGlSZW5kZXJlcixcbiAgV2ViR0xSZW5kZXJlcixcbiAgQ3VzdG9tUmVuZGVyZXIsXG4gIFpvbmUsXG4gIExpbmVab25lLFxuICBDaXJjbGVab25lLFxuICBQb2ludFpvbmUsXG4gIFJlY3Rab25lLFxuICBJbWFnZVpvbmUsXG4gIERlYnVnXG59O1xuIl0sIm5hbWVzIjpbImlwb3QiLCJsZW5ndGgiLCJuaHBvdCIsImkiLCJtYWtlVHJhbnNsYXRpb24iLCJ0eCIsInR5IiwibWFrZVJvdGF0aW9uIiwiYW5nbGVJblJhZGlhbnMiLCJjIiwiTWF0aCIsImNvcyIsInMiLCJzaW4iLCJtYWtlU2NhbGUiLCJzeCIsInN5IiwibWF0cml4TXVsdGlwbHkiLCJhIiwiYiIsImEwMCIsImEwMSIsImEwMiIsImExMCIsImExMSIsImExMiIsImEyMCIsImEyMSIsImEyMiIsImIwMCIsImIwMSIsImIwMiIsImIxMCIsImIxMSIsImIxMiIsImIyMCIsImIyMSIsImIyMiIsImNyZWF0ZUNhbnZhcyIsImlkIiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImRvbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwib3BhY2l0eSIsInRyYW5zZm9ybSIsImNyZWF0ZURpdiIsInJlc2l6ZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5Ub3AiLCJkaXYiLCJ4IiwieSIsInNjYWxlIiwicm90YXRlIiwid2lsbENoYW5nZSIsImNzczMiLCJ0cmFuc2Zvcm0zZCIsImtleSIsInZhbCIsImJrZXkiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInN1YnN0ciIsImltZ3NDYWNoZSIsImNhbnZhc0NhY2hlIiwiY2FudmFzSWQiLCJnZXRJbWFnZURhdGEiLCJjb250ZXh0IiwiaW1hZ2UiLCJyZWN0IiwiZHJhd0ltYWdlIiwiaW1hZ2VkYXRhIiwiY2xlYXJSZWN0IiwiZ2V0SW1nRnJvbUNhY2hlIiwiaW1nIiwiY2FsbGJhY2siLCJwYXJhbSIsInNyYyIsIkltYWdlIiwib25sb2FkIiwiZSIsInRhcmdldCIsImdldENhbnZhc0Zyb21DYWNoZSIsIldlYkdMVXRpbCIsImNhbnZhcyIsIkRvbVV0aWwiLCJnZXRDb250ZXh0IiwiaW5pdFZhbHVlIiwidmFsdWUiLCJkZWZhdWx0cyIsInVuZGVmaW5lZCIsImlzQXJyYXkiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJlbXB0eUFycmF5IiwiYXJyIiwidG9BcnJheSIsInNsaWNlQXJyYXkiLCJhcnIxIiwiaW5kZXgiLCJhcnIyIiwicHVzaCIsImdldFJhbmRGcm9tQXJyYXkiLCJmbG9vciIsInJhbmRvbSIsImVtcHR5T2JqZWN0Iiwib2JqIiwiaWdub3JlIiwiaW5kZXhPZiIsImNsYXNzQXBwbHkiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJGYWN0b3J5RnVuYyIsImJpbmQiLCJhcHBseSIsImNvbmNhdCIsIkltZ1V0aWwiLCJkZXN0cm95QWxsIiwiZGVzdHJveSIsImFzc2lnbiIsInNvdXJjZSIsImhhc093blByb3BlcnR5IiwiaWRzTWFwIiwiUHVpZCIsIl9pbmRleCIsIl9jYWNoZSIsInR5cGUiLCJnZXRJZCIsInVpZCIsImdldElkRnJvbUNhY2hlIiwiaXNCb2R5IiwiaXNJbm5lciIsImdldFRhcmdldCIsIlBvb2wiLCJudW0iLCJ0b3RhbCIsImNhY2hlIiwiX3Byb3RvIiwiZ2V0IiwicGFyYW1zIiwicCIsIl9fcHVpZCIsInBvcCIsImNyZWF0ZU9yQ2xvbmUiLCJleHBpcmUiLCJnZXRDYWNoZSIsImNyZWF0ZSIsIlV0aWwiLCJjbG9uZSIsImdldENvdW50IiwiY291bnQiLCJTdGF0cyIsInByb3RvbiIsImNvbnRhaW5lciIsImVtaXR0ZXJJbmRleCIsInJlbmRlcmVySW5kZXgiLCJ1cGRhdGUiLCJib2R5IiwiYWRkIiwiZW1pdHRlciIsImdldEVtaXR0ZXIiLCJyZW5kZXJlciIsImdldFJlbmRlcmVyIiwic3RyIiwiZW1pdHRlcnMiLCJlbWl0U3BlZWQiLCJnZXRFbWl0dGVyUG9zIiwiaW5pdGlhbGl6ZXMiLCJjb25jYXRBcnIiLCJiZWhhdmlvdXJzIiwibmFtZSIsImdldENyZWF0ZWROdW1iZXIiLCJwb29sIiwiaW5uZXJIVE1MIiwiX3RoaXMiLCJjc3NUZXh0Iiwiam9pbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJiZyIsImNvbG9yIiwicGFyZW50Tm9kZSIsImFwcGVuZENoaWxkIiwicmVuZGVyZXJzIiwicmVzdWx0IiwiY3Bvb2wiLCJyb3VuZCIsInJlbW92ZUNoaWxkIiwiRXZlbnREaXNwYXRjaGVyIiwiX2xpc3RlbmVycyIsImRpc3BhdGNoRXZlbnQiLCJoYXNFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzIiwibGlzdGVuZXIiLCJzcGxpY2UiLCJsaXN0ZW5lcnMiLCJoYW5kbGVyIiwiUEkiLCJJTkZJTklUWSIsIkluZmluaXR5IiwiTWF0aFV0aWwiLCJQSXgyIiwiUElfMiIsIlBJXzE4MCIsIk4xODBfUEkiLCJpc0luZmluaXR5IiwicmFuZG9tQVRvQiIsImlzSW50IiwicmFuZG9tRmxvYXRpbmciLCJjZW50ZXIiLCJmIiwicmFuZG9tQ29sb3IiLCJzbGljZSIsInJhbmRvbVpvbmUiLCJkaXNwbGF5IiwiayIsImRpZ2l0cyIsInBvdyIsImRlZ3JlZVRyYW5zZm9ybSIsInRvQ29sb3IxNiIsIkludGVncmF0aW9uIiwiY2FsY3VsYXRlIiwicGFydGljbGVzIiwidGltZSIsImRhbXBpbmciLCJldWxlckludGVncmF0ZSIsInBhcnRpY2xlIiwic2xlZXAiLCJvbGQiLCJjb3B5IiwidiIsIm11bHRpcGx5U2NhbGFyIiwibWFzcyIsImNsZWFyIiwiUHJvdG9uIiwiaW50ZWdyYXRpb25UeXBlIiwibm93IiwidGhlbiIsImVsYXBzZWQiLCJzdGF0cyIsIkVVTEVSIiwiaW50ZWdyYXRvciIsIl9mcHMiLCJfaW50ZXJ2YWwiLCJERUZBVUxUX0lOVEVSVkFMIiwiYWRkUmVuZGVyZXIiLCJyZW5kZXIiLCJpbml0IiwicmVtb3ZlUmVuZGVyZXIiLCJyZW1vdmUiLCJhZGRFbWl0dGVyIiwicGFyZW50IiwiRU1JVFRFUl9BRERFRCIsInJlbW92ZUVtaXR0ZXIiLCJFTUlUVEVSX1JFTU9WRUQiLCJQUk9UT05fVVBEQVRFIiwiVVNFX0NMT0NLIiwiRGF0ZSIsImdldFRpbWUiLCJhbWVuZENoYW5nZVRhYnNCdWciLCJlbWl0dGVyc1VwZGF0ZSIsIlBST1RPTl9VUERBVEVfQUZURVIiLCJnZXRBbGxQYXJ0aWNsZXMiLCJkZXN0cm95QWxsRW1pdHRlcnMiLCJkZXN0cm95T3RoZXIiLCJzZXRUaW1lb3V0IiwiX2NyZWF0ZUNsYXNzIiwic2V0IiwiZnBzIiwiTUVBU1VSRSIsIlJLMiIsIlBBUlRJQ0xFX0NSRUFURUQiLCJQQVJUSUNMRV9VUERBVEUiLCJQQVJUSUNMRV9TTEVFUCIsIlBBUlRJQ0xFX0RFQUQiLCJSZ2IiLCJyIiwiZyIsInJlc2V0IiwiU3BhbiIsImdldFZhbHVlIiwic2V0U3BhblZhbHVlIiwiZ2V0U3BhblZhbHVlIiwicGFuIiwiaGFzUHJvcCIsInNldFByb3AiLCJwcm9wcyIsInByb3AiLCJzZXRWZWN0b3JWYWwiLCJjb25mIiwiZWFzZUxpbmVhciIsImVhc2VJblF1YWQiLCJlYXNlT3V0UXVhZCIsImVhc2VJbk91dFF1YWQiLCJlYXNlSW5DdWJpYyIsImVhc2VPdXRDdWJpYyIsImVhc2VJbk91dEN1YmljIiwiZWFzZUluUXVhcnQiLCJlYXNlT3V0UXVhcnQiLCJlYXNlSW5PdXRRdWFydCIsImVhc2VJblNpbmUiLCJlYXNlT3V0U2luZSIsImVhc2VJbk91dFNpbmUiLCJlYXNlSW5FeHBvIiwiZWFzZU91dEV4cG8iLCJlYXNlSW5PdXRFeHBvIiwiZWFzZUluQ2lyYyIsInNxcnQiLCJlYXNlT3V0Q2lyYyIsImVhc2VJbk91dENpcmMiLCJlYXNlSW5CYWNrIiwiZWFzZU91dEJhY2siLCJlYXNlSW5PdXRCYWNrIiwiZ2V0RWFzaW5nIiwiZWFzZSIsIlZlY3RvcjJEIiwic2V0WCIsInNldFkiLCJnZXRHcmFkaWVudCIsImF0YW4yIiwidyIsImFkZFZlY3RvcnMiLCJhZGRYWSIsInN1YiIsInN1YlZlY3RvcnMiLCJkaXZpZGVTY2FsYXIiLCJuZWdhdGUiLCJkb3QiLCJsZW5ndGhTcSIsIm5vcm1hbGl6ZSIsImRpc3RhbmNlVG8iLCJkaXN0YW5jZVRvU3F1YXJlZCIsInRoYSIsImR4IiwiZHkiLCJsZXJwIiwiYWxwaGEiLCJlcXVhbHMiLCJQYXJ0aWNsZSIsImRhdGEiLCJyZ2IiLCJQcm9wVXRpbCIsImdldERpcmVjdGlvbiIsImxpZmUiLCJhZ2UiLCJkZWFkIiwic3ByaXRlIiwiZW5lcmd5IiwicmFkaXVzIiwicm90YXRpb24iLCJlYXNpbmciLCJyZW1vdmVBbGxCZWhhdmlvdXJzIiwiYXBwbHlCZWhhdmlvdXJzIiwibWF4IiwiYXBwbHlCZWhhdmlvdXIiLCJhZGRCZWhhdmlvdXIiLCJiZWhhdmlvdXIiLCJwYXJlbnRzIiwiaW5pdGlhbGl6ZSIsImFkZEJlaGF2aW91cnMiLCJyZW1vdmVCZWhhdmlvdXIiLCJoZXhUb1JnYiIsImgiLCJoZXgxNiIsInN1YnN0cmluZyIsInBhcnNlSW50IiwicmdiVG9IZXgiLCJyYmciLCJnZXRIZXgxNkZyb21QYXJ0aWNsZSIsIk51bWJlciIsIlBvbGFyMkQiLCJhYnMiLCJzZXRSIiwic2V0VGhhIiwidG9WZWN0b3IiLCJnZXRYIiwiZ2V0WSIsIk1hdDMiLCJtYXQzIiwibWF0IiwiRmxvYXQzMkFycmF5IiwibWF0MSIsIm1hdDIiLCJtdWx0aXBseSIsImludmVyc2UiLCJkIiwibXVsdGlwbHlWZWMyIiwibSIsInZlYyIsIkFycmF5U3BhbiIsIl9TcGFuIiwiX2luaGVyaXRzTG9vc2UiLCJfYXJyIiwiY3JlYXRlQXJyYXlTcGFuIiwiUmVjdGFuZ2xlIiwiYm90dG9tIiwicmlnaHQiLCJjb250YWlucyIsIlJhdGUiLCJudW1wYW4iLCJ0aW1lcGFuIiwibnVtUGFuIiwidGltZVBhbiIsInN0YXJ0VGltZSIsIm5leHRUaW1lIiwiSW5pdGlhbGl6ZSIsIkxpZmUiLCJfSW5pdGlhbGl6ZSIsImxpZmVQYW4iLCJab25lIiwidmVjdG9yIiwiY3Jvc3NUeXBlIiwiYWxlcnQiLCJnZXRQb3NpdGlvbiIsImNyb3NzaW5nIiwiUG9pbnRab25lIiwiX1pvbmUiLCJjb25zb2xlIiwiZXJyb3IiLCJQb3NpdGlvbiIsInpvbmUiLCJWZWxvY2l0eSIsInJwYW4iLCJ0aGFwYW4iLCJyUGFuIiwidGhhUGFuIiwibm9ybWFsaXplVmVsb2NpdHkiLCJ2ciIsInBvbGFyMmQiLCJNYXNzIiwibWFzc1BhbiIsIlJhZGl1cyIsIm9sZFJhZGl1cyIsIkJvZHkiLCJpbWFnZVRhcmdldCIsImlubmVyIiwiQmVoYXZpb3VyIiwibm9ybWFsaXplRm9yY2UiLCJmb3JjZSIsIm5vcm1hbGl6ZVZhbHVlIiwiRm9yY2UiLCJfQmVoYXZpb3VyIiwiZngiLCJmeSIsIkF0dHJhY3Rpb24iLCJ0YXJnZXRQb3NpdGlvbiIsInJhZGl1c1NxIiwiYXR0cmFjdGlvbkZvcmNlIiwiUmFuZG9tRHJpZnQiLCJkcmlmdFgiLCJkcmlmdFkiLCJkZWxheSIsInBhbkZvY2UiLCJHcmF2aXR5IiwiX0ZvcmNlIiwiQ29sbGlzaW9uIiwibmV3UG9vbCIsImNvbGxpc2lvblBvb2wiLCJkZWx0YSIsIm90aGVyUGFydGljbGUiLCJvdmVybGFwIiwidG90YWxNYXNzIiwiYXZlcmFnZU1hc3MxIiwiYXZlcmFnZU1hc3MyIiwiZGlzdGFuY2UiLCJDcm9zc1pvbmUiLCJBbHBoYSIsInNhbWUiLCJhbHBoYUEiLCJhbHBoYUIiLCJTY2FsZSIsInNjYWxlQSIsInNjYWxlQiIsIlJvdGF0ZSIsImluZmx1ZW5jZSIsInJvdGF0aW9uQSIsInJvdGF0aW9uQiIsIkNvbG9yIiwiY29sb3JBIiwiQ29sb3JVdGlsIiwiY29sb3JCIiwiQ0hBTkdJTkciLCJDeWNsb25lIiwiYW5nbGUiLCJzZXRBbmdsZUFuZEZvcmNlIiwic3BhbiIsIlN0cmluZyIsInRvTG93ZXJDYXNlIiwiY2FuZ2xlIiwiY3ljbG9uZSIsImdyYWRpZW50IiwiUmVwdWxzaW9uIiwiX0F0dHJhY3Rpb24iLCJHcmF2aXR5V2VsbCIsImNlbnRlclBvaW50IiwiZGlzdGFuY2VWZWMiLCJkaXN0YW5jZVNxIiwiZmFjdG9yIiwiYmluZEVtaXR0ZXIiLCJFbWl0dGVyIiwiX1BhcnRpY2xlIiwiZW1pdFRpbWUiLCJ0b3RhbFRpbWUiLCJyYXRlIiwiZW1pdCIsInN0b3BlZCIsImlzTmFOIiwic3RvcCIsInByZUVtaXQiLCJvbGRTdG9wZWQiLCJvbGRFbWl0VGltZSIsIm9sZFRvdGFsVGltZSIsInN0ZXAiLCJyZW1vdmVBbGxQYXJ0aWNsZXMiLCJhZGRTZWxmSW5pdGlhbGl6ZSIsImFkZEluaXRpYWxpemUiLCJfbGVuIiwiYXJndW1lbnRzIiwicmVzdCIsIkFycmF5IiwiX2tleSIsInJlbW92ZUluaXRpYWxpemUiLCJpbml0aWFsaXplciIsInJlbW92ZUFsbEluaXRpYWxpemVycyIsIl9sZW4yIiwiX2tleTIiLCJlbWl0dGluZyIsImludGVncmF0ZSIsImRpc3BhdGNoIiwiZXZlbnQiLCJiaW5kRXZlbnQiLCJjcmVhdGVQYXJ0aWNsZSIsInNldHVwUGFydGljbGUiLCJJbml0aWFsaXplVXRpbCIsIkJlaGF2aW91ckVtaXR0ZXIiLCJfRW1pdHRlciIsInNlbGZCZWhhdmlvdXJzIiwiYWRkU2VsZkJlaGF2aW91ciIsInJlbW92ZVNlbGZCZWhhdmlvdXIiLCJGb2xsb3dFbWl0dGVyIiwibW91c2VUYXJnZXQiLCJ3aW5kb3ciLCJfYWxsb3dFbWl0dGluZyIsImluaXRFdmVudEhhbmRsZXIiLCJfdGhpczIiLCJtb3VzZW1vdmVIYW5kbGVyIiwibW91c2Vtb3ZlIiwibW91c2Vkb3duSGFuZGxlciIsIm1vdXNlZG93biIsIm1vdXNldXBIYW5kbGVyIiwibW91c2V1cCIsImxheWVyWCIsImxheWVyWSIsIm9mZnNldFgiLCJvZmZzZXRZIiwiaXNJbWFnZSIsIl9faXNJbWFnZSIsInRhZ05hbWUiLCJub2RlTmFtZSIsImlzU3RyaW5nIiwiQmFzZVJlbmRlcmVyIiwiZWxlbWVudCIsInN0cm9rZSIsImNpcmNsZUNvbmYiLCJpc0NpcmNsZSIsInNldFN0cm9rZSIsInRoaW5rbmVzcyIsIl9wcm90b25VcGRhdGVIYW5kbGVyIiwib25Qcm90b25VcGRhdGUiLCJfcHJvdG9uVXBkYXRlQWZ0ZXJIYW5kbGVyIiwib25Qcm90b25VcGRhdGVBZnRlciIsIl9lbWl0dGVyQWRkZWRIYW5kbGVyIiwib25FbWl0dGVyQWRkZWQiLCJfZW1pdHRlclJlbW92ZWRIYW5kbGVyIiwib25FbWl0dGVyUmVtb3ZlZCIsIl9wYXJ0aWNsZUNyZWF0ZWRIYW5kbGVyIiwib25QYXJ0aWNsZUNyZWF0ZWQiLCJfcGFydGljbGVVcGRhdGVIYW5kbGVyIiwib25QYXJ0aWNsZVVwZGF0ZSIsIl9wYXJ0aWNsZURlYWRIYW5kbGVyIiwib25QYXJ0aWNsZURlYWQiLCJDYW52YXNSZW5kZXJlciIsIl9CYXNlUmVuZGVyZXIiLCJidWZmZXJDYWNoZSIsImFkZEltZzJCb2R5IiwiVHlwZXMiLCJkcmF3Q2lyY2xlIiwiYnVmZmVyIiwiY3JlYXRlQnVmZmVyIiwiYnVmQ29udGV4dCIsImdsb2JhbEFscGhhIiwiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJzYXZlIiwidHJhbnNsYXRlIiwicmVzdG9yZSIsImJlZ2luUGF0aCIsImFyYyIsInN0cm9rZVN0eWxlIiwibGluZVdpZHRoIiwiY2xvc2VQYXRoIiwiZmlsbCIsInNpemUiLCJEb21SZW5kZXJlciIsImNyZWF0ZUJvZHkiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiYm9keVJlYWR5IiwiYmFja2dyb3VuZENvbG9yIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlU3ByaXRlIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJXaWR0aCIsInVybCIsImJhY2tncm91bmRJbWFnZSIsIkVhc2VsUmVuZGVyZXIiLCJhZGRDaGlsZCIsInNjYWxlWCIsInNjYWxlWSIsImdyYXBoaWNzIiwicmVnWCIsInJlZ1kiLCJjcmVhdGVqcyIsIkdyYXBoaWNzIiwiYmVnaW5TdHJva2UiLCJiZWdpbkZpbGwiLCJzaGFwZSIsIlNoYXBlIiwiUGl4ZWxSZW5kZXJlciIsInJlY3RhbmdsZSIsImltYWdlRGF0YSIsImNyZWF0ZUltYWdlRGF0YSIsInB1dEltYWdlRGF0YSIsInNldFBpeGVsIiwiUElYSUNsYXNzIiwiUGl4aVJlbmRlcmVyIiwic2V0Q29sb3IiLCJibGVuZE1vZGUiLCJzZXRQSVhJIiwiUElYSSIsIlNwcml0ZSIsImNyZWF0ZUZyb21JbWFnZSIsImZyb20iLCJmcm9tSW1hZ2UiLCJ0aW50IiwiYW5jaG9yIiwiZW5kRmlsbCIsIk1TdGFjayIsIm1hdHMiLCJ0b3AiLCJXZWJHTFJlbmRlcmVyIiwiZ2wiLCJhbnRpYWxpYXMiLCJzdGVuY2lsIiwiZGVwdGgiLCJpbml0VmFyIiwic2V0TWF4UmFkaXVzIiwiaW5pdFNoYWRlcnMiLCJpbml0QnVmZmVycyIsImJsZW5kRXF1YXRpb24iLCJGVU5DX0FERCIsImJsZW5kRnVuYyIsIlNSQ19BTFBIQSIsIk9ORV9NSU5VU19TUkNfQUxQSEEiLCJlbmFibGUiLCJCTEVORCIsInVtYXQiLCJzbWF0IiwibXN0YWNrIiwidmlld3BvcnQiLCJjaXJjbGVDYW52YXNVUkwiLCJnZXRWZXJ0ZXhTaGFkZXIiLCJ2c1NvdXJjZSIsImdldEZyYWdtZW50U2hhZGVyIiwiZnNTb3VyY2UiLCJ0ZXh0dXJlYnVmZmVycyIsIkEiLCJCIiwiZ2V0U2hhZGVyIiwiZnMiLCJzaGFkZXIiLCJjcmVhdGVTaGFkZXIiLCJGUkFHTUVOVF9TSEFERVIiLCJWRVJURVhfU0hBREVSIiwic2hhZGVyU291cmNlIiwiY29tcGlsZVNoYWRlciIsImdldFNoYWRlclBhcmFtZXRlciIsIkNPTVBJTEVfU1RBVFVTIiwiZ2V0U2hhZGVySW5mb0xvZyIsImZyYWdtZW50U2hhZGVyIiwidmVydGV4U2hhZGVyIiwic3Byb2dyYW0iLCJjcmVhdGVQcm9ncmFtIiwiYXR0YWNoU2hhZGVyIiwibGlua1Byb2dyYW0iLCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwiTElOS19TVEFUVVMiLCJ1c2VQcm9ncmFtIiwidnBhIiwiZ2V0QXR0cmliTG9jYXRpb24iLCJ0Y2EiLCJlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIsInRNYXRVbmlmb3JtIiwiZ2V0VW5pZm9ybUxvY2F0aW9uIiwic2FtcGxlclVuaWZvcm0iLCJ1c2VUZXgiLCJ1bmlmb3JtMWkiLCJ2cyIsImlkeCIsInVuaXRJQnVmZmVyIiwiYmluZEJ1ZmZlciIsIkVMRU1FTlRfQVJSQVlfQlVGRkVSIiwiYnVmZmVyRGF0YSIsIlVpbnQxNkFycmF5IiwiU1RBVElDX0RSQVciLCJpZHMiLCJ1bml0STMzIiwic3RyaXBCdWZmZXIiLCJyYWlkdXMiLCJjaXJjbGVDYW52YXNSYWRpdXMiLCJ0b0RhdGFVUkwiLCJkcmF3SW1nMkNhbnZhcyIsIl93IiwiX2giLCJfd2lkdGgiLCJfaGVpZ2h0IiwiX3NjYWxlWCIsIl9zY2FsZVkiLCJjcmVhdGVUZXh0dXJlIiwidGV4dHVyZSIsInZjQnVmZmVyIiwidGNCdWZmZXIiLCJBUlJBWV9CVUZGRVIiLCJiaW5kVGV4dHVyZSIsIlRFWFRVUkVfMkQiLCJ0ZXhJbWFnZTJEIiwiUkdCQSIsIlVOU0lHTkVEX0JZVEUiLCJ0ZXhQYXJhbWV0ZXJpIiwiVEVYVFVSRV9NQUdfRklMVEVSIiwiTElORUFSIiwiVEVYVFVSRV9NSU5fRklMVEVSIiwiTElORUFSX01JUE1BUF9ORUFSRVNUIiwiZ2VuZXJhdGVNaXBtYXAiLCJ0ZXh0dXJlTG9hZGVkIiwidGV4dHVyZVdpZHRoIiwidGV4dHVyZUhlaWdodCIsInRtYXQiLCJpbWF0Iiwib2xkU2NhbGUiLCJ1cGRhdGVNYXRyaXgiLCJ1bmlmb3JtM2YiLCJ1bmlmb3JtTWF0cml4M2Z2IiwidmVydGV4QXR0cmliUG9pbnRlciIsIkZMT0FUIiwiZHJhd0VsZW1lbnRzIiwiVFJJQU5HTEVTIiwiVU5TSUdORURfU0hPUlQiLCJtb3ZlT3JpZ2luTWF0cml4IiwidHJhbnNsYXRpb25NYXRyaXgiLCJhbmdlbCIsInJvdGF0aW9uTWF0cml4Iiwic2NhbGVNYXRyaXgiLCJtYXRyaXgiLCJDdXN0b21SZW5kZXJlciIsIkxpbmVab25lIiwieDEiLCJ5MSIsIngyIiwieTIiLCJkaXJlY3Rpb24iLCJtaW54IiwibWluIiwibWlueSIsIm1heHgiLCJtYXh5IiwieHh5eSIsImdldExlbmd0aCIsIkMiLCJEIiwiZ2V0RGlzdGFuY2UiLCJnZXRTeW1tZXRyaWMiLCJ0aGEyIiwidGhhMSIsIm9sZHgiLCJvbGR5IiwicmFuZ2VPdXQiLCJDaXJjbGVab25lIiwicmFuZG9tUmFkaXVzIiwic2V0Q2VudGVyIiwiUmVjdFpvbmUiLCJJbWFnZVpvbmUiLCJ2ZWN0b3JzIiwic2V0VmVjdG9ycyIsImoiLCJsZW5ndGgxIiwibGVuZ3RoMiIsImdldEJvdW5kIiwiZ2V0Q29sb3IiLCJmdW5jIiwiZ2V0U3R5bGUiLCJkcmF3Wm9uZSIsIm1vdmVUbyIsImxpbmVUbyIsImRyYXdSZWN0IiwiZHJhd0VtaXR0ZXIiLCJWZWN0b3IiLCJQb2xhciIsImdldFNwYW4iLCJJbml0IiwiTCIsIlAiLCJWIiwiTSIsIlIiLCJGIiwiUkQiLCJHIiwiUyIsIldlYkdsUmVuZGVyZXIiLCJEZWJ1ZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWU7RUFDYjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0VBLElBQUksRUFBQSxTQUFBQSxJQUFDQyxDQUFBQSxNQUFNLEVBQUU7RUFDWCxJQUFBLE9BQU8sQ0FBQ0EsTUFBTSxHQUFJQSxNQUFNLEdBQUcsQ0FBRSxNQUFNLENBQUMsQ0FBQTtLQUNyQztFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRUMsS0FBSyxFQUFBLFNBQUFBLEtBQUNELENBQUFBLE1BQU0sRUFBRTtFQUNaLElBQUEsRUFBRUEsTUFBTSxDQUFBO0VBQ1IsSUFBQSxLQUFLLElBQUlFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRyxFQUFFLEVBQUVBLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDL0JGLE1BQUFBLE1BQU0sR0FBR0EsTUFBTSxHQUFJQSxNQUFNLElBQUlFLENBQUUsQ0FBQTtFQUNqQyxLQUFBO01BRUEsT0FBT0YsTUFBTSxHQUFHLENBQUMsQ0FBQTtLQUNsQjtFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VHLEVBQUFBLGVBQWUsRUFBQUEsU0FBQUEsZUFBQUEsQ0FBQ0MsRUFBRSxFQUFFQyxFQUFFLEVBQUU7RUFDdEIsSUFBQSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUVELEVBQUUsRUFBRUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ3JDO0VBRUQ7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFQyxZQUFZLEVBQUEsU0FBQUEsWUFBQ0MsQ0FBQUEsY0FBYyxFQUFFO0VBQzNCLElBQUEsSUFBSUMsQ0FBQyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ0gsY0FBYyxDQUFDLENBQUE7RUFDaEMsSUFBQSxJQUFJSSxDQUFDLEdBQUdGLElBQUksQ0FBQ0csR0FBRyxDQUFDTCxjQUFjLENBQUMsQ0FBQTtFQUVoQyxJQUFBLE9BQU8sQ0FBQ0MsQ0FBQyxFQUFFLENBQUNHLENBQUMsRUFBRSxDQUFDLEVBQUVBLENBQUMsRUFBRUgsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ3BDO0VBRUQ7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRUssRUFBQUEsU0FBUyxFQUFBQSxTQUFBQSxTQUFBQSxDQUFDQyxFQUFFLEVBQUVDLEVBQUUsRUFBRTtFQUNoQixJQUFBLE9BQU8sQ0FBQ0QsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDckM7RUFFRDtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFQyxFQUFBQSxjQUFjLEVBQUFBLFNBQUFBLGNBQUFBLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO01BQ25CLElBQUlDLEdBQUcsR0FBR0YsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7TUFDdEIsSUFBSUcsR0FBRyxHQUFHSCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUN0QixJQUFJSSxHQUFHLEdBQUdKLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO01BQ3RCLElBQUlLLEdBQUcsR0FBR0wsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7TUFDdEIsSUFBSU0sR0FBRyxHQUFHTixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUN0QixJQUFJTyxHQUFHLEdBQUdQLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO01BQ3RCLElBQUlRLEdBQUcsR0FBR1IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7TUFDdEIsSUFBSVMsR0FBRyxHQUFHVCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUN0QixJQUFJVSxHQUFHLEdBQUdWLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO01BQ3RCLElBQUlXLEdBQUcsR0FBR1YsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7TUFDdEIsSUFBSVcsR0FBRyxHQUFHWCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUN0QixJQUFJWSxHQUFHLEdBQUdaLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO01BQ3RCLElBQUlhLEdBQUcsR0FBR2IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7TUFDdEIsSUFBSWMsR0FBRyxHQUFHZCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUN0QixJQUFJZSxHQUFHLEdBQUdmLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO01BQ3RCLElBQUlnQixHQUFHLEdBQUdoQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUN0QixJQUFJaUIsR0FBRyxHQUFHakIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7TUFDdEIsSUFBSWtCLEdBQUcsR0FBR2xCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO01BRXRCLE9BQU8sQ0FDTEMsR0FBRyxHQUFHUyxHQUFHLEdBQUdSLEdBQUcsR0FBR1csR0FBRyxHQUFHVixHQUFHLEdBQUdhLEdBQUcsRUFDakNmLEdBQUcsR0FBR1UsR0FBRyxHQUFHVCxHQUFHLEdBQUdZLEdBQUcsR0FBR1gsR0FBRyxHQUFHYyxHQUFHLEVBQ2pDaEIsR0FBRyxHQUFHVyxHQUFHLEdBQUdWLEdBQUcsR0FBR2EsR0FBRyxHQUFHWixHQUFHLEdBQUdlLEdBQUcsRUFDakNkLEdBQUcsR0FBR00sR0FBRyxHQUFHTCxHQUFHLEdBQUdRLEdBQUcsR0FBR1AsR0FBRyxHQUFHVSxHQUFHLEVBQ2pDWixHQUFHLEdBQUdPLEdBQUcsR0FBR04sR0FBRyxHQUFHUyxHQUFHLEdBQUdSLEdBQUcsR0FBR1csR0FBRyxFQUNqQ2IsR0FBRyxHQUFHUSxHQUFHLEdBQUdQLEdBQUcsR0FBR1UsR0FBRyxHQUFHVCxHQUFHLEdBQUdZLEdBQUcsRUFDakNYLEdBQUcsR0FBR0csR0FBRyxHQUFHRixHQUFHLEdBQUdLLEdBQUcsR0FBR0osR0FBRyxHQUFHTyxHQUFHLEVBQ2pDVCxHQUFHLEdBQUdJLEdBQUcsR0FBR0gsR0FBRyxHQUFHTSxHQUFHLEdBQUdMLEdBQUcsR0FBR1EsR0FBRyxFQUNqQ1YsR0FBRyxHQUFHSyxHQUFHLEdBQUdKLEdBQUcsR0FBR08sR0FBRyxHQUFHTixHQUFHLEdBQUdTLEdBQUcsQ0FDbEMsQ0FBQTtFQUNILEdBQUE7RUFDRixDQUFDOztBQ3JJRCxnQkFBZTtFQUNiO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0VDLFlBQVksRUFBQSxTQUFBQSxhQUFDQyxFQUFFLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQWU7RUFBQSxJQUFBLElBQXZCQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBUkEsTUFBQUEsUUFBUSxHQUFHLFVBQVUsQ0FBQTtFQUFBLEtBQUE7RUFDbkQsSUFBQSxJQUFNQyxHQUFHLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO01BRTVDRixHQUFHLENBQUNKLEVBQUUsR0FBR0EsRUFBRSxDQUFBO01BQ1hJLEdBQUcsQ0FBQ0gsS0FBSyxHQUFHQSxLQUFLLENBQUE7TUFDakJHLEdBQUcsQ0FBQ0YsTUFBTSxHQUFHQSxNQUFNLENBQUE7RUFDbkJFLElBQUFBLEdBQUcsQ0FBQ0csS0FBSyxDQUFDQyxPQUFPLEdBQUcsQ0FBQyxDQUFBO0VBQ3JCSixJQUFBQSxHQUFHLENBQUNHLEtBQUssQ0FBQ0osUUFBUSxHQUFHQSxRQUFRLENBQUE7RUFDN0IsSUFBQSxJQUFJLENBQUNNLFNBQVMsQ0FBQ0wsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUVyQyxJQUFBLE9BQU9BLEdBQUcsQ0FBQTtLQUNYO0VBRURNLEVBQUFBLFNBQVMsV0FBQUEsU0FBQ1YsQ0FBQUEsRUFBRSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRTtFQUMzQixJQUFBLElBQU1FLEdBQUcsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7TUFFekNGLEdBQUcsQ0FBQ0osRUFBRSxHQUFHQSxFQUFFLENBQUE7RUFDWEksSUFBQUEsR0FBRyxDQUFDRyxLQUFLLENBQUNKLFFBQVEsR0FBRyxVQUFVLENBQUE7TUFDL0IsSUFBSSxDQUFDUSxNQUFNLENBQUNQLEdBQUcsRUFBRUgsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQTtFQUUvQixJQUFBLE9BQU9FLEdBQUcsQ0FBQTtLQUNYO0VBRURPLEVBQUFBLE1BQU0sV0FBQUEsTUFBQ1AsQ0FBQUEsR0FBRyxFQUFFSCxLQUFLLEVBQUVDLE1BQU0sRUFBRTtFQUN6QkUsSUFBQUEsR0FBRyxDQUFDRyxLQUFLLENBQUNOLEtBQUssR0FBR0EsS0FBSyxHQUFHLElBQUksQ0FBQTtFQUM5QkcsSUFBQUEsR0FBRyxDQUFDRyxLQUFLLENBQUNMLE1BQU0sR0FBR0EsTUFBTSxHQUFHLElBQUksQ0FBQTtNQUNoQ0UsR0FBRyxDQUFDRyxLQUFLLENBQUNLLFVBQVUsR0FBRyxDQUFDWCxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQTtNQUN4Q0csR0FBRyxDQUFDRyxLQUFLLENBQUNNLFNBQVMsR0FBRyxDQUFDWCxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQTtLQUN6QztFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFTyxTQUFTLEVBQUEsU0FBQUEsU0FBQ0ssQ0FBQUEsR0FBRyxFQUFFQyxDQUFDLEVBQUVDLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUU7RUFDbENKLElBQUFBLEdBQUcsQ0FBQ1AsS0FBSyxDQUFDWSxVQUFVLEdBQUcsV0FBVyxDQUFBO01BQ2xDLElBQU1WLFNBQVMsa0JBQWdCTSxDQUFDLEdBQUEsTUFBQSxHQUFPQyxDQUFDLEdBQWFDLFlBQUFBLEdBQUFBLEtBQUssR0FBWUMsV0FBQUEsR0FBQUEsTUFBTSxHQUFNLE1BQUEsQ0FBQTtNQUNsRixJQUFJLENBQUNFLElBQUksQ0FBQ04sR0FBRyxFQUFFLFdBQVcsRUFBRUwsU0FBUyxDQUFDLENBQUE7S0FDdkM7SUFFRFksV0FBVyxFQUFBLFNBQUFBLFdBQUNQLENBQUFBLEdBQUcsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFO0VBQ3BDSixJQUFBQSxHQUFHLENBQUNQLEtBQUssQ0FBQ1ksVUFBVSxHQUFHLFdBQVcsQ0FBQTtNQUNsQyxJQUFNVixTQUFTLG9CQUFrQk0sQ0FBQyxHQUFBLE1BQUEsR0FBT0MsQ0FBQyxHQUFnQkMsZUFBQUEsR0FBQUEsS0FBSyxHQUFZQyxXQUFBQSxHQUFBQSxNQUFNLEdBQU0sTUFBQSxDQUFBO01BQ3ZGLElBQUksQ0FBQ0UsSUFBSSxDQUFDTixHQUFHLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUE7TUFDOUMsSUFBSSxDQUFDTSxJQUFJLENBQUNOLEdBQUcsRUFBRSxXQUFXLEVBQUVMLFNBQVMsQ0FBQyxDQUFBO0tBQ3ZDO0VBRURXLEVBQUFBLElBQUksV0FBQUEsSUFBQ04sQ0FBQUEsR0FBRyxFQUFFUSxHQUFHLEVBQUVDLEdBQUcsRUFBRTtFQUNsQixJQUFBLElBQU1DLElBQUksR0FBR0YsR0FBRyxDQUFDRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNDLFdBQVcsRUFBRSxHQUFHSixHQUFHLENBQUNLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUV4RGIsSUFBQUEsR0FBRyxDQUFDUCxLQUFLLENBQUEsUUFBQSxHQUFVaUIsSUFBSSxDQUFHLEdBQUdELEdBQUcsQ0FBQTtFQUNoQ1QsSUFBQUEsR0FBRyxDQUFDUCxLQUFLLENBQUEsS0FBQSxHQUFPaUIsSUFBSSxDQUFHLEdBQUdELEdBQUcsQ0FBQTtFQUM3QlQsSUFBQUEsR0FBRyxDQUFDUCxLQUFLLENBQUEsR0FBQSxHQUFLaUIsSUFBSSxDQUFHLEdBQUdELEdBQUcsQ0FBQTtFQUMzQlQsSUFBQUEsR0FBRyxDQUFDUCxLQUFLLENBQUEsSUFBQSxHQUFNaUIsSUFBSSxDQUFHLEdBQUdELEdBQUcsQ0FBQTtFQUM1QlQsSUFBQUEsR0FBRyxDQUFDUCxLQUFLLENBQUEsRUFBQSxHQUFJZSxHQUFHLENBQUcsR0FBR0MsR0FBRyxDQUFBO0VBQzNCLEdBQUE7RUFDRixDQUFDOztFQzNFRCxJQUFNSyxTQUFTLEdBQUcsRUFBRSxDQUFBO0VBQ3BCLElBQU1DLFdBQVcsR0FBRyxFQUFFLENBQUE7RUFDdEIsSUFBSUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUVoQixnQkFBZTtFQUNiO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VDLEVBQUFBLFlBQVksV0FBQUEsWUFBQ0MsQ0FBQUEsT0FBTyxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRTtFQUNqQ0YsSUFBQUEsT0FBTyxDQUFDRyxTQUFTLENBQUNGLEtBQUssRUFBRUMsSUFBSSxDQUFDbkIsQ0FBQyxFQUFFbUIsSUFBSSxDQUFDbEIsQ0FBQyxDQUFDLENBQUE7TUFDeEMsSUFBTW9CLFNBQVMsR0FBR0osT0FBTyxDQUFDRCxZQUFZLENBQUNHLElBQUksQ0FBQ25CLENBQUMsRUFBRW1CLElBQUksQ0FBQ2xCLENBQUMsRUFBRWtCLElBQUksQ0FBQ2pDLEtBQUssRUFBRWlDLElBQUksQ0FBQ2hDLE1BQU0sQ0FBQyxDQUFBO0VBQy9FOEIsSUFBQUEsT0FBTyxDQUFDSyxTQUFTLENBQUNILElBQUksQ0FBQ25CLENBQUMsRUFBRW1CLElBQUksQ0FBQ2xCLENBQUMsRUFBRWtCLElBQUksQ0FBQ2pDLEtBQUssRUFBRWlDLElBQUksQ0FBQ2hDLE1BQU0sQ0FBQyxDQUFBO0VBRTFELElBQUEsT0FBT2tDLFNBQVMsQ0FBQTtLQUNqQjtFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFRSxFQUFBQSxlQUFlLFdBQUFBLGVBQUNDLENBQUFBLEdBQUcsRUFBRUMsUUFBUSxFQUFFQyxLQUFLLEVBQUU7TUFDcEMsSUFBTUMsR0FBRyxHQUFHLE9BQU9ILEdBQUcsS0FBSyxRQUFRLEdBQUdBLEdBQUcsR0FBR0EsR0FBRyxDQUFDRyxHQUFHLENBQUE7RUFFbkQsSUFBQSxJQUFJZCxTQUFTLENBQUNjLEdBQUcsQ0FBQyxFQUFFO0VBQ2xCRixNQUFBQSxRQUFRLENBQUNaLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDLEVBQUVELEtBQUssQ0FBQyxDQUFBO0VBQ2pDLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBTVIsS0FBSyxHQUFHLElBQUlVLEtBQUssRUFBRSxDQUFBO0VBQ3pCVixNQUFBQSxLQUFLLENBQUNXLE1BQU0sR0FBRyxVQUFBQyxDQUFDLEVBQUk7RUFDbEJqQixRQUFBQSxTQUFTLENBQUNjLEdBQUcsQ0FBQyxHQUFHRyxDQUFDLENBQUNDLE1BQU0sQ0FBQTtFQUN6Qk4sUUFBQUEsUUFBUSxDQUFDWixTQUFTLENBQUNjLEdBQUcsQ0FBQyxFQUFFRCxLQUFLLENBQUMsQ0FBQTtTQUNoQyxDQUFBO1FBRURSLEtBQUssQ0FBQ1MsR0FBRyxHQUFHQSxHQUFHLENBQUE7RUFDakIsS0FBQTtLQUNEO0VBRURLLEVBQUFBLGtCQUFrQixXQUFBQSxrQkFBQ1IsQ0FBQUEsR0FBRyxFQUFFQyxRQUFRLEVBQUVDLEtBQUssRUFBRTtFQUN2QyxJQUFBLElBQU1DLEdBQUcsR0FBR0gsR0FBRyxDQUFDRyxHQUFHLENBQUE7RUFFbkIsSUFBQSxJQUFJLENBQUNiLFdBQVcsQ0FBQ2EsR0FBRyxDQUFDLEVBQUU7UUFDckIsSUFBTXpDLEtBQUssR0FBRytDLFNBQVMsQ0FBQ3JGLEtBQUssQ0FBQzRFLEdBQUcsQ0FBQ3RDLEtBQUssQ0FBQyxDQUFBO1FBQ3hDLElBQU1DLE1BQU0sR0FBRzhDLFNBQVMsQ0FBQ3JGLEtBQUssQ0FBQzRFLEdBQUcsQ0FBQ3JDLE1BQU0sQ0FBQyxDQUFBO0VBRTFDLE1BQUEsSUFBTStDLE1BQU0sR0FBR0MsT0FBTyxDQUFDbkQsWUFBWSxDQUFBLHNCQUFBLEdBQXdCLEVBQUUrQixRQUFRLEVBQUk3QixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO0VBQ3ZGLE1BQUEsSUFBTThCLE9BQU8sR0FBR2lCLE1BQU0sQ0FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ3ZDbkIsTUFBQUEsT0FBTyxDQUFDRyxTQUFTLENBQUNJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFQSxHQUFHLENBQUN0QyxLQUFLLEVBQUVzQyxHQUFHLENBQUNyQyxNQUFNLENBQUMsQ0FBQTtFQUVuRDJCLE1BQUFBLFdBQVcsQ0FBQ2EsR0FBRyxDQUFDLEdBQUdPLE1BQU0sQ0FBQTtFQUMzQixLQUFBO01BRUFULFFBQVEsSUFBSUEsUUFBUSxDQUFDWCxXQUFXLENBQUNhLEdBQUcsQ0FBQyxFQUFFRCxLQUFLLENBQUMsQ0FBQTtNQUU3QyxPQUFPWixXQUFXLENBQUNhLEdBQUcsQ0FBQyxDQUFBO0VBQ3pCLEdBQUE7RUFDRixDQUFDOztBQ3RFRCxhQUFlO0VBQ2I7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VVLEVBQUFBLFNBQVMsRUFBQUEsU0FBQUEsU0FBQUEsQ0FBQ0MsS0FBSyxFQUFFQyxRQUFRLEVBQUU7TUFDekJELEtBQUssR0FBR0EsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLRSxTQUFTLEdBQUdGLEtBQUssR0FBR0MsUUFBUSxDQUFBO0VBQ2hFLElBQUEsT0FBT0QsS0FBSyxDQUFBO0tBQ2I7RUFFRDtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFRyxPQUFPLEVBQUEsU0FBQUEsT0FBQ0gsQ0FBQUEsS0FBSyxFQUFFO01BQ2IsT0FBT0ksTUFBTSxDQUFDQyxTQUFTLENBQUNDLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDUCxLQUFLLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQTtLQUNsRTtFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRVEsVUFBVSxFQUFBLFNBQUFBLFVBQUNDLENBQUFBLEdBQUcsRUFBRTtFQUNkLElBQUEsSUFBSUEsR0FBRyxFQUFFQSxHQUFHLENBQUNwRyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0tBQ3hCO0lBRURxRyxPQUFPLEVBQUEsU0FBQUEsT0FBQ0QsQ0FBQUEsR0FBRyxFQUFFO01BQ1gsT0FBTyxJQUFJLENBQUNOLE9BQU8sQ0FBQ00sR0FBRyxDQUFDLEdBQUdBLEdBQUcsR0FBRyxDQUFDQSxHQUFHLENBQUMsQ0FBQTtLQUN2QztFQUVERSxFQUFBQSxVQUFVLFdBQUFBLFVBQUNDLENBQUFBLElBQUksRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUU7RUFDNUIsSUFBQSxJQUFJLENBQUNOLFVBQVUsQ0FBQ00sSUFBSSxDQUFDLENBQUE7RUFDckIsSUFBQSxLQUFLLElBQUl2RyxDQUFDLEdBQUdzRyxLQUFLLEVBQUV0RyxDQUFDLEdBQUdxRyxJQUFJLENBQUN2RyxNQUFNLEVBQUVFLENBQUMsRUFBRSxFQUFFO0VBQ3hDdUcsTUFBQUEsSUFBSSxDQUFDQyxJQUFJLENBQUNILElBQUksQ0FBQ3JHLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDcEIsS0FBQTtLQUNEO0lBRUR5RyxnQkFBZ0IsRUFBQSxTQUFBQSxnQkFBQ1AsQ0FBQUEsR0FBRyxFQUFFO0VBQ3BCLElBQUEsSUFBSSxDQUFDQSxHQUFHLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFDckIsSUFBQSxPQUFPQSxHQUFHLENBQUMzRixJQUFJLENBQUNtRyxLQUFLLENBQUNSLEdBQUcsQ0FBQ3BHLE1BQU0sR0FBR1MsSUFBSSxDQUFDb0csTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ25EO0VBRUQ7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFQyxFQUFBQSxXQUFXLEVBQUFBLFNBQUFBLFdBQUFBLENBQUNDLEdBQUcsRUFBRUMsTUFBTSxFQUFTO0VBQUEsSUFBQSxJQUFmQSxNQUFNLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBTkEsTUFBQUEsTUFBTSxHQUFHLElBQUksQ0FBQTtFQUFBLEtBQUE7RUFDNUIsSUFBQSxLQUFLLElBQUlwRCxHQUFHLElBQUltRCxHQUFHLEVBQUU7UUFDbkIsSUFBSUMsTUFBTSxJQUFJQSxNQUFNLENBQUNDLE9BQU8sQ0FBQ3JELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQUE7UUFDeEMsT0FBT21ELEdBQUcsQ0FBQ25ELEdBQUcsQ0FBQyxDQUFBO0VBQ2pCLEtBQUE7S0FDRDtFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRXNELEVBQUFBLFVBQVUsRUFBQUEsU0FBQUEsVUFBQUEsQ0FBQ0MsV0FBVyxFQUFFQyxJQUFJLEVBQVM7RUFBQSxJQUFBLElBQWJBLElBQUksS0FBQSxLQUFBLENBQUEsRUFBQTtFQUFKQSxNQUFBQSxJQUFJLEdBQUcsSUFBSSxDQUFBO0VBQUEsS0FBQTtNQUNqQyxJQUFJLENBQUNBLElBQUksRUFBRTtRQUNULE9BQU8sSUFBSUQsV0FBVyxFQUFFLENBQUE7RUFDMUIsS0FBQyxNQUFNO0VBQ0wsTUFBQSxJQUFNRSxXQUFXLEdBQUdGLFdBQVcsQ0FBQ0csSUFBSSxDQUFDQyxLQUFLLENBQUNKLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDSyxNQUFNLENBQUNKLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDNUUsT0FBTyxJQUFJQyxXQUFXLEVBQUUsQ0FBQTtFQUMxQixLQUFBO0tBQ0Q7RUFFRDtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFaEQsRUFBQUEsWUFBWSxXQUFBQSxZQUFDQyxDQUFBQSxPQUFPLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFO01BQ2pDLE9BQU9pRCxPQUFPLENBQUNwRCxZQUFZLENBQUNDLE9BQU8sRUFBRUMsS0FBSyxFQUFFQyxJQUFJLENBQUMsQ0FBQTtLQUNsRDtFQUVEa0QsRUFBQUEsVUFBVSxFQUFBQSxTQUFBQSxVQUFBQSxDQUFDdEIsR0FBRyxFQUFFckIsS0FBSyxFQUFTO0VBQUEsSUFBQSxJQUFkQSxLQUFLLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBTEEsTUFBQUEsS0FBSyxHQUFHLElBQUksQ0FBQTtFQUFBLEtBQUE7RUFDMUIsSUFBQSxJQUFJN0UsQ0FBQyxHQUFHa0csR0FBRyxDQUFDcEcsTUFBTSxDQUFBO01BRWxCLE9BQU9FLENBQUMsRUFBRSxFQUFFO1FBQ1YsSUFBSTtFQUNGa0csUUFBQUEsR0FBRyxDQUFDbEcsQ0FBQyxDQUFDLENBQUN5SCxPQUFPLENBQUM1QyxLQUFLLENBQUMsQ0FBQTtFQUN2QixPQUFDLENBQUMsT0FBT0ksQ0FBQyxFQUFFLEVBQUM7UUFFYixPQUFPaUIsR0FBRyxDQUFDbEcsQ0FBQyxDQUFDLENBQUE7RUFDZixLQUFBO01BRUFrRyxHQUFHLENBQUNwRyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0tBQ2Y7RUFFRDRILEVBQUFBLE1BQU0sRUFBQUEsU0FBQUEsTUFBQUEsQ0FBQ3hDLE1BQU0sRUFBRXlDLE1BQU0sRUFBRTtFQUNyQixJQUFBLElBQUksT0FBTzlCLE1BQU0sQ0FBQzZCLE1BQU0sS0FBSyxVQUFVLEVBQUU7RUFDdkMsTUFBQSxLQUFLLElBQUloRSxHQUFHLElBQUlpRSxNQUFNLEVBQUU7RUFDdEIsUUFBQSxJQUFJOUIsTUFBTSxDQUFDQyxTQUFTLENBQUM4QixjQUFjLENBQUM1QixJQUFJLENBQUMyQixNQUFNLEVBQUVqRSxHQUFHLENBQUMsRUFBRTtFQUNyRHdCLFVBQUFBLE1BQU0sQ0FBQ3hCLEdBQUcsQ0FBQyxHQUFHaUUsTUFBTSxDQUFDakUsR0FBRyxDQUFDLENBQUE7RUFDM0IsU0FBQTtFQUNGLE9BQUE7RUFFQSxNQUFBLE9BQU93QixNQUFNLENBQUE7RUFDZixLQUFDLE1BQU07RUFDTCxNQUFBLE9BQU9XLE1BQU0sQ0FBQzZCLE1BQU0sQ0FBQ3hDLE1BQU0sRUFBRXlDLE1BQU0sQ0FBQyxDQUFBO0VBQ3RDLEtBQUE7RUFDRixHQUFBO0VBQ0YsQ0FBQzs7RUN2SUQsSUFBTUUsTUFBTSxHQUFHLEVBQUUsQ0FBQTtFQUVqQixJQUFNQyxJQUFJLEdBQUc7RUFDWEMsRUFBQUEsTUFBTSxFQUFFLENBQUM7SUFDVEMsTUFBTSxFQUFFLEVBQUU7SUFFVjVGLEVBQUUsRUFBQSxTQUFBQSxFQUFDNkYsQ0FBQUEsSUFBSSxFQUFFO0VBQ1AsSUFBQSxJQUFJSixNQUFNLENBQUNJLElBQUksQ0FBQyxLQUFLdEMsU0FBUyxJQUFJa0MsTUFBTSxDQUFDSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUVKLE1BQU0sQ0FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQ3pFLElBQUEsT0FBVUEsSUFBSSxHQUFJSixHQUFBQSxHQUFBQSxNQUFNLENBQUNJLElBQUksQ0FBQyxFQUFFLENBQUE7S0FDakM7SUFFREMsS0FBSyxFQUFBLFNBQUFBLEtBQUNoRCxDQUFBQSxNQUFNLEVBQUU7RUFDWixJQUFBLElBQUlpRCxHQUFHLEdBQUcsSUFBSSxDQUFDQyxjQUFjLENBQUNsRCxNQUFNLENBQUMsQ0FBQTtNQUNyQyxJQUFJaUQsR0FBRyxFQUFFLE9BQU9BLEdBQUcsQ0FBQTtFQUVuQkEsSUFBQUEsR0FBRyxHQUFXLE9BQUEsR0FBQSxJQUFJLENBQUNKLE1BQU0sRUFBSSxDQUFBO0VBQzdCLElBQUEsSUFBSSxDQUFDQyxNQUFNLENBQUNHLEdBQUcsQ0FBQyxHQUFHakQsTUFBTSxDQUFBO0VBQ3pCLElBQUEsT0FBT2lELEdBQUcsQ0FBQTtLQUNYO0lBRURDLGNBQWMsRUFBQSxTQUFBQSxjQUFDbEQsQ0FBQUEsTUFBTSxFQUFFO01BQ3JCLElBQUkyQixHQUFHLEVBQUV6RSxFQUFFLENBQUE7RUFFWCxJQUFBLEtBQUtBLEVBQUUsSUFBSSxJQUFJLENBQUM0RixNQUFNLEVBQUU7RUFDdEJuQixNQUFBQSxHQUFHLEdBQUcsSUFBSSxDQUFDbUIsTUFBTSxDQUFDNUYsRUFBRSxDQUFDLENBQUE7RUFFckIsTUFBQSxJQUFJeUUsR0FBRyxLQUFLM0IsTUFBTSxFQUFFLE9BQU85QyxFQUFFLENBQUE7RUFDN0IsTUFBQSxJQUFJLElBQUksQ0FBQ2lHLE1BQU0sQ0FBQ3hCLEdBQUcsRUFBRTNCLE1BQU0sQ0FBQyxJQUFJMkIsR0FBRyxDQUFDL0IsR0FBRyxLQUFLSSxNQUFNLENBQUNKLEdBQUcsRUFBRSxPQUFPMUMsRUFBRSxDQUFBO0VBQ25FLEtBQUE7RUFFQSxJQUFBLE9BQU8sSUFBSSxDQUFBO0tBQ1o7RUFFRGlHLEVBQUFBLE1BQU0sRUFBQUEsU0FBQUEsTUFBQUEsQ0FBQ3hCLEdBQUcsRUFBRTNCLE1BQU0sRUFBRTtFQUNsQixJQUFBLE9BQU8sT0FBTzJCLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTzNCLE1BQU0sS0FBSyxRQUFRLElBQUkyQixHQUFHLENBQUN5QixPQUFPLElBQUlwRCxNQUFNLENBQUNvRCxPQUFPLENBQUE7S0FDOUY7SUFFREMsU0FBUyxFQUFBLFNBQUFBLFNBQUNKLENBQUFBLEdBQUcsRUFBRTtFQUNiLElBQUEsT0FBTyxJQUFJLENBQUNILE1BQU0sQ0FBQ0csR0FBRyxDQUFDLENBQUE7RUFDekIsR0FBQTtFQUNGLENBQUM7O0VDeENEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBRWlDLE1BRVpLLElBQUksZ0JBQUEsWUFBQTtFQUN2QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQUEsSUFBQUEsQ0FBWUMsR0FBRyxFQUFFO01BQ2YsSUFBSSxDQUFDQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0VBQ2QsSUFBQSxJQUFJLENBQUNDLEtBQUssR0FBRyxFQUFFLENBQUE7RUFDakIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBVkUsRUFBQSxJQUFBQyxNQUFBLEdBQUFKLElBQUEsQ0FBQTFDLFNBQUEsQ0FBQTtJQUFBOEMsTUFBQSxDQVdBQyxHQUFHLEdBQUgsU0FBQUEsR0FBQUEsQ0FBSTNELE1BQU0sRUFBRTRELE1BQU0sRUFBRVgsR0FBRyxFQUFFO0VBQ3ZCLElBQUEsSUFBSVksQ0FBQyxDQUFBO0VBQ0xaLElBQUFBLEdBQUcsR0FBR0EsR0FBRyxJQUFJakQsTUFBTSxDQUFDOEQsTUFBTSxJQUFJbEIsSUFBSSxDQUFDSSxLQUFLLENBQUNoRCxNQUFNLENBQUMsQ0FBQTtFQUVoRCxJQUFBLElBQUksSUFBSSxDQUFDeUQsS0FBSyxDQUFDUixHQUFHLENBQUMsSUFBSSxJQUFJLENBQUNRLEtBQUssQ0FBQ1IsR0FBRyxDQUFDLENBQUNySSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2pEaUosQ0FBQyxHQUFHLElBQUksQ0FBQ0osS0FBSyxDQUFDUixHQUFHLENBQUMsQ0FBQ2MsR0FBRyxFQUFFLENBQUE7RUFDM0IsS0FBQyxNQUFNO1FBQ0xGLENBQUMsR0FBRyxJQUFJLENBQUNHLGFBQWEsQ0FBQ2hFLE1BQU0sRUFBRTRELE1BQU0sQ0FBQyxDQUFBO0VBQ3hDLEtBQUE7RUFFQUMsSUFBQUEsQ0FBQyxDQUFDQyxNQUFNLEdBQUc5RCxNQUFNLENBQUM4RCxNQUFNLElBQUliLEdBQUcsQ0FBQTtFQUMvQixJQUFBLE9BQU9ZLENBQUMsQ0FBQTtFQUNWLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFURTtFQUFBSCxFQUFBQSxNQUFBLENBVUFPLE1BQU0sR0FBTixTQUFBQSxNQUFBQSxDQUFPakUsTUFBTSxFQUFFO0VBQ2IsSUFBQSxPQUFPLElBQUksQ0FBQ2tFLFFBQVEsQ0FBQ2xFLE1BQU0sQ0FBQzhELE1BQU0sQ0FBQyxDQUFDeEMsSUFBSSxDQUFDdEIsTUFBTSxDQUFDLENBQUE7RUFDbEQsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQVpFO0lBQUEwRCxNQUFBLENBYUFNLGFBQWEsR0FBYixTQUFBQSxjQUFjaEUsTUFBTSxFQUFFNEQsTUFBTSxFQUFFO01BQzVCLElBQUksQ0FBQ0osS0FBSyxFQUFFLENBQUE7TUFFWixJQUFJLElBQUksQ0FBQ1csTUFBTSxFQUFFO0VBQ2YsTUFBQSxPQUFPLElBQUksQ0FBQ0EsTUFBTSxDQUFDbkUsTUFBTSxFQUFFNEQsTUFBTSxDQUFDLENBQUE7RUFDcEMsS0FBQyxNQUFNLElBQUksT0FBTzVELE1BQU0sS0FBSyxVQUFVLEVBQUU7RUFDdkMsTUFBQSxPQUFPb0UsSUFBSSxDQUFDdEMsVUFBVSxDQUFDOUIsTUFBTSxFQUFFNEQsTUFBTSxDQUFDLENBQUE7RUFDeEMsS0FBQyxNQUFNO0VBQ0wsTUFBQSxPQUFPNUQsTUFBTSxDQUFDcUUsS0FBSyxFQUFFLENBQUE7RUFDdkIsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQVBFO0VBQUFYLEVBQUFBLE1BQUEsQ0FRQVksUUFBUSxHQUFSLFNBQUFBLFdBQVc7TUFDVCxJQUFJQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0VBQ2IsSUFBQSxLQUFLLElBQUlySCxFQUFFLElBQUksSUFBSSxDQUFDdUcsS0FBSyxFQUFBO1FBQUVjLEtBQUssSUFBSSxJQUFJLENBQUNkLEtBQUssQ0FBQ3ZHLEVBQUUsQ0FBQyxDQUFDdEMsTUFBTSxDQUFBO0VBQUMsS0FBQTtFQUMxRCxJQUFBLE9BQU8ySixLQUFLLEVBQUUsQ0FBQTtFQUNoQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0VBQUFiLEVBQUFBLE1BQUEsQ0FNQW5CLE9BQU8sR0FBUCxTQUFBQSxVQUFVO0VBQ1IsSUFBQSxLQUFLLElBQUlyRixFQUFFLElBQUksSUFBSSxDQUFDdUcsS0FBSyxFQUFFO1FBQ3pCLElBQUksQ0FBQ0EsS0FBSyxDQUFDdkcsRUFBRSxDQUFDLENBQUN0QyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0VBQ3pCLE1BQUEsT0FBTyxJQUFJLENBQUM2SSxLQUFLLENBQUN2RyxFQUFFLENBQUMsQ0FBQTtFQUN2QixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BVkU7RUFBQXdHLEVBQUFBLE1BQUEsQ0FXQVEsUUFBUSxHQUFSLFNBQUFBLFFBQUFBLENBQVNqQixHQUFHLEVBQWM7RUFBQSxJQUFBLElBQWpCQSxHQUFHLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBSEEsTUFBQUEsR0FBRyxHQUFHLFNBQVMsQ0FBQTtFQUFBLEtBQUE7RUFDdEIsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDUSxLQUFLLENBQUNSLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQ1EsS0FBSyxDQUFDUixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUE7RUFDMUMsSUFBQSxPQUFPLElBQUksQ0FBQ1EsS0FBSyxDQUFDUixHQUFHLENBQUMsQ0FBQTtLQUN2QixDQUFBO0VBQUEsRUFBQSxPQUFBSyxJQUFBLENBQUE7RUFBQSxDQUFBOztNQzdJa0JrQixLQUFLLGdCQUFBLFlBQUE7SUFDeEIsU0FBQUEsS0FBQUEsQ0FBWUMsTUFBTSxFQUFFO01BQ2xCLElBQUksQ0FBQ0EsTUFBTSxHQUFHQSxNQUFNLENBQUE7TUFDcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUcsSUFBSSxDQUFBO01BQ3JCLElBQUksQ0FBQzNCLElBQUksR0FBRyxDQUFDLENBQUE7TUFFYixJQUFJLENBQUM0QixZQUFZLEdBQUcsQ0FBQyxDQUFBO01BQ3JCLElBQUksQ0FBQ0MsYUFBYSxHQUFHLENBQUMsQ0FBQTtFQUN4QixHQUFBO0VBQUMsRUFBQSxJQUFBbEIsTUFBQSxHQUFBYyxLQUFBLENBQUE1RCxTQUFBLENBQUE7SUFBQThDLE1BQUEsQ0FFRG1CLE1BQU0sR0FBTixTQUFBQSxPQUFPcEgsS0FBSyxFQUFFcUgsSUFBSSxFQUFFO0VBQ2xCLElBQUEsSUFBSSxDQUFDQyxHQUFHLENBQUN0SCxLQUFLLEVBQUVxSCxJQUFJLENBQUMsQ0FBQTtFQUVyQixJQUFBLElBQU1FLE9BQU8sR0FBRyxJQUFJLENBQUNDLFVBQVUsRUFBRSxDQUFBO0VBQ2pDLElBQUEsSUFBTUMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxFQUFFLENBQUE7TUFDbkMsSUFBSUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtNQUVaLFFBQVEsSUFBSSxDQUFDckMsSUFBSTtFQUNmLE1BQUEsS0FBSyxDQUFDO1VBQ0pxQyxHQUFHLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQ1gsTUFBTSxDQUFDWSxRQUFRLENBQUN6SyxNQUFNLEdBQUcsTUFBTSxDQUFBO1VBQ3hELElBQUlvSyxPQUFPLEVBQUVJLEdBQUcsSUFBSSxXQUFXLEdBQUdKLE9BQU8sQ0FBQ00sU0FBUyxHQUFHLE1BQU0sQ0FBQTtVQUM1RCxJQUFJTixPQUFPLEVBQUVJLEdBQUcsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDRyxhQUFhLENBQUNQLE9BQU8sQ0FBQyxDQUFBO0VBQ3hELFFBQUEsTUFBQTtFQUVGLE1BQUEsS0FBSyxDQUFDO0VBQ0osUUFBQSxJQUFJQSxPQUFPLEVBQUVJLEdBQUcsSUFBSSxjQUFjLEdBQUdKLE9BQU8sQ0FBQ1EsV0FBVyxDQUFDNUssTUFBTSxHQUFHLE1BQU0sQ0FBQTtFQUN4RSxRQUFBLElBQUlvSyxPQUFPLEVBQ1RJLEdBQUcsSUFBSSxzQ0FBc0MsR0FBRyxJQUFJLENBQUNLLFNBQVMsQ0FBQ1QsT0FBTyxDQUFDUSxXQUFXLENBQUMsR0FBRyxhQUFhLENBQUE7RUFDckcsUUFBQSxJQUFJUixPQUFPLEVBQUVJLEdBQUcsSUFBSSxhQUFhLEdBQUdKLE9BQU8sQ0FBQ1UsVUFBVSxDQUFDOUssTUFBTSxHQUFHLE1BQU0sQ0FBQTtFQUN0RSxRQUFBLElBQUlvSyxPQUFPLEVBQUVJLEdBQUcsSUFBSSxzQ0FBc0MsR0FBRyxJQUFJLENBQUNLLFNBQVMsQ0FBQ1QsT0FBTyxDQUFDVSxVQUFVLENBQUMsR0FBRyxhQUFhLENBQUE7RUFDL0csUUFBQSxNQUFBO0VBRUYsTUFBQSxLQUFLLENBQUM7VUFDSixJQUFJUixRQUFRLEVBQUVFLEdBQUcsSUFBSUYsUUFBUSxDQUFDUyxJQUFJLEdBQUcsTUFBTSxDQUFBO0VBQzNDLFFBQUEsSUFBSVQsUUFBUSxFQUFFRSxHQUFHLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQ1EsZ0JBQWdCLENBQUNWLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtFQUN2RSxRQUFBLE1BQUE7RUFFRixNQUFBO1VBQ0VFLEdBQUcsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDWCxNQUFNLENBQUNILFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQTtFQUNyRGMsUUFBQUEsR0FBRyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUNYLE1BQU0sQ0FBQ29CLElBQUksQ0FBQ3ZCLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQTtVQUNyRGMsR0FBRyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUNYLE1BQU0sQ0FBQ29CLElBQUksQ0FBQ3JDLEtBQUssQ0FBQTtFQUM1QyxLQUFBO0VBRUEsSUFBQSxJQUFJLENBQUNrQixTQUFTLENBQUNvQixTQUFTLEdBQUdWLEdBQUcsQ0FBQTtLQUMvQixDQUFBO0lBQUExQixNQUFBLENBRURxQixHQUFHLEdBQUgsU0FBQUEsSUFBSXRILEtBQUssRUFBRXFILElBQUksRUFBRTtFQUFBLElBQUEsSUFBQWlCLEtBQUEsR0FBQSxJQUFBLENBQUE7RUFDZixJQUFBLElBQUksQ0FBQyxJQUFJLENBQUNyQixTQUFTLEVBQUU7UUFDbkIsSUFBSSxDQUFDM0IsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUViLElBQUksQ0FBQzJCLFNBQVMsR0FBR25ILFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQzlDLE1BQUEsSUFBSSxDQUFDa0gsU0FBUyxDQUFDakgsS0FBSyxDQUFDdUksT0FBTyxHQUFHLENBQzdCLHFEQUFxRCxFQUNyRCwrRkFBK0YsRUFDL0YsMkRBQTJELENBQzVELENBQUNDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVWLElBQUksQ0FBQ3ZCLFNBQVMsQ0FBQ3dCLGdCQUFnQixDQUM3QixPQUFPLEVBQ1AsVUFBQW5HLENBQUMsRUFBSTtVQUNIZ0csS0FBSSxDQUFDaEQsSUFBSSxFQUFFLENBQUE7VUFDWCxJQUFJZ0QsS0FBSSxDQUFDaEQsSUFBSSxHQUFHLENBQUMsRUFBRWdELEtBQUksQ0FBQ2hELElBQUksR0FBRyxDQUFDLENBQUE7U0FDakMsRUFDRCxLQUNGLENBQUMsQ0FBQTtRQUVELElBQUlvRCxFQUFFLEVBQUVDLEtBQUssQ0FBQTtFQUNiLE1BQUEsUUFBUTNJLEtBQUs7RUFDWCxRQUFBLEtBQUssQ0FBQztFQUNKMEksVUFBQUEsRUFBRSxHQUFHLE1BQU0sQ0FBQTtFQUNYQyxVQUFBQSxLQUFLLEdBQUcsTUFBTSxDQUFBO0VBQ2QsVUFBQSxNQUFBO0VBRUYsUUFBQSxLQUFLLENBQUM7RUFDSkQsVUFBQUEsRUFBRSxHQUFHLE1BQU0sQ0FBQTtFQUNYQyxVQUFBQSxLQUFLLEdBQUcsTUFBTSxDQUFBO0VBQ2QsVUFBQSxNQUFBO0VBRUYsUUFBQTtFQUNFRCxVQUFBQSxFQUFFLEdBQUcsTUFBTSxDQUFBO0VBQ1hDLFVBQUFBLEtBQUssR0FBRyxNQUFNLENBQUE7RUFDbEIsT0FBQTtRQUVBLElBQUksQ0FBQzFCLFNBQVMsQ0FBQ2pILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHMEksRUFBRSxDQUFBO1FBQzdDLElBQUksQ0FBQ3pCLFNBQVMsQ0FBQ2pILEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRzJJLEtBQUssQ0FBQTtFQUN2QyxLQUFBO0VBRUEsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDMUIsU0FBUyxDQUFDMkIsVUFBVSxFQUFFO1FBQzlCdkIsSUFBSSxHQUFHQSxJQUFJLElBQUksSUFBSSxDQUFDQSxJQUFJLElBQUl2SCxRQUFRLENBQUN1SCxJQUFJLENBQUE7RUFDekNBLE1BQUFBLElBQUksQ0FBQ3dCLFdBQVcsQ0FBQyxJQUFJLENBQUM1QixTQUFTLENBQUMsQ0FBQTtFQUNsQyxLQUFBO0tBQ0QsQ0FBQTtFQUFBaEIsRUFBQUEsTUFBQSxDQUVEdUIsVUFBVSxHQUFWLFNBQUFBLGFBQWE7TUFDWCxPQUFPLElBQUksQ0FBQ1IsTUFBTSxDQUFDWSxRQUFRLENBQUMsSUFBSSxDQUFDVixZQUFZLENBQUMsQ0FBQTtLQUMvQyxDQUFBO0VBQUFqQixFQUFBQSxNQUFBLENBRUR5QixXQUFXLEdBQVgsU0FBQUEsY0FBYztNQUNaLE9BQU8sSUFBSSxDQUFDVixNQUFNLENBQUM4QixTQUFTLENBQUMsSUFBSSxDQUFDM0IsYUFBYSxDQUFDLENBQUE7S0FDakQsQ0FBQTtFQUFBbEIsRUFBQUEsTUFBQSxDQUVEK0IsU0FBUyxHQUFULFNBQUFBLFNBQUFBLENBQVV6RSxHQUFHLEVBQUU7TUFDYixJQUFJd0YsTUFBTSxHQUFHLEVBQUUsQ0FBQTtNQUNmLElBQUksQ0FBQ3hGLEdBQUcsSUFBSSxDQUFDQSxHQUFHLENBQUNwRyxNQUFNLEVBQUUsT0FBTzRMLE1BQU0sQ0FBQTtFQUV0QyxJQUFBLEtBQUssSUFBSTFMLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2tHLEdBQUcsQ0FBQ3BHLE1BQU0sRUFBRUUsQ0FBQyxFQUFFLEVBQUU7RUFDbkMwTCxNQUFBQSxNQUFNLElBQUksQ0FBQ3hGLEdBQUcsQ0FBQ2xHLENBQUMsQ0FBQyxDQUFDNkssSUFBSSxJQUFJLEVBQUUsRUFBRTlHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0VBQ2xELEtBQUE7RUFFQSxJQUFBLE9BQU8ySCxNQUFNLENBQUE7S0FDZCxDQUFBO0VBQUE5QyxFQUFBQSxNQUFBLENBRURrQyxnQkFBZ0IsR0FBaEIsU0FBQUEsZ0JBQUFBLENBQWlCVixRQUFRLEVBQUU7RUFDekIsSUFBQSxPQUFPQSxRQUFRLENBQUNXLElBQUksQ0FBQ3JDLEtBQUssSUFBSzBCLFFBQVEsQ0FBQ3VCLEtBQUssSUFBSXZCLFFBQVEsQ0FBQ3VCLEtBQUssQ0FBQ2pELEtBQU0sSUFBSSxDQUFDLENBQUE7S0FDNUUsQ0FBQTtFQUFBRSxFQUFBQSxNQUFBLENBRUQ2QixhQUFhLEdBQWIsU0FBQUEsYUFBQUEsQ0FBY3hGLENBQUMsRUFBRTtNQUNmLE9BQU8xRSxJQUFJLENBQUNxTCxLQUFLLENBQUMzRyxDQUFDLENBQUM4RCxDQUFDLENBQUM1RixDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUc1QyxJQUFJLENBQUNxTCxLQUFLLENBQUMzRyxDQUFDLENBQUM4RCxDQUFDLENBQUMzRixDQUFDLENBQUMsQ0FBQTtLQUNuRCxDQUFBO0VBQUF3RixFQUFBQSxNQUFBLENBRURuQixPQUFPLEdBQVAsU0FBQUEsVUFBVTtNQUNSLElBQUksSUFBSSxDQUFDbUMsU0FBUyxJQUFJLElBQUksQ0FBQ0EsU0FBUyxDQUFDMkIsVUFBVSxFQUFFO1FBQy9DLElBQU12QixJQUFJLEdBQUcsSUFBSSxDQUFDQSxJQUFJLElBQUl2SCxRQUFRLENBQUN1SCxJQUFJLENBQUE7RUFDdkNBLE1BQUFBLElBQUksQ0FBQzZCLFdBQVcsQ0FBQyxJQUFJLENBQUNqQyxTQUFTLENBQUMsQ0FBQTtFQUNsQyxLQUFBO01BRUEsSUFBSSxDQUFDRCxNQUFNLEdBQUcsSUFBSSxDQUFBO01BQ2xCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLElBQUksQ0FBQTtLQUN0QixDQUFBO0VBQUEsRUFBQSxPQUFBRixLQUFBLENBQUE7RUFBQSxDQUFBLEVBQUE7O0VDaElIO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFKQSxJQU1xQm9DLGVBQWUsZ0JBQUEsWUFBQTtFQUNsQyxFQUFBLFNBQUFBLGtCQUFjO01BQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUcsSUFBSSxDQUFBO0VBQ3hCLEdBQUE7RUFBQ0QsRUFBQUEsZUFBQSxDQUVNMUUsSUFBSSxHQUFYLFNBQUFBLElBQUFBLENBQVlsQyxNQUFNLEVBQUU7TUFDbEJBLE1BQU0sQ0FBQ1ksU0FBUyxDQUFDa0csYUFBYSxHQUFHRixlQUFlLENBQUNoRyxTQUFTLENBQUNrRyxhQUFhLENBQUE7TUFDeEU5RyxNQUFNLENBQUNZLFNBQVMsQ0FBQ21HLGdCQUFnQixHQUFHSCxlQUFlLENBQUNoRyxTQUFTLENBQUNtRyxnQkFBZ0IsQ0FBQTtNQUM5RS9HLE1BQU0sQ0FBQ1ksU0FBUyxDQUFDc0YsZ0JBQWdCLEdBQUdVLGVBQWUsQ0FBQ2hHLFNBQVMsQ0FBQ3NGLGdCQUFnQixDQUFBO01BQzlFbEcsTUFBTSxDQUFDWSxTQUFTLENBQUNvRyxtQkFBbUIsR0FBR0osZUFBZSxDQUFDaEcsU0FBUyxDQUFDb0csbUJBQW1CLENBQUE7TUFDcEZoSCxNQUFNLENBQUNZLFNBQVMsQ0FBQ3FHLHVCQUF1QixHQUFHTCxlQUFlLENBQUNoRyxTQUFTLENBQUNxRyx1QkFBdUIsQ0FBQTtLQUM3RixDQUFBO0VBQUEsRUFBQSxJQUFBdkQsTUFBQSxHQUFBa0QsZUFBQSxDQUFBaEcsU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBRUR3QyxnQkFBZ0IsR0FBaEIsU0FBQUEsaUJBQWlCbkQsSUFBSSxFQUFFbUUsUUFBUSxFQUFFO0VBQy9CLElBQUEsSUFBSSxDQUFDLElBQUksQ0FBQ0wsVUFBVSxFQUFFO0VBQ3BCLE1BQUEsSUFBSSxDQUFDQSxVQUFVLEdBQUcsRUFBRSxDQUFBO0VBQ3RCLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBSSxDQUFDRyxtQkFBbUIsQ0FBQ2pFLElBQUksRUFBRW1FLFFBQVEsQ0FBQyxDQUFBO0VBQzFDLEtBQUE7RUFFQSxJQUFBLElBQUksQ0FBQyxJQUFJLENBQUNMLFVBQVUsQ0FBQzlELElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQzhELFVBQVUsQ0FBQzlELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtNQUN0RCxJQUFJLENBQUM4RCxVQUFVLENBQUM5RCxJQUFJLENBQUMsQ0FBQ3pCLElBQUksQ0FBQzRGLFFBQVEsQ0FBQyxDQUFBO0VBRXBDLElBQUEsT0FBT0EsUUFBUSxDQUFBO0tBQ2hCLENBQUE7SUFBQXhELE1BQUEsQ0FFRHNELG1CQUFtQixHQUFuQixTQUFBQSxvQkFBb0JqRSxJQUFJLEVBQUVtRSxRQUFRLEVBQUU7RUFDbEMsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDTCxVQUFVLEVBQUUsT0FBQTtFQUN0QixJQUFBLElBQUksQ0FBQyxJQUFJLENBQUNBLFVBQVUsQ0FBQzlELElBQUksQ0FBQyxFQUFFLE9BQUE7RUFFNUIsSUFBQSxJQUFNL0IsR0FBRyxHQUFHLElBQUksQ0FBQzZGLFVBQVUsQ0FBQzlELElBQUksQ0FBQyxDQUFBO0VBQ2pDLElBQUEsSUFBTW5JLE1BQU0sR0FBR29HLEdBQUcsQ0FBQ3BHLE1BQU0sQ0FBQTtNQUV6QixLQUFLLElBQUlFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsTUFBTSxFQUFFRSxDQUFDLEVBQUUsRUFBRTtFQUMvQixNQUFBLElBQUlrRyxHQUFHLENBQUNsRyxDQUFDLENBQUMsS0FBS29NLFFBQVEsRUFBRTtVQUN2QixJQUFJdE0sTUFBTSxLQUFLLENBQUMsRUFBRTtFQUNoQixVQUFBLE9BQU8sSUFBSSxDQUFDaU0sVUFBVSxDQUFDOUQsSUFBSSxDQUFDLENBQUE7RUFDOUIsU0FBQTs7RUFFQTtlQUNLO0VBQ0gvQixVQUFBQSxHQUFHLENBQUNtRyxNQUFNLENBQUNyTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7RUFDbEIsU0FBQTtFQUVBLFFBQUEsTUFBQTtFQUNGLE9BQUE7RUFDRixLQUFBO0tBQ0QsQ0FBQTtFQUFBNEksRUFBQUEsTUFBQSxDQUVEdUQsdUJBQXVCLEdBQXZCLFNBQUFBLHVCQUFBQSxDQUF3QmxFLElBQUksRUFBRTtNQUM1QixJQUFJLENBQUNBLElBQUksRUFBRSxJQUFJLENBQUM4RCxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQzdCLElBQUksSUFBSSxDQUFDQSxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUNBLFVBQVUsQ0FBQzlELElBQUksQ0FBQyxDQUFBO0tBQ3ZELENBQUE7SUFBQVcsTUFBQSxDQUVEb0QsYUFBYSxHQUFiLFNBQUFBLGNBQWMvRCxJQUFJLEVBQUVmLElBQUksRUFBRTtNQUN4QixJQUFJd0UsTUFBTSxHQUFHLEtBQUssQ0FBQTtFQUNsQixJQUFBLElBQU1ZLFNBQVMsR0FBRyxJQUFJLENBQUNQLFVBQVUsQ0FBQTtNQUVqQyxJQUFJOUQsSUFBSSxJQUFJcUUsU0FBUyxFQUFFO0VBQ3JCLE1BQUEsSUFBSXBHLEdBQUcsR0FBR29HLFNBQVMsQ0FBQ3JFLElBQUksQ0FBQyxDQUFBO0VBQ3pCLE1BQUEsSUFBSSxDQUFDL0IsR0FBRyxFQUFFLE9BQU93RixNQUFNLENBQUE7O0VBRXZCO0VBQ0E7O0VBRUEsTUFBQSxJQUFJYSxPQUFPLENBQUE7RUFDWCxNQUFBLElBQUl2TSxDQUFDLEdBQUdrRyxHQUFHLENBQUNwRyxNQUFNLENBQUE7UUFDbEIsT0FBT0UsQ0FBQyxFQUFFLEVBQUU7RUFDVnVNLFFBQUFBLE9BQU8sR0FBR3JHLEdBQUcsQ0FBQ2xHLENBQUMsQ0FBQyxDQUFBO0VBQ2hCMEwsUUFBQUEsTUFBTSxHQUFHQSxNQUFNLElBQUlhLE9BQU8sQ0FBQ3JGLElBQUksQ0FBQyxDQUFBO0VBQ2xDLE9BQUE7RUFDRixLQUFBO01BRUEsT0FBTyxDQUFDLENBQUN3RSxNQUFNLENBQUE7S0FDaEIsQ0FBQTtFQUFBOUMsRUFBQUEsTUFBQSxDQUVEcUQsZ0JBQWdCLEdBQWhCLFNBQUFBLGdCQUFBQSxDQUFpQmhFLElBQUksRUFBRTtFQUNyQixJQUFBLElBQU1xRSxTQUFTLEdBQUcsSUFBSSxDQUFDUCxVQUFVLENBQUE7TUFDakMsT0FBTyxDQUFDLEVBQUVPLFNBQVMsSUFBSUEsU0FBUyxDQUFDckUsSUFBSSxDQUFDLENBQUMsQ0FBQTtLQUN4QyxDQUFBO0VBQUEsRUFBQSxPQUFBNkQsZUFBQSxDQUFBO0VBQUEsQ0FBQSxFQUFBOztFQ3JGSCxJQUFNVSxFQUFFLEdBQUcsU0FBUyxDQUFBO0VBQ3BCLElBQU1DLFFBQVEsR0FBR0MsUUFBUSxDQUFBO0FBRXpCLE1BQU1DLFFBQVEsR0FBRztFQUNmSCxFQUFBQSxFQUFFLEVBQUVBLEVBQUU7SUFDTkksSUFBSSxFQUFFSixFQUFFLEdBQUcsQ0FBQztJQUNaSyxJQUFJLEVBQUVMLEVBQUUsR0FBRyxDQUFDO0lBQ1pNLE1BQU0sRUFBRU4sRUFBRSxHQUFHLEdBQUc7SUFDaEJPLE9BQU8sRUFBRSxHQUFHLEdBQUdQLEVBQUU7SUFDakJFLFFBQVEsRUFBRSxDQUFDLEdBQUc7SUFFZE0sVUFBVSxFQUFBLFNBQUFBLFVBQUN2RSxDQUFBQSxHQUFHLEVBQUU7TUFDZCxPQUFPQSxHQUFHLEtBQUssSUFBSSxDQUFDaUUsUUFBUSxJQUFJakUsR0FBRyxLQUFLZ0UsUUFBUSxDQUFBO0tBQ2pEO0VBRURRLEVBQUFBLFVBQVUsV0FBQUEsVUFBQ2xNLENBQUFBLENBQUMsRUFBRUMsQ0FBQyxFQUFFa00sS0FBSyxFQUFVO0VBQUEsSUFBQSxJQUFmQSxLQUFLLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBTEEsTUFBQUEsS0FBSyxHQUFHLEtBQUssQ0FBQTtFQUFBLEtBQUE7RUFDNUIsSUFBQSxJQUFJLENBQUNBLEtBQUssRUFBRSxPQUFPbk0sQ0FBQyxHQUFHUixJQUFJLENBQUNvRyxNQUFNLEVBQUUsSUFBSTNGLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsS0FDMUMsT0FBTyxDQUFFUixJQUFJLENBQUNvRyxNQUFNLEVBQUUsSUFBSTNGLENBQUMsR0FBR0QsQ0FBQyxDQUFDLElBQUssQ0FBQyxJQUFJQSxDQUFDLENBQUE7S0FDakQ7RUFFRG9NLEVBQUFBLGNBQWMsV0FBQUEsY0FBQ0MsQ0FBQUEsTUFBTSxFQUFFQyxDQUFDLEVBQUVILEtBQUssRUFBRTtFQUMvQixJQUFBLE9BQU8sSUFBSSxDQUFDRCxVQUFVLENBQUNHLE1BQU0sR0FBR0MsQ0FBQyxFQUFFRCxNQUFNLEdBQUdDLENBQUMsRUFBRUgsS0FBSyxDQUFDLENBQUE7S0FDdEQ7SUFFREksV0FBVyxFQUFBLFNBQUFBLGNBQUc7TUFDWixPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFFL00sSUFBSSxDQUFDb0csTUFBTSxFQUFFLEdBQUcsU0FBUyxJQUFLLENBQUMsRUFBRVosUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFd0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDbkY7RUFFREMsRUFBQUEsVUFBVSxFQUFBQSxTQUFBQSxVQUFBQSxDQUFDQyxPQUFPLEVBQUUsRUFBRTtFQUV0Qi9HLEVBQUFBLEtBQUssRUFBQUEsU0FBQUEsS0FBQUEsQ0FBQytCLEdBQUcsRUFBRWlGLENBQUMsRUFBTTtFQUFBLElBQUEsSUFBUEEsQ0FBQyxLQUFBLEtBQUEsQ0FBQSxFQUFBO0VBQURBLE1BQUFBLENBQUMsR0FBRyxDQUFDLENBQUE7RUFBQSxLQUFBO01BQ2QsSUFBTUMsTUFBTSxHQUFHcE4sSUFBSSxDQUFDcU4sR0FBRyxDQUFDLEVBQUUsRUFBRUYsQ0FBQyxDQUFDLENBQUE7TUFDOUIsT0FBT25OLElBQUksQ0FBQ21HLEtBQUssQ0FBQytCLEdBQUcsR0FBR2tGLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLENBQUE7S0FDekM7SUFFREUsZUFBZSxFQUFBLFNBQUFBLGVBQUM5TSxDQUFBQSxDQUFDLEVBQUU7RUFDakIsSUFBQSxPQUFRQSxDQUFDLEdBQUd5TCxFQUFFLEdBQUksR0FBRyxDQUFBO0tBQ3RCO0lBRURzQixTQUFTLEVBQUEsU0FBQUEsU0FBQ3JGLENBQUFBLEdBQUcsRUFBRTtFQUNiLElBQUEsT0FBQSxHQUFBLEdBQVdBLEdBQUcsQ0FBQzFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUM3QixHQUFBO0VBQ0Y7O01DMUNxQmdJLFdBQVcsZ0JBQUEsWUFBQTtJQUM5QixTQUFBQSxXQUFBQSxDQUFZOUYsSUFBSSxFQUFFO01BQ2hCLElBQUksQ0FBQ0EsSUFBSSxHQUFHQSxJQUFJLENBQUE7RUFDbEIsR0FBQTtFQUFDLEVBQUEsSUFBQVcsTUFBQSxHQUFBbUYsV0FBQSxDQUFBakksU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBRURvRixTQUFTLEdBQVQsU0FBQUEsU0FBQUEsQ0FBVUMsU0FBUyxFQUFFQyxJQUFJLEVBQUVDLE9BQU8sRUFBRTtNQUNsQyxJQUFJLENBQUNDLGNBQWMsQ0FBQ0gsU0FBUyxFQUFFQyxJQUFJLEVBQUVDLE9BQU8sQ0FBQyxDQUFBO0VBQy9DLEdBQUE7O0VBRUE7RUFDQTtFQUFBLEdBQUE7SUFBQXZGLE1BQUEsQ0FDQXdGLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlQyxRQUFRLEVBQUVILElBQUksRUFBRUMsT0FBTyxFQUFFO0VBQ3RDLElBQUEsSUFBSSxDQUFDRSxRQUFRLENBQUNDLEtBQUssRUFBRTtRQUNuQkQsUUFBUSxDQUFDRSxHQUFHLENBQUN4RixDQUFDLENBQUN5RixJQUFJLENBQUNILFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQyxDQUFBO1FBQy9Cc0YsUUFBUSxDQUFDRSxHQUFHLENBQUNFLENBQUMsQ0FBQ0QsSUFBSSxDQUFDSCxRQUFRLENBQUNJLENBQUMsQ0FBQyxDQUFBO1FBRS9CSixRQUFRLENBQUN0TixDQUFDLENBQUMyTixjQUFjLENBQUMsQ0FBQyxHQUFHTCxRQUFRLENBQUNNLElBQUksQ0FBQyxDQUFBO0VBQzVDTixNQUFBQSxRQUFRLENBQUNJLENBQUMsQ0FBQ3hFLEdBQUcsQ0FBQ29FLFFBQVEsQ0FBQ3ROLENBQUMsQ0FBQzJOLGNBQWMsQ0FBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQTtFQUMvQ0csTUFBQUEsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDa0IsR0FBRyxDQUFDb0UsUUFBUSxDQUFDRSxHQUFHLENBQUNFLENBQUMsQ0FBQ0MsY0FBYyxDQUFDUixJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRW5ELElBQUlDLE9BQU8sRUFBRUUsUUFBUSxDQUFDSSxDQUFDLENBQUNDLGNBQWMsQ0FBQ1AsT0FBTyxDQUFDLENBQUE7RUFFL0NFLE1BQUFBLFFBQVEsQ0FBQ3ROLENBQUMsQ0FBQzZOLEtBQUssRUFBRSxDQUFBO0VBQ3BCLEtBQUE7S0FDRCxDQUFBO0VBQUEsRUFBQSxPQUFBYixXQUFBLENBQUE7RUFBQSxDQUFBLEVBQUE7O0FDbkIyQyxNQUV6QmMsTUFBTSxnQkFBQSxZQUFBO0VBR3pCOztFQUtBOztFQWVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUFBLE1BQUFBLENBQVlDLGVBQWUsRUFBRTtNQUMzQixJQUFJLENBQUN2RSxRQUFRLEdBQUcsRUFBRSxDQUFBO01BQ2xCLElBQUksQ0FBQ2tCLFNBQVMsR0FBRyxFQUFFLENBQUE7TUFFbkIsSUFBSSxDQUFDeUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtNQUNiLElBQUksQ0FBQ2EsR0FBRyxHQUFHLENBQUMsQ0FBQTtNQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHLENBQUMsQ0FBQTtNQUNiLElBQUksQ0FBQ0MsT0FBTyxHQUFHLENBQUMsQ0FBQTtFQUVoQixJQUFBLElBQUksQ0FBQ0MsS0FBSyxHQUFHLElBQUl4RixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDNUIsSUFBQSxJQUFJLENBQUNxQixJQUFJLEdBQUcsSUFBSXZDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUV4QixJQUFBLElBQUksQ0FBQ3NHLGVBQWUsR0FBR3hGLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3NKLGVBQWUsRUFBRUQsTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQTtNQUNwRSxJQUFJLENBQUNDLFVBQVUsR0FBRyxJQUFJckIsV0FBVyxDQUFDLElBQUksQ0FBQ2UsZUFBZSxDQUFDLENBQUE7TUFFdkQsSUFBSSxDQUFDTyxJQUFJLEdBQUcsTUFBTSxDQUFBO0VBQ2xCLElBQUEsSUFBSSxDQUFDQyxTQUFTLEdBQUdULE1BQU0sQ0FBQ1UsZ0JBQWdCLENBQUE7RUFDMUMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUhFLEVBQUEsSUFBQTNHLE1BQUEsR0FBQWlHLE1BQUEsQ0FBQS9JLFNBQUEsQ0FBQTtFQWlCQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFSRThDLEVBQUFBLE1BQUEsQ0FTQTRHLFdBQVcsR0FBWCxTQUFBQSxXQUFBQSxDQUFZQyxNQUFNLEVBQUU7RUFDbEJBLElBQUFBLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ2pCLElBQUEsSUFBSSxDQUFDakUsU0FBUyxDQUFDakYsSUFBSSxDQUFDaUosTUFBTSxDQUFDLENBQUE7RUFDN0IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtFQUFBN0csRUFBQUEsTUFBQSxDQU1BK0csY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVGLE1BQU0sRUFBRTtNQUNyQixJQUFNbkosS0FBSyxHQUFHLElBQUksQ0FBQ21GLFNBQVMsQ0FBQzFFLE9BQU8sQ0FBQzBJLE1BQU0sQ0FBQyxDQUFBO01BQzVDLElBQUksQ0FBQ2hFLFNBQVMsQ0FBQ1ksTUFBTSxDQUFDL0YsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBQy9CbUosSUFBQUEsTUFBTSxDQUFDRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDckIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFSRTtFQUFBaEgsRUFBQUEsTUFBQSxDQVNBaUgsVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVczRixPQUFPLEVBQUU7RUFDbEIsSUFBQSxJQUFJLENBQUNLLFFBQVEsQ0FBQy9ELElBQUksQ0FBQzBELE9BQU8sQ0FBQyxDQUFBO01BQzNCQSxPQUFPLENBQUM0RixNQUFNLEdBQUcsSUFBSSxDQUFBO01BRXJCLElBQUksQ0FBQzlELGFBQWEsQ0FBQzZDLE1BQU0sQ0FBQ2tCLGFBQWEsRUFBRTdGLE9BQU8sQ0FBQyxDQUFBO0VBQ25ELEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BUkU7RUFBQXRCLEVBQUFBLE1BQUEsQ0FTQW9ILGFBQWEsR0FBYixTQUFBQSxhQUFBQSxDQUFjOUYsT0FBTyxFQUFFO01BQ3JCLElBQU01RCxLQUFLLEdBQUcsSUFBSSxDQUFDaUUsUUFBUSxDQUFDeEQsT0FBTyxDQUFDbUQsT0FBTyxDQUFDLENBQUE7TUFDNUMsSUFBSSxDQUFDSyxRQUFRLENBQUM4QixNQUFNLENBQUMvRixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7TUFDOUI0RCxPQUFPLENBQUM0RixNQUFNLEdBQUcsSUFBSSxDQUFBO01BRXJCLElBQUksQ0FBQzlELGFBQWEsQ0FBQzZDLE1BQU0sQ0FBQ29CLGVBQWUsRUFBRS9GLE9BQU8sQ0FBQyxDQUFBO0VBQ3JELEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFORTtFQUFBdEIsRUFBQUEsTUFBQSxDQU9BbUIsTUFBTSxHQUFOLFNBQUFBLFNBQVM7RUFDUDtFQUNBLElBQUEsSUFBSSxJQUFJLENBQUNzRixJQUFJLEtBQUssTUFBTSxFQUFFO0VBQ3hCLE1BQUEsSUFBSSxDQUFDckQsYUFBYSxDQUFDNkMsTUFBTSxDQUFDcUIsYUFBYSxDQUFDLENBQUE7UUFFeEMsSUFBSXJCLE1BQU0sQ0FBQ3NCLFNBQVMsRUFBRTtFQUNwQixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDQSxJQUFJLEdBQUcsSUFBSW9CLElBQUksRUFBRSxDQUFDQyxPQUFPLEVBQUUsQ0FBQTtVQUNoRCxJQUFJLENBQUN0QixHQUFHLEdBQUcsSUFBSXFCLElBQUksRUFBRSxDQUFDQyxPQUFPLEVBQUUsQ0FBQTtFQUMvQixRQUFBLElBQUksQ0FBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQ0YsR0FBRyxHQUFHLElBQUksQ0FBQ0MsSUFBSSxJQUFJLEtBQUssQ0FBQTtFQUM3QztVQUNBLElBQUksQ0FBQ3NCLGtCQUFrQixFQUFFLENBQUE7RUFFekIsUUFBQSxJQUFJLElBQUksQ0FBQ3JCLE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDc0IsY0FBYyxDQUFDLElBQUksQ0FBQ3RCLE9BQU8sQ0FBQyxDQUFBO0VBQ3ZELFFBQUEsSUFBSSxDQUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDRCxHQUFHLENBQUE7RUFDdEIsT0FBQyxNQUFNO0VBQ0wsUUFBQSxJQUFJLENBQUN3QixjQUFjLENBQUMxQixNQUFNLENBQUNVLGdCQUFnQixDQUFDLENBQUE7RUFDOUMsT0FBQTtFQUVBLE1BQUEsSUFBSSxDQUFDdkQsYUFBYSxDQUFDNkMsTUFBTSxDQUFDMkIsbUJBQW1CLENBQUMsQ0FBQTtFQUNoRCxLQUFBOztFQUVBO1dBQ0s7RUFDSCxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDQSxJQUFJLEdBQUcsSUFBSW9CLElBQUksRUFBRSxDQUFDQyxPQUFPLEVBQUUsQ0FBQTtRQUNoRCxJQUFJLENBQUN0QixHQUFHLEdBQUcsSUFBSXFCLElBQUksRUFBRSxDQUFDQyxPQUFPLEVBQUUsQ0FBQTtFQUMvQixNQUFBLElBQUksQ0FBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQ0YsR0FBRyxHQUFHLElBQUksQ0FBQ0MsSUFBSSxJQUFJLEtBQUssQ0FBQTtFQUU3QyxNQUFBLElBQUksSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSSxDQUFDSyxTQUFTLEVBQUU7RUFDakMsUUFBQSxJQUFJLENBQUN0RCxhQUFhLENBQUM2QyxNQUFNLENBQUNxQixhQUFhLENBQUMsQ0FBQTtFQUN4QyxRQUFBLElBQUksQ0FBQ0ssY0FBYyxDQUFDLElBQUksQ0FBQ2pCLFNBQVMsQ0FBQyxDQUFBO0VBQ25DO0VBQ0EsUUFBQSxJQUFJLENBQUNOLElBQUksR0FBRyxJQUFJLENBQUNELEdBQUcsR0FBSSxJQUFJLENBQUNFLE9BQU8sR0FBRyxJQUFJLENBQUNLLFNBQVMsR0FBSSxJQUFJLENBQUE7RUFDN0QsUUFBQSxJQUFJLENBQUN0RCxhQUFhLENBQUM2QyxNQUFNLENBQUMyQixtQkFBbUIsQ0FBQyxDQUFBO0VBQ2hELE9BQUE7RUFDRixLQUFBO0tBQ0QsQ0FBQTtFQUFBNUgsRUFBQUEsTUFBQSxDQUVEMkgsY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWV0QixPQUFPLEVBQUU7RUFDdEIsSUFBQSxJQUFJalAsQ0FBQyxHQUFHLElBQUksQ0FBQ3VLLFFBQVEsQ0FBQ3pLLE1BQU0sQ0FBQTtFQUM1QixJQUFBLE9BQU9FLENBQUMsRUFBRSxFQUFBO1FBQUUsSUFBSSxDQUFDdUssUUFBUSxDQUFDdkssQ0FBQyxDQUFDLENBQUMrSixNQUFNLENBQUNrRixPQUFPLENBQUMsQ0FBQTtFQUFDLEtBQUE7RUFDL0MsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQU5FO0VBQUFyRyxFQUFBQSxNQUFBLENBT0EwSCxrQkFBa0IsR0FBbEIsU0FBQUEscUJBQXFCO0VBQ25CLElBQUEsSUFBSSxDQUFDekIsTUFBTSxDQUFDeUIsa0JBQWtCLEVBQUUsT0FBQTtFQUNoQyxJQUFBLElBQUksSUFBSSxDQUFDckIsT0FBTyxHQUFHLEdBQUcsRUFBRTtRQUN0QixJQUFJLENBQUNELElBQUksR0FBRyxJQUFJb0IsSUFBSSxFQUFFLENBQUNDLE9BQU8sRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQ3BCLE9BQU8sR0FBRyxDQUFDLENBQUE7RUFDbEIsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFORTtFQUFBckcsRUFBQUEsTUFBQSxDQU9BWSxRQUFRLEdBQVIsU0FBQUEsV0FBVztNQUNULElBQUlkLEtBQUssR0FBRyxDQUFDLENBQUE7RUFDYixJQUFBLElBQUkxSSxDQUFDLEdBQUcsSUFBSSxDQUFDdUssUUFBUSxDQUFDekssTUFBTSxDQUFBO0VBRTVCLElBQUEsT0FBT0UsQ0FBQyxFQUFFLEVBQUE7UUFBRTBJLEtBQUssSUFBSSxJQUFJLENBQUM2QixRQUFRLENBQUN2SyxDQUFDLENBQUMsQ0FBQ2lPLFNBQVMsQ0FBQ25PLE1BQU0sQ0FBQTtFQUFDLEtBQUE7RUFDdkQsSUFBQSxPQUFPNEksS0FBSyxDQUFBO0tBQ2IsQ0FBQTtFQUFBRSxFQUFBQSxNQUFBLENBRUQ2SCxlQUFlLEdBQWYsU0FBQUEsa0JBQWtCO01BQ2hCLElBQUl4QyxTQUFTLEdBQUcsRUFBRSxDQUFBO0VBQ2xCLElBQUEsSUFBSWpPLENBQUMsR0FBRyxJQUFJLENBQUN1SyxRQUFRLENBQUN6SyxNQUFNLENBQUE7RUFFNUIsSUFBQSxPQUFPRSxDQUFDLEVBQUUsRUFBQTtFQUFFaU8sTUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQUMzRyxNQUFNLENBQUMsSUFBSSxDQUFDaUQsUUFBUSxDQUFDdkssQ0FBQyxDQUFDLENBQUNpTyxTQUFTLENBQUMsQ0FBQTtFQUFDLEtBQUE7RUFDckUsSUFBQSxPQUFPQSxTQUFTLENBQUE7S0FDakIsQ0FBQTtFQUFBckYsRUFBQUEsTUFBQSxDQUVEOEgsa0JBQWtCLEdBQWxCLFNBQUFBLHFCQUFxQjtFQUNuQnBILElBQUFBLElBQUksQ0FBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUMrQyxRQUFRLENBQUMsQ0FBQTtFQUNoQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTkU7RUFBQTNCLEVBQUFBLE1BQUEsQ0FPQW5CLE9BQU8sR0FBUCxTQUFBQSxPQUFBQSxDQUFRbUksTUFBTSxFQUFVO0VBQUEsSUFBQSxJQUFBM0UsS0FBQSxHQUFBLElBQUEsQ0FBQTtFQUFBLElBQUEsSUFBaEIyRSxNQUFNLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBTkEsTUFBQUEsTUFBTSxHQUFHLEtBQUssQ0FBQTtFQUFBLEtBQUE7RUFDcEIsSUFBQSxJQUFNZSxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsR0FBUztRQUN6QjFGLEtBQUksQ0FBQ2lELElBQUksR0FBRyxDQUFDLENBQUE7UUFDYmpELEtBQUksQ0FBQytELElBQUksR0FBRyxDQUFDLENBQUE7RUFDYi9ELE1BQUFBLEtBQUksQ0FBQ0YsSUFBSSxDQUFDdEQsT0FBTyxFQUFFLENBQUE7RUFDbkJ3RCxNQUFBQSxLQUFJLENBQUNpRSxLQUFLLENBQUN6SCxPQUFPLEVBQUUsQ0FBQTtFQUVwQjZCLE1BQUFBLElBQUksQ0FBQzlCLFVBQVUsQ0FBQ3lELEtBQUksQ0FBQ1YsUUFBUSxDQUFDLENBQUE7RUFDOUJqQixNQUFBQSxJQUFJLENBQUM5QixVQUFVLENBQUN5RCxLQUFJLENBQUNRLFNBQVMsRUFBRVIsS0FBSSxDQUFDd0YsZUFBZSxFQUFFLENBQUMsQ0FBQTtRQUV2RHhGLEtBQUksQ0FBQ21FLFVBQVUsR0FBRyxJQUFJLENBQUE7UUFDdEJuRSxLQUFJLENBQUNRLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFDckJSLEtBQUksQ0FBQ1YsUUFBUSxHQUFHLElBQUksQ0FBQTtRQUNwQlUsS0FBSSxDQUFDaUUsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQmpFLEtBQUksQ0FBQ0YsSUFBSSxHQUFHLElBQUksQ0FBQTtPQUNqQixDQUFBO0VBRUQsSUFBQSxJQUFJNkUsTUFBTSxFQUFFO0VBQ1ZnQixNQUFBQSxVQUFVLENBQUNELFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQTtFQUMvQixLQUFDLE1BQU07RUFDTEEsTUFBQUEsWUFBWSxFQUFFLENBQUE7RUFDaEIsS0FBQTtLQUNELENBQUE7RUFBQUUsRUFBQUEsWUFBQSxDQUFBaEMsTUFBQSxFQUFBLENBQUE7TUFBQW5MLEdBQUEsRUFBQSxLQUFBO01BQUFtRixHQUFBO0VBM0xEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0UsSUFBQSxTQUFBQSxNQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUN3RyxJQUFJLENBQUE7T0FDakI7RUFBQXlCLElBQUFBLEdBQUEsRUFYRCxTQUFBQSxHQUFRQyxDQUFBQSxHQUFHLEVBQUU7UUFDWCxJQUFJLENBQUMxQixJQUFJLEdBQUcwQixHQUFHLENBQUE7UUFDZixJQUFJLENBQUN6QixTQUFTLEdBQUd5QixHQUFHLEtBQUssTUFBTSxHQUFHbEMsTUFBTSxDQUFDVSxnQkFBZ0IsR0FBRzVDLFFBQVEsQ0FBQ2pHLEtBQUssQ0FBQyxDQUFDLEdBQUdxSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7RUFDeEYsS0FBQTtFQUFDLEdBQUEsQ0FBQSxDQUFBLENBQUE7RUFBQSxFQUFBLE9BQUFsQyxNQUFBLENBQUE7RUFBQSxDQUFBLEdBQUE7RUFoRWtCQSxNQUFNLENBQ2xCc0IsU0FBUyxHQUFHLEtBQUssQ0FBQTtFQURMdEIsTUFBTSxDQUlsQm1DLE9BQU8sR0FBRyxHQUFHLENBQUE7RUFKRG5DLE1BQU0sQ0FLbEJNLEtBQUssR0FBRyxPQUFPLENBQUE7RUFMSE4sTUFBTSxDQU1sQm9DLEdBQUcsR0FBRyxjQUFjLENBQUE7RUFOUnBDLE1BQU0sQ0FTbEJxQyxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQTtFQVR6QnJDLE1BQU0sQ0FVbEJzQyxlQUFlLEdBQUcsaUJBQWlCLENBQUE7RUFWdkJ0QyxNQUFNLENBV2xCdUMsY0FBYyxHQUFHLGdCQUFnQixDQUFBO0VBWHJCdkMsTUFBTSxDQVlsQndDLGFBQWEsR0FBRyxlQUFlLENBQUE7RUFabkJ4QyxNQUFNLENBY2xCa0IsYUFBYSxHQUFHLGVBQWUsQ0FBQTtFQWRuQmxCLE1BQU0sQ0FlbEJvQixlQUFlLEdBQUcsaUJBQWlCLENBQUE7RUFmdkJwQixNQUFNLENBaUJsQnFCLGFBQWEsR0FBRyxlQUFlLENBQUE7RUFqQm5CckIsTUFBTSxDQWtCbEIyQixtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQTtFQWxCL0IzQixNQUFNLENBbUJsQlUsZ0JBQWdCLEdBQUcsTUFBTSxDQUFBO0VBbkJiVixNQUFNLENBcUJsQnlCLGtCQUFrQixHQUFHLElBQUksQ0FBQTtFQTJPbEN4RSxlQUFlLENBQUMxRSxJQUFJLENBQUN5SCxNQUFNLENBQUM7O01DdlFQeUMsR0FBRyxnQkFBQSxZQUFBO0VBQ3RCLEVBQUEsU0FBQUEsSUFBWUMsQ0FBQyxFQUFRQyxDQUFDLEVBQVF4USxDQUFDLEVBQVE7RUFBQSxJQUFBLElBQTNCdVEsQ0FBQyxLQUFBLEtBQUEsQ0FBQSxFQUFBO0VBQURBLE1BQUFBLENBQUMsR0FBRyxHQUFHLENBQUE7RUFBQSxLQUFBO0VBQUEsSUFBQSxJQUFFQyxDQUFDLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBREEsTUFBQUEsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtFQUFBLEtBQUE7RUFBQSxJQUFBLElBQUV4USxDQUFDLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBREEsTUFBQUEsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtFQUFBLEtBQUE7TUFDbkMsSUFBSSxDQUFDdVEsQ0FBQyxHQUFHQSxDQUFDLENBQUE7TUFDVixJQUFJLENBQUNDLENBQUMsR0FBR0EsQ0FBQyxDQUFBO01BQ1YsSUFBSSxDQUFDeFEsQ0FBQyxHQUFHQSxDQUFDLENBQUE7RUFDWixHQUFBO0VBQUMsRUFBQSxJQUFBNEgsTUFBQSxHQUFBMEksR0FBQSxDQUFBeEwsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBRUQ2SSxLQUFLLEdBQUwsU0FBQUEsUUFBUTtNQUNOLElBQUksQ0FBQ0YsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtNQUNaLElBQUksQ0FBQ0MsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtNQUNaLElBQUksQ0FBQ3hRLENBQUMsR0FBRyxHQUFHLENBQUE7S0FDYixDQUFBO0VBQUEsRUFBQSxPQUFBc1EsR0FBQSxDQUFBO0VBQUEsQ0FBQSxFQUFBOztFQ1JIO0VBQ0E7RUFDQTtBQUZBLE1BR3FCSSxJQUFJLGdCQUFBLFlBQUE7RUFDdkI7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0UsRUFBQSxTQUFBQSxLQUFZM1EsQ0FBQyxFQUFFQyxDQUFDLEVBQUVvTSxNQUFNLEVBQUU7RUFBQSxJQUFBLElBQUEsQ0ExQjFCeEgsT0FBTyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUEsSUFBQSxJQUFBLENBTVA3RSxDQUFDLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQSxJQUFBLElBQUEsQ0FNREMsQ0FBQyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUEsSUFBQSxJQUFBLENBTURvTSxNQUFNLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFTSixJQUFBLElBQUk5RCxJQUFJLENBQUMxRCxPQUFPLENBQUM3RSxDQUFDLENBQUMsRUFBRTtRQUNuQixJQUFJLENBQUM2RSxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQzdFLENBQUMsR0FBR0EsQ0FBQyxDQUFBO0VBQ1osS0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDNkUsT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUNwQixJQUFJLENBQUM3RSxDQUFDLEdBQUd1SSxJQUFJLENBQUM5RCxTQUFTLENBQUN6RSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7RUFDN0IsTUFBQSxJQUFJLENBQUNDLENBQUMsR0FBR3NJLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3hFLENBQUMsRUFBRSxJQUFJLENBQUNELENBQUMsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQ3FNLE1BQU0sR0FBRzlELElBQUksQ0FBQzlELFNBQVMsQ0FBQzRILE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtFQUM3QyxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBSkUsRUFBQSxJQUFBeEUsTUFBQSxHQUFBOEksSUFBQSxDQUFBNUwsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBS0ErSSxRQUFRLEdBQVIsU0FBQUEsUUFBQUEsQ0FBU3pFLEtBQUssRUFBVTtFQUFBLElBQUEsSUFBZkEsS0FBSyxLQUFBLEtBQUEsQ0FBQSxFQUFBO0VBQUxBLE1BQUFBLEtBQUssR0FBRyxLQUFLLENBQUE7RUFBQSxLQUFBO01BQ3BCLElBQUksSUFBSSxDQUFDdEgsT0FBTyxFQUFFO0VBQ2hCLE1BQUEsT0FBTzBELElBQUksQ0FBQzdDLGdCQUFnQixDQUFDLElBQUksQ0FBQzFGLENBQUMsQ0FBQyxDQUFBO0VBQ3RDLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQ3FNLE1BQU0sRUFBRTtFQUNoQixRQUFBLE9BQU9ULFFBQVEsQ0FBQ00sVUFBVSxDQUFDLElBQUksQ0FBQ2xNLENBQUMsRUFBRSxJQUFJLENBQUNDLENBQUMsRUFBRWtNLEtBQUssQ0FBQyxDQUFBO0VBQ25ELE9BQUMsTUFBTTtFQUNMLFFBQUEsT0FBT1AsUUFBUSxDQUFDUSxjQUFjLENBQUMsSUFBSSxDQUFDcE0sQ0FBQyxFQUFFLElBQUksQ0FBQ0MsQ0FBQyxFQUFFa00sS0FBSyxDQUFDLENBQUE7RUFDdkQsT0FBQTtFQUNGLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTkU7SUFBQXdFLElBQUEsQ0FPT0UsWUFBWSxHQUFuQixTQUFBQSxZQUFBQSxDQUFvQjdRLENBQUMsRUFBRUMsQ0FBQyxFQUFFVixDQUFDLEVBQUU7TUFDM0IsSUFBSVMsQ0FBQyxZQUFZMlEsSUFBSSxFQUFFO0VBQ3JCLE1BQUEsT0FBTzNRLENBQUMsQ0FBQTtFQUNWLEtBQUMsTUFBTTtRQUNMLElBQUlDLENBQUMsS0FBSzJFLFNBQVMsRUFBRTtFQUNuQixRQUFBLE9BQU8sSUFBSStMLElBQUksQ0FBQzNRLENBQUMsQ0FBQyxDQUFBO0VBQ3BCLE9BQUMsTUFBTTtVQUNMLElBQUlULENBQUMsS0FBS3FGLFNBQVMsRUFBRSxPQUFPLElBQUkrTCxJQUFJLENBQUMzUSxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLEtBQ3RDLE9BQU8sSUFBSTBRLElBQUksQ0FBQzNRLENBQUMsRUFBRUMsQ0FBQyxFQUFFVixDQUFDLENBQUMsQ0FBQTtFQUMvQixPQUFBO0VBQ0YsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFvUixFQUFBQSxJQUFBLENBS09HLFlBQVksR0FBbkIsU0FBQUEsWUFBQUEsQ0FBb0JDLEdBQUcsRUFBRTtNQUN2QixPQUFPQSxHQUFHLFlBQVlKLElBQUksR0FBR0ksR0FBRyxDQUFDSCxRQUFRLEVBQUUsR0FBR0csR0FBRyxDQUFBO0tBQ2xELENBQUE7RUFBQSxFQUFBLE9BQUFKLElBQUEsQ0FBQTtFQUFBLENBQUE7O0FDM0ZILGlCQUFlO0VBQ2JLLEVBQUFBLE9BQU8sRUFBQUEsU0FBQUEsT0FBQUEsQ0FBQzdNLE1BQU0sRUFBRXhCLEdBQUcsRUFBRTtFQUNuQixJQUFBLElBQUksQ0FBQ3dCLE1BQU0sRUFBRSxPQUFPLEtBQUssQ0FBQTtFQUN6QixJQUFBLE9BQU9BLE1BQU0sQ0FBQ3hCLEdBQUcsQ0FBQyxLQUFLaUMsU0FBUyxDQUFBO0VBQ2hDO0tBQ0Q7RUFFRDtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VxTSxFQUFBQSxPQUFPLEVBQUFBLFNBQUFBLE9BQUFBLENBQUM5TSxNQUFNLEVBQUUrTSxLQUFLLEVBQUU7RUFDckIsSUFBQSxLQUFLLElBQUlDLElBQUksSUFBSUQsS0FBSyxFQUFFO0VBQ3RCLE1BQUEsSUFBSS9NLE1BQU0sQ0FBQzBDLGNBQWMsQ0FBQ3NLLElBQUksQ0FBQyxFQUFFO0VBQy9CaE4sUUFBQUEsTUFBTSxDQUFDZ04sSUFBSSxDQUFDLEdBQUdSLElBQUksQ0FBQ0csWUFBWSxDQUFDSSxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUE7RUFDL0MsT0FBQTtFQUNGLEtBQUE7RUFFQSxJQUFBLE9BQU9oTixNQUFNLENBQUE7S0FDZDtFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRWlOLEVBQUFBLFlBQVksRUFBQUEsU0FBQUEsWUFBQUEsQ0FBQzlELFFBQVEsRUFBRStELElBQUksRUFBUztFQUFBLElBQUEsSUFBYkEsSUFBSSxLQUFBLEtBQUEsQ0FBQSxFQUFBO0VBQUpBLE1BQUFBLElBQUksR0FBRyxJQUFJLENBQUE7RUFBQSxLQUFBO01BQ2hDLElBQUksQ0FBQ0EsSUFBSSxFQUFFLE9BQUE7RUFFWCxJQUFBLElBQUksSUFBSSxDQUFDTCxPQUFPLENBQUNLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRS9ELFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsR0FBR2lQLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUNyRCxJQUFBLElBQUksSUFBSSxDQUFDTCxPQUFPLENBQUNLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRS9ELFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsR0FBR2dQLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUVyRCxJQUFBLElBQUksSUFBSSxDQUFDTCxPQUFPLENBQUNLLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRS9ELFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDdEwsQ0FBQyxHQUFHaVAsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ3ZELElBQUEsSUFBSSxJQUFJLENBQUNMLE9BQU8sQ0FBQ0ssSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFL0QsUUFBUSxDQUFDSSxDQUFDLENBQUNyTCxDQUFDLEdBQUdnUCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7RUFFdkQsSUFBQSxJQUFJLElBQUksQ0FBQ0wsT0FBTyxDQUFDSyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUvRCxRQUFRLENBQUN0TixDQUFDLENBQUNvQyxDQUFDLEdBQUdpUCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDdkQsSUFBQSxJQUFJLElBQUksQ0FBQ0wsT0FBTyxDQUFDSyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUvRCxRQUFRLENBQUN0TixDQUFDLENBQUNxQyxDQUFDLEdBQUdnUCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7RUFFdkQsSUFBQSxJQUFJLElBQUksQ0FBQ0wsT0FBTyxDQUFDSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUvRCxRQUFRLENBQUN0RixDQUFDLENBQUN5RixJQUFJLENBQUM0RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtFQUN2RCxJQUFBLElBQUksSUFBSSxDQUFDTCxPQUFPLENBQUNLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRS9ELFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDRCxJQUFJLENBQUM0RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtFQUN2RCxJQUFBLElBQUksSUFBSSxDQUFDTCxPQUFPLENBQUNLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRS9ELFFBQVEsQ0FBQ3ROLENBQUMsQ0FBQ3lOLElBQUksQ0FBQzRELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0VBRXZELElBQUEsSUFBSSxJQUFJLENBQUNMLE9BQU8sQ0FBQ0ssSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFL0QsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDeUYsSUFBSSxDQUFDNEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7RUFDckUsSUFBQSxJQUFJLElBQUksQ0FBQ0wsT0FBTyxDQUFDSyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUvRCxRQUFRLENBQUNJLENBQUMsQ0FBQ0QsSUFBSSxDQUFDNEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7RUFDckUsSUFBQSxJQUFJLElBQUksQ0FBQ0wsT0FBTyxDQUFDSyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUvRCxRQUFRLENBQUN0TixDQUFDLENBQUN5TixJQUFJLENBQUM0RCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtFQUMzRSxHQUFBO0VBQ0YsQ0FBQzs7QUM5REQsYUFBZTtJQUNiQyxVQUFVLEVBQUEsU0FBQUEsVUFBQzVNLENBQUFBLEtBQUssRUFBRTtFQUNoQixJQUFBLE9BQU9BLEtBQUssQ0FBQTtLQUNiO0lBRUQ2TSxVQUFVLEVBQUEsU0FBQUEsVUFBQzdNLENBQUFBLEtBQUssRUFBRTtFQUNoQixJQUFBLE9BQU9sRixJQUFJLENBQUNxTixHQUFHLENBQUNuSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDMUI7SUFFRDhNLFdBQVcsRUFBQSxTQUFBQSxXQUFDOU0sQ0FBQUEsS0FBSyxFQUFFO0VBQ2pCLElBQUEsT0FBTyxFQUFFbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDbkksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUNyQztJQUVEK00sYUFBYSxFQUFBLFNBQUFBLGFBQUMvTSxDQUFBQSxLQUFLLEVBQUU7RUFDbkIsSUFBQSxJQUFJLENBQUNBLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLE9BQU8sR0FBRyxHQUFHbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDbkksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO01BRXZELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ0EsS0FBSyxJQUFJLENBQUMsSUFBSUEsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0tBQ3pDO0lBRURnTixXQUFXLEVBQUEsU0FBQUEsV0FBQ2hOLENBQUFBLEtBQUssRUFBRTtFQUNqQixJQUFBLE9BQU9sRixJQUFJLENBQUNxTixHQUFHLENBQUNuSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDMUI7SUFFRGlOLFlBQVksRUFBQSxTQUFBQSxZQUFDak4sQ0FBQUEsS0FBSyxFQUFFO01BQ2xCLE9BQU9sRixJQUFJLENBQUNxTixHQUFHLENBQUNuSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUNsQztJQUVEa04sY0FBYyxFQUFBLFNBQUFBLGNBQUNsTixDQUFBQSxLQUFLLEVBQUU7RUFDcEIsSUFBQSxJQUFJLENBQUNBLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLE9BQU8sR0FBRyxHQUFHbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDbkksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBRXZELElBQUEsT0FBTyxHQUFHLElBQUlsRixJQUFJLENBQUNxTixHQUFHLENBQUNuSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0tBQzFDO0lBRURtTixXQUFXLEVBQUEsU0FBQUEsV0FBQ25OLENBQUFBLEtBQUssRUFBRTtFQUNqQixJQUFBLE9BQU9sRixJQUFJLENBQUNxTixHQUFHLENBQUNuSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDMUI7SUFFRG9OLFlBQVksRUFBQSxTQUFBQSxZQUFDcE4sQ0FBQUEsS0FBSyxFQUFFO0VBQ2xCLElBQUEsT0FBTyxFQUFFbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDbkksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUNyQztJQUVEcU4sY0FBYyxFQUFBLFNBQUFBLGNBQUNyTixDQUFBQSxLQUFLLEVBQUU7RUFDcEIsSUFBQSxJQUFJLENBQUNBLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLE9BQU8sR0FBRyxHQUFHbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDbkksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBRXZELElBQUEsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxLQUFLLElBQUksQ0FBQyxJQUFJbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDbkksS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0tBQ3REO0lBRURzTixVQUFVLEVBQUEsU0FBQUEsVUFBQ3ROLENBQUFBLEtBQUssRUFBRTtFQUNoQixJQUFBLE9BQU8sQ0FBQ2xGLElBQUksQ0FBQ0MsR0FBRyxDQUFDaUYsS0FBSyxHQUFHa0gsUUFBUSxDQUFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDNUM7SUFFRG1HLFdBQVcsRUFBQSxTQUFBQSxXQUFDdk4sQ0FBQUEsS0FBSyxFQUFFO01BQ2pCLE9BQU9sRixJQUFJLENBQUNHLEdBQUcsQ0FBQytFLEtBQUssR0FBR2tILFFBQVEsQ0FBQ0UsSUFBSSxDQUFDLENBQUE7S0FDdkM7SUFFRG9HLGFBQWEsRUFBQSxTQUFBQSxhQUFDeE4sQ0FBQUEsS0FBSyxFQUFFO0VBQ25CLElBQUEsT0FBTyxDQUFDLEdBQUcsSUFBSWxGLElBQUksQ0FBQ0MsR0FBRyxDQUFDRCxJQUFJLENBQUNpTSxFQUFFLEdBQUcvRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUM5QztJQUVEeU4sVUFBVSxFQUFBLFNBQUFBLFVBQUN6TixDQUFBQSxLQUFLLEVBQUU7RUFDaEIsSUFBQSxPQUFPQSxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR2xGLElBQUksQ0FBQ3FOLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJbkksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDdkQ7SUFFRDBOLFdBQVcsRUFBQSxTQUFBQSxXQUFDMU4sQ0FBQUEsS0FBSyxFQUFFO0VBQ2pCLElBQUEsT0FBT0EsS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQ2xGLElBQUksQ0FBQ3FOLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUduSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDdkQ7SUFFRDJOLGFBQWEsRUFBQSxTQUFBQSxhQUFDM04sQ0FBQUEsS0FBSyxFQUFFO0VBQ25CLElBQUEsSUFBSUEsS0FBSyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtFQUV6QixJQUFBLElBQUlBLEtBQUssS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7TUFFekIsSUFBSSxDQUFDQSxLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxPQUFPLEdBQUcsR0FBR2xGLElBQUksQ0FBQ3FOLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJbkksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFFbEUsSUFBQSxPQUFPLEdBQUcsSUFBSSxDQUFDbEYsSUFBSSxDQUFDcU4sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFbkksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7S0FDL0M7SUFFRDROLFVBQVUsRUFBQSxTQUFBQSxVQUFDNU4sQ0FBQUEsS0FBSyxFQUFFO0VBQ2hCLElBQUEsT0FBTyxFQUFFbEYsSUFBSSxDQUFDK1MsSUFBSSxDQUFDLENBQUMsR0FBRzdOLEtBQUssR0FBR0EsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7S0FDM0M7SUFFRDhOLFdBQVcsRUFBQSxTQUFBQSxXQUFDOU4sQ0FBQUEsS0FBSyxFQUFFO0VBQ2pCLElBQUEsT0FBT2xGLElBQUksQ0FBQytTLElBQUksQ0FBQyxDQUFDLEdBQUcvUyxJQUFJLENBQUNxTixHQUFHLENBQUNuSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDN0M7SUFFRCtOLGFBQWEsRUFBQSxTQUFBQSxhQUFDL04sQ0FBQUEsS0FBSyxFQUFFO01BQ25CLElBQUksQ0FBQ0EsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSWxGLElBQUksQ0FBQytTLElBQUksQ0FBQyxDQUFDLEdBQUc3TixLQUFLLEdBQUdBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0VBQ3hFLElBQUEsT0FBTyxHQUFHLElBQUlsRixJQUFJLENBQUMrUyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM3TixLQUFLLElBQUksQ0FBQyxJQUFJQSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUN2RDtJQUVEZ08sVUFBVSxFQUFBLFNBQUFBLFVBQUNoTyxDQUFBQSxLQUFLLEVBQUU7TUFDaEIsSUFBSWhGLENBQUMsR0FBRyxPQUFPLENBQUE7RUFDZixJQUFBLE9BQU9nRixLQUFLLEdBQUdBLEtBQUssSUFBSSxDQUFDaEYsQ0FBQyxHQUFHLENBQUMsSUFBSWdGLEtBQUssR0FBR2hGLENBQUMsQ0FBQyxDQUFBO0tBQzdDO0lBRURpVCxXQUFXLEVBQUEsU0FBQUEsV0FBQ2pPLENBQUFBLEtBQUssRUFBRTtNQUNqQixJQUFJaEYsQ0FBQyxHQUFHLE9BQU8sQ0FBQTtFQUNmLElBQUEsT0FBTyxDQUFDZ0YsS0FBSyxHQUFHQSxLQUFLLEdBQUcsQ0FBQyxJQUFJQSxLQUFLLElBQUksQ0FBQ2hGLENBQUMsR0FBRyxDQUFDLElBQUlnRixLQUFLLEdBQUdoRixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDL0Q7SUFFRGtULGFBQWEsRUFBQSxTQUFBQSxhQUFDbE8sQ0FBQUEsS0FBSyxFQUFFO01BQ25CLElBQUloRixDQUFDLEdBQUcsT0FBTyxDQUFBO01BQ2YsSUFBSSxDQUFDZ0YsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsT0FBTyxHQUFHLElBQUlBLEtBQUssR0FBR0EsS0FBSyxJQUFJLENBQUMsQ0FBQ2hGLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJZ0YsS0FBSyxHQUFHaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQTtNQUN2RixPQUFPLEdBQUcsSUFBSSxDQUFDZ0YsS0FBSyxJQUFJLENBQUMsSUFBSUEsS0FBSyxJQUFJLENBQUMsQ0FBQ2hGLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJZ0YsS0FBSyxHQUFHaEYsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7S0FDM0U7SUFFRG1ULFNBQVMsRUFBQSxTQUFBQSxTQUFDQyxDQUFBQSxJQUFJLEVBQUU7RUFDZCxJQUFBLElBQUksT0FBT0EsSUFBSSxLQUFLLFVBQVUsRUFBRSxPQUFPQSxJQUFJLENBQUMsS0FDdkMsT0FBTyxJQUFJLENBQUNBLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQ3hCLFVBQVUsQ0FBQTtFQUMzQyxHQUFBO0VBQ0YsQ0FBQzs7QUNoSHVDLE1BRW5CeUIsUUFBUSxnQkFBQSxZQUFBO0VBQzNCOztFQUdBOztFQUdBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDRSxFQUFBLFNBQUFBLFFBQVkzUSxDQUFBQSxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUFBLElBQUEsSUFBQSxDQVZsQkQsQ0FBQyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUEsSUFBQSxJQUFBLENBR0RDLENBQUMsR0FBQSxLQUFBLENBQUEsQ0FBQTtFQVFDLElBQUEsSUFBSSxDQUFDRCxDQUFDLEdBQUdBLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDZixJQUFBLElBQUksQ0FBQ0MsQ0FBQyxHQUFHQSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ2pCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBTEUsRUFBQSxJQUFBd0YsTUFBQSxHQUFBa0wsUUFBQSxDQUFBaE8sU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBTUFrSSxHQUFHLEdBQUgsU0FBQUEsSUFBSTNOLENBQUMsRUFBRUMsQ0FBQyxFQUFFO01BQ1IsSUFBSSxDQUFDRCxDQUFDLEdBQUdBLENBQUMsQ0FBQTtNQUNWLElBQUksQ0FBQ0MsQ0FBQyxHQUFHQSxDQUFDLENBQUE7RUFDVixJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQXdGLEVBQUFBLE1BQUEsQ0FLQW1MLElBQUksR0FBSixTQUFBQSxJQUFBQSxDQUFLNVEsQ0FBQyxFQUFFO01BQ04sSUFBSSxDQUFDQSxDQUFDLEdBQUdBLENBQUMsQ0FBQTtFQUNWLElBQUEsT0FBTyxJQUFJLENBQUE7RUFDYixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0EsTUFKRTtFQUFBeUYsRUFBQUEsTUFBQSxDQUtBb0wsSUFBSSxHQUFKLFNBQUFBLElBQUFBLENBQUs1USxDQUFDLEVBQUU7TUFDTixJQUFJLENBQUNBLENBQUMsR0FBR0EsQ0FBQyxDQUFBO0VBQ1YsSUFBQSxPQUFPLElBQUksQ0FBQTtFQUNiLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBd0YsRUFBQUEsTUFBQSxDQUlBcUwsV0FBVyxHQUFYLFNBQUFBLGNBQWM7TUFDWixJQUFJLElBQUksQ0FBQzlRLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTzVDLElBQUksQ0FBQzJULEtBQUssQ0FBQyxJQUFJLENBQUM5USxDQUFDLEVBQUUsSUFBSSxDQUFDRCxDQUFDLENBQUMsQ0FBQyxLQUMvQyxJQUFJLElBQUksQ0FBQ0MsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPdUosUUFBUSxDQUFDRSxJQUFJLENBQUMsS0FDckMsSUFBSSxJQUFJLENBQUN6SixDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQ3VKLFFBQVEsQ0FBQ0UsSUFBSSxDQUFBO0VBQzVDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFqRSxFQUFBQSxNQUFBLENBS0E0RixJQUFJLEdBQUosU0FBQUEsSUFBQUEsQ0FBS0MsQ0FBQyxFQUFFO0VBQ04sSUFBQSxJQUFJLENBQUN0TCxDQUFDLEdBQUdzTCxDQUFDLENBQUN0TCxDQUFDLENBQUE7RUFDWixJQUFBLElBQUksQ0FBQ0MsQ0FBQyxHQUFHcUwsQ0FBQyxDQUFDckwsQ0FBQyxDQUFBO0VBRVosSUFBQSxPQUFPLElBQUksQ0FBQTtFQUNiLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7SUFBQXdGLE1BQUEsQ0FNQXFCLEdBQUcsR0FBSCxTQUFBQSxJQUFJd0UsQ0FBQyxFQUFFMEYsQ0FBQyxFQUFFO01BQ1IsSUFBSUEsQ0FBQyxLQUFLeE8sU0FBUyxFQUFFO0VBQ25CLE1BQUEsT0FBTyxJQUFJLENBQUN5TyxVQUFVLENBQUMzRixDQUFDLEVBQUUwRixDQUFDLENBQUMsQ0FBQTtFQUM5QixLQUFBO0VBRUEsSUFBQSxJQUFJLENBQUNoUixDQUFDLElBQUlzTCxDQUFDLENBQUN0TCxDQUFDLENBQUE7RUFDYixJQUFBLElBQUksQ0FBQ0MsQ0FBQyxJQUFJcUwsQ0FBQyxDQUFDckwsQ0FBQyxDQUFBO0VBRWIsSUFBQSxPQUFPLElBQUksQ0FBQTtFQUNiLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7SUFBQXdGLE1BQUEsQ0FNQXlMLEtBQUssR0FBTCxTQUFBQSxNQUFNdFQsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7TUFDVixJQUFJLENBQUNtQyxDQUFDLElBQUlwQyxDQUFDLENBQUE7TUFDWCxJQUFJLENBQUNxQyxDQUFDLElBQUlwQyxDQUFDLENBQUE7RUFFWCxJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBNEgsTUFBQSxDQU1Bd0wsVUFBVSxHQUFWLFNBQUFBLFdBQVdyVCxDQUFDLEVBQUVDLENBQUMsRUFBRTtNQUNmLElBQUksQ0FBQ21DLENBQUMsR0FBR3BDLENBQUMsQ0FBQ29DLENBQUMsR0FBR25DLENBQUMsQ0FBQ21DLENBQUMsQ0FBQTtNQUNsQixJQUFJLENBQUNDLENBQUMsR0FBR3JDLENBQUMsQ0FBQ3FDLENBQUMsR0FBR3BDLENBQUMsQ0FBQ29DLENBQUMsQ0FBQTtFQUVsQixJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBd0YsTUFBQSxDQU1BMEwsR0FBRyxHQUFILFNBQUFBLElBQUk3RixDQUFDLEVBQUUwRixDQUFDLEVBQUU7TUFDUixJQUFJQSxDQUFDLEtBQUt4TyxTQUFTLEVBQUU7RUFDbkIsTUFBQSxPQUFPLElBQUksQ0FBQzRPLFVBQVUsQ0FBQzlGLENBQUMsRUFBRTBGLENBQUMsQ0FBQyxDQUFBO0VBQzlCLEtBQUE7RUFFQSxJQUFBLElBQUksQ0FBQ2hSLENBQUMsSUFBSXNMLENBQUMsQ0FBQ3RMLENBQUMsQ0FBQTtFQUNiLElBQUEsSUFBSSxDQUFDQyxDQUFDLElBQUlxTCxDQUFDLENBQUNyTCxDQUFDLENBQUE7RUFFYixJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBd0YsTUFBQSxDQU1BMkwsVUFBVSxHQUFWLFNBQUFBLFdBQVd4VCxDQUFDLEVBQUVDLENBQUMsRUFBRTtNQUNmLElBQUksQ0FBQ21DLENBQUMsR0FBR3BDLENBQUMsQ0FBQ29DLENBQUMsR0FBR25DLENBQUMsQ0FBQ21DLENBQUMsQ0FBQTtNQUNsQixJQUFJLENBQUNDLENBQUMsR0FBR3JDLENBQUMsQ0FBQ3FDLENBQUMsR0FBR3BDLENBQUMsQ0FBQ29DLENBQUMsQ0FBQTtFQUVsQixJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQXdGLEVBQUFBLE1BQUEsQ0FLQTRMLFlBQVksR0FBWixTQUFBQSxZQUFBQSxDQUFhL1QsQ0FBQyxFQUFFO01BQ2QsSUFBSUEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNYLElBQUksQ0FBQzBDLENBQUMsSUFBSTFDLENBQUMsQ0FBQTtRQUNYLElBQUksQ0FBQzJDLENBQUMsSUFBSTNDLENBQUMsQ0FBQTtFQUNiLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBSSxDQUFDcVEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUNoQixLQUFBO0VBRUEsSUFBQSxPQUFPLElBQUksQ0FBQTtFQUNiLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFsSSxFQUFBQSxNQUFBLENBS0E4RixjQUFjLEdBQWQsU0FBQUEsY0FBQUEsQ0FBZWpPLENBQUMsRUFBRTtNQUNoQixJQUFJLENBQUMwQyxDQUFDLElBQUkxQyxDQUFDLENBQUE7TUFDWCxJQUFJLENBQUMyQyxDQUFDLElBQUkzQyxDQUFDLENBQUE7RUFFWCxJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFtSSxFQUFBQSxNQUFBLENBSUE2TCxNQUFNLEdBQU4sU0FBQUEsU0FBUztFQUNQLElBQUEsT0FBTyxJQUFJLENBQUMvRixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNoQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0EsTUFKRTtFQUFBOUYsRUFBQUEsTUFBQSxDQUtBOEwsR0FBRyxHQUFILFNBQUFBLEdBQUFBLENBQUlqRyxDQUFDLEVBQUU7RUFDTCxJQUFBLE9BQU8sSUFBSSxDQUFDdEwsQ0FBQyxHQUFHc0wsQ0FBQyxDQUFDdEwsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsQ0FBQyxHQUFHcUwsQ0FBQyxDQUFDckwsQ0FBQyxDQUFBO0VBQ3BDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBd0YsRUFBQUEsTUFBQSxDQUlBK0wsUUFBUSxHQUFSLFNBQUFBLFdBQVc7RUFDVCxJQUFBLE9BQU8sSUFBSSxDQUFDeFIsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsQ0FBQyxDQUFBO0VBQzFDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBd0YsRUFBQUEsTUFBQSxDQUlBOUksTUFBTSxHQUFOLFNBQUFBLFNBQVM7RUFDUCxJQUFBLE9BQU9TLElBQUksQ0FBQytTLElBQUksQ0FBQyxJQUFJLENBQUNuUSxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEdBQUcsSUFBSSxDQUFDQyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLENBQUMsQ0FBQTtFQUNyRCxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQXdGLEVBQUFBLE1BQUEsQ0FJQWdNLFNBQVMsR0FBVCxTQUFBQSxZQUFZO01BQ1YsT0FBTyxJQUFJLENBQUNKLFlBQVksQ0FBQyxJQUFJLENBQUMxVSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0VBQ3pDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUE4SSxFQUFBQSxNQUFBLENBS0FpTSxVQUFVLEdBQVYsU0FBQUEsVUFBQUEsQ0FBV3BHLENBQUMsRUFBRTtNQUNaLE9BQU9sTyxJQUFJLENBQUMrUyxJQUFJLENBQUMsSUFBSSxDQUFDd0IsaUJBQWlCLENBQUNyRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQzdDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUE3RixFQUFBQSxNQUFBLENBS0F0RixNQUFNLEdBQU4sU0FBQUEsTUFBQUEsQ0FBT3lSLEdBQUcsRUFBRTtFQUNWLElBQUEsSUFBTTVSLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsQ0FBQTtFQUNoQixJQUFBLElBQU1DLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsQ0FBQTtFQUVoQixJQUFBLElBQUksQ0FBQ0QsQ0FBQyxHQUFHQSxDQUFDLEdBQUc1QyxJQUFJLENBQUNDLEdBQUcsQ0FBQ3VVLEdBQUcsQ0FBQyxHQUFHM1IsQ0FBQyxHQUFHN0MsSUFBSSxDQUFDRyxHQUFHLENBQUNxVSxHQUFHLENBQUMsQ0FBQTtNQUM5QyxJQUFJLENBQUMzUixDQUFDLEdBQUcsQ0FBQ0QsQ0FBQyxHQUFHNUMsSUFBSSxDQUFDRyxHQUFHLENBQUNxVSxHQUFHLENBQUMsR0FBRzNSLENBQUMsR0FBRzdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDdVUsR0FBRyxDQUFDLENBQUE7RUFFL0MsSUFBQSxPQUFPLElBQUksQ0FBQTtFQUNiLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFuTSxFQUFBQSxNQUFBLENBS0FrTSxpQkFBaUIsR0FBakIsU0FBQUEsaUJBQUFBLENBQWtCckcsQ0FBQyxFQUFFO01BQ25CLElBQU11RyxFQUFFLEdBQUcsSUFBSSxDQUFDN1IsQ0FBQyxHQUFHc0wsQ0FBQyxDQUFDdEwsQ0FBQyxDQUFBO01BQ3ZCLElBQU04UixFQUFFLEdBQUcsSUFBSSxDQUFDN1IsQ0FBQyxHQUFHcUwsQ0FBQyxDQUFDckwsQ0FBQyxDQUFBO0VBRXZCLElBQUEsT0FBTzRSLEVBQUUsR0FBR0EsRUFBRSxHQUFHQyxFQUFFLEdBQUdBLEVBQUUsQ0FBQTtFQUMxQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0lBQUFyTSxNQUFBLENBTUFzTSxJQUFJLEdBQUosU0FBQUEsS0FBS3pHLENBQUMsRUFBRTBHLEtBQUssRUFBRTtFQUNiLElBQUEsSUFBSSxDQUFDaFMsQ0FBQyxJQUFJLENBQUNzTCxDQUFDLENBQUN0TCxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLElBQUlnUyxLQUFLLENBQUE7RUFDaEMsSUFBQSxJQUFJLENBQUMvUixDQUFDLElBQUksQ0FBQ3FMLENBQUMsQ0FBQ3JMLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsSUFBSStSLEtBQUssQ0FBQTtFQUVoQyxJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQXZNLEVBQUFBLE1BQUEsQ0FLQXdNLE1BQU0sR0FBTixTQUFBQSxNQUFBQSxDQUFPM0csQ0FBQyxFQUFFO0VBQ1IsSUFBQSxPQUFPQSxDQUFDLENBQUN0TCxDQUFDLEtBQUssSUFBSSxDQUFDQSxDQUFDLElBQUlzTCxDQUFDLENBQUNyTCxDQUFDLEtBQUssSUFBSSxDQUFDQSxDQUFDLENBQUE7RUFDekMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUF3RixFQUFBQSxNQUFBLENBSUFnRyxLQUFLLEdBQUwsU0FBQUEsUUFBUTtNQUNOLElBQUksQ0FBQ3pMLENBQUMsR0FBRyxHQUFHLENBQUE7TUFDWixJQUFJLENBQUNDLENBQUMsR0FBRyxHQUFHLENBQUE7RUFDWixJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUF3RixFQUFBQSxNQUFBLENBSUFXLEtBQUssR0FBTCxTQUFBQSxRQUFRO01BQ04sT0FBTyxJQUFJdUssUUFBUSxDQUFDLElBQUksQ0FBQzNRLENBQUMsRUFBRSxJQUFJLENBQUNDLENBQUMsQ0FBQyxDQUFBO0tBQ3BDLENBQUE7RUFBQSxFQUFBLE9BQUEwUSxRQUFBLENBQUE7RUFBQSxDQUFBOztFQ3pSSDtFQUNBO0VBQ0E7RUFDQTtBQUhBLE1BSXFCdUIsUUFBUSxnQkFBQSxZQUFBO0VBQzNCOztFQUdBOztFQUdBOztFQUdBOztFQUdBOztFQUdBOztFQUdBOztFQUdBOztFQUdBO0VBQ0Y7RUFDQTtFQUNBO0lBQ0UsU0FBQUEsUUFBQUEsQ0FBWWpELElBQUksRUFBRTtNQUFBLElBM0JsQmhRLENBQUFBLEVBQUUsR0FBRyxFQUFFLENBQUE7TUFBQSxJQUdQbU0sQ0FBQUEsR0FBRyxHQUFHLElBQUksQ0FBQTtNQUFBLElBR1YrRyxDQUFBQSxJQUFJLEdBQUcsSUFBSSxDQUFBO01BQUEsSUFHWDFLLENBQUFBLFVBQVUsR0FBRyxJQUFJLENBQUE7TUFBQSxJQUdqQjdCLENBQUFBLENBQUMsR0FBRyxJQUFJLENBQUE7TUFBQSxJQUdSMEYsQ0FBQUEsQ0FBQyxHQUFHLElBQUksQ0FBQTtNQUFBLElBR1IxTixDQUFBQSxDQUFDLEdBQUcsSUFBSSxDQUFBO01BQUEsSUFHUndVLENBQUFBLEdBQUcsR0FBRyxJQUFJLENBQUE7TUFPUixJQUFJLENBQUMxSyxJQUFJLEdBQUcsVUFBVSxDQUFBO01BQ3RCLElBQUksQ0FBQ3pJLEVBQUUsR0FBRzBGLElBQUksQ0FBQzFGLEVBQUUsQ0FBQyxJQUFJLENBQUN5SSxJQUFJLENBQUMsQ0FBQTtFQUM1QixJQUFBLElBQUksQ0FBQzBELEdBQUcsR0FBRyxFQUFFLENBQUE7RUFDYixJQUFBLElBQUksQ0FBQytHLElBQUksR0FBRyxFQUFFLENBQUE7TUFDZCxJQUFJLENBQUMxSyxVQUFVLEdBQUcsRUFBRSxDQUFBO0VBRXBCLElBQUEsSUFBSSxDQUFDN0IsQ0FBQyxHQUFHLElBQUkrSyxRQUFRLEVBQUUsQ0FBQTtFQUN2QixJQUFBLElBQUksQ0FBQ3JGLENBQUMsR0FBRyxJQUFJcUYsUUFBUSxFQUFFLENBQUE7RUFDdkIsSUFBQSxJQUFJLENBQUMvUyxDQUFDLEdBQUcsSUFBSStTLFFBQVEsRUFBRSxDQUFBO01BQ3ZCLElBQUksQ0FBQ3ZGLEdBQUcsQ0FBQ3hGLENBQUMsR0FBRyxJQUFJK0ssUUFBUSxFQUFFLENBQUE7TUFDM0IsSUFBSSxDQUFDdkYsR0FBRyxDQUFDRSxDQUFDLEdBQUcsSUFBSXFGLFFBQVEsRUFBRSxDQUFBO01BQzNCLElBQUksQ0FBQ3ZGLEdBQUcsQ0FBQ3hOLENBQUMsR0FBRyxJQUFJK1MsUUFBUSxFQUFFLENBQUE7RUFFM0IsSUFBQSxJQUFJLENBQUN5QixHQUFHLEdBQUcsSUFBSWpFLEdBQUcsRUFBRSxDQUFBO01BQ3BCLElBQUksQ0FBQ0csS0FBSyxFQUFFLENBQUE7TUFDWlcsSUFBSSxJQUFJb0QsUUFBUSxDQUFDeEQsT0FBTyxDQUFDLElBQUksRUFBRUksSUFBSSxDQUFDLENBQUE7RUFDdEMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUhFLEVBQUEsSUFBQXhKLE1BQUEsR0FBQXlNLFFBQUEsQ0FBQXZQLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQUlBNk0sWUFBWSxHQUFaLFNBQUFBLGVBQWU7TUFDYixPQUFPbFYsSUFBSSxDQUFDMlQsS0FBSyxDQUFDLElBQUksQ0FBQ3pGLENBQUMsQ0FBQ3RMLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQ3NMLENBQUMsQ0FBQ3JMLENBQUMsQ0FBQyxHQUFHdUosUUFBUSxDQUFDSSxPQUFPLENBQUE7RUFDM0QsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFuRSxFQUFBQSxNQUFBLENBSUE2SSxLQUFLLEdBQUwsU0FBQUEsUUFBUTtNQUNOLElBQUksQ0FBQ2lFLElBQUksR0FBR2hKLFFBQVEsQ0FBQTtNQUNwQixJQUFJLENBQUNpSixHQUFHLEdBQUcsQ0FBQyxDQUFBO01BRVosSUFBSSxDQUFDQyxJQUFJLEdBQUcsS0FBSyxDQUFBO01BQ2pCLElBQUksQ0FBQ3RILEtBQUssR0FBRyxLQUFLLENBQUE7TUFDbEIsSUFBSSxDQUFDdEUsSUFBSSxHQUFHLElBQUksQ0FBQTtNQUNoQixJQUFJLENBQUM2TCxNQUFNLEdBQUcsSUFBSSxDQUFBO01BQ2xCLElBQUksQ0FBQy9GLE1BQU0sR0FBRyxJQUFJLENBQUE7RUFFbEIsSUFBQSxJQUFJLENBQUNnRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO01BQ2hCLElBQUksQ0FBQ25ILElBQUksR0FBRyxDQUFDLENBQUE7TUFDYixJQUFJLENBQUNvSCxNQUFNLEdBQUcsRUFBRSxDQUFBO01BQ2hCLElBQUksQ0FBQ1osS0FBSyxHQUFHLENBQUMsQ0FBQTtNQUNkLElBQUksQ0FBQzlSLEtBQUssR0FBRyxDQUFDLENBQUE7TUFDZCxJQUFJLENBQUMyUyxRQUFRLEdBQUcsQ0FBQyxDQUFBO01BQ2pCLElBQUksQ0FBQzFLLEtBQUssR0FBRyxJQUFJLENBQUE7TUFFakIsSUFBSSxDQUFDdkMsQ0FBQyxDQUFDK0gsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtNQUNoQixJQUFJLENBQUNyQyxDQUFDLENBQUNxQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO01BQ2hCLElBQUksQ0FBQy9QLENBQUMsQ0FBQytQLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7TUFDaEIsSUFBSSxDQUFDdkMsR0FBRyxDQUFDeEYsQ0FBQyxDQUFDK0gsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtNQUNwQixJQUFJLENBQUN2QyxHQUFHLENBQUNFLENBQUMsQ0FBQ3FDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7TUFDcEIsSUFBSSxDQUFDdkMsR0FBRyxDQUFDeE4sQ0FBQyxDQUFDK1AsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUNwQixJQUFBLElBQUksQ0FBQ21GLE1BQU0sR0FBR3BDLElBQUksQ0FBQ3hCLFVBQVUsQ0FBQTtFQUU3QixJQUFBLElBQUksQ0FBQ2tELEdBQUcsQ0FBQzlELEtBQUssRUFBRSxDQUFBO0VBQ2hCbkksSUFBQUEsSUFBSSxDQUFDMUMsV0FBVyxDQUFDLElBQUksQ0FBQzBPLElBQUksQ0FBQyxDQUFBO01BQzNCLElBQUksQ0FBQ1ksbUJBQW1CLEVBQUUsQ0FBQTtFQUUxQixJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7SUFBQXROLE1BQUEsQ0FLQW1CLE1BQU0sR0FBTixTQUFBQSxPQUFPbUUsSUFBSSxFQUFFNUgsS0FBSyxFQUFFO0VBQ2xCLElBQUEsSUFBSSxDQUFDLElBQUksQ0FBQ2dJLEtBQUssRUFBRTtRQUNmLElBQUksQ0FBQ3FILEdBQUcsSUFBSXpILElBQUksQ0FBQTtFQUNoQixNQUFBLElBQUksQ0FBQ2lJLGVBQWUsQ0FBQ2pJLElBQUksRUFBRTVILEtBQUssQ0FBQyxDQUFBO0VBQ25DLEtBQUE7RUFFQSxJQUFBLElBQUksSUFBSSxDQUFDcVAsR0FBRyxHQUFHLElBQUksQ0FBQ0QsSUFBSSxFQUFFO0VBQ3hCLE1BQUEsSUFBTXJTLEtBQUssR0FBRyxJQUFJLENBQUM0UyxNQUFNLENBQUMsSUFBSSxDQUFDTixHQUFHLEdBQUcsSUFBSSxDQUFDRCxJQUFJLENBQUMsQ0FBQTtFQUMvQyxNQUFBLElBQUksQ0FBQ0ksTUFBTSxHQUFHdlYsSUFBSSxDQUFDNlYsR0FBRyxDQUFDLENBQUMsR0FBRy9TLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUN0QyxLQUFDLE1BQU07UUFDTCxJQUFJLENBQUNvRSxPQUFPLEVBQUUsQ0FBQTtFQUNoQixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7SUFBQW1CLE1BQUEsQ0FLQXVOLGVBQWUsR0FBZixTQUFBQSxnQkFBZ0JqSSxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7RUFDM0IsSUFBQSxJQUFNeEcsTUFBTSxHQUFHLElBQUksQ0FBQzhLLFVBQVUsQ0FBQzlLLE1BQU0sQ0FBQTtFQUNyQyxJQUFBLElBQUlFLENBQUMsQ0FBQTtNQUVMLEtBQUtBLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsTUFBTSxFQUFFRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixJQUFJLENBQUM0SyxVQUFVLENBQUM1SyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM0SyxVQUFVLENBQUM1SyxDQUFDLENBQUMsQ0FBQ3FXLGNBQWMsQ0FBQyxJQUFJLEVBQUVuSSxJQUFJLEVBQUU1SCxLQUFLLENBQUMsQ0FBQTtFQUM1RSxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFzQyxFQUFBQSxNQUFBLENBSUEwTixZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYUMsU0FBUyxFQUFFO0VBQ3RCLElBQUEsSUFBSSxDQUFDM0wsVUFBVSxDQUFDcEUsSUFBSSxDQUFDK1AsU0FBUyxDQUFDLENBQUE7RUFFL0IsSUFBQSxJQUFJQSxTQUFTLENBQUMzTyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUyTyxTQUFTLENBQUNDLE9BQU8sQ0FBQ2hRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUNyRStQLElBQUFBLFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQzVCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBN04sRUFBQUEsTUFBQSxDQUlBOE4sYUFBYSxHQUFiLFNBQUFBLGFBQUFBLENBQWM5TCxVQUFVLEVBQUU7RUFDeEIsSUFBQSxJQUFNOUssTUFBTSxHQUFHOEssVUFBVSxDQUFDOUssTUFBTSxDQUFBO0VBQ2hDLElBQUEsSUFBSUUsQ0FBQyxDQUFBO01BRUwsS0FBS0EsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRixNQUFNLEVBQUVFLENBQUMsRUFBRSxFQUFFO0VBQzNCLE1BQUEsSUFBSSxDQUFDc1csWUFBWSxDQUFDMUwsVUFBVSxDQUFDNUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNsQyxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUE0SSxFQUFBQSxNQUFBLENBSUErTixlQUFlLEdBQWYsU0FBQUEsZUFBQUEsQ0FBZ0JKLFNBQVMsRUFBRTtNQUN6QixJQUFNalEsS0FBSyxHQUFHLElBQUksQ0FBQ3NFLFVBQVUsQ0FBQzdELE9BQU8sQ0FBQ3dQLFNBQVMsQ0FBQyxDQUFBO0VBRWhELElBQUEsSUFBSWpRLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtRQUNkLElBQU1pUSxVQUFTLEdBQUcsSUFBSSxDQUFDM0wsVUFBVSxDQUFDeUIsTUFBTSxDQUFDL0YsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2xEaVEsVUFBUyxDQUFDQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0VBQzFCLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQSxNQUZFO0VBQUE1TixFQUFBQSxNQUFBLENBR0FzTixtQkFBbUIsR0FBbkIsU0FBQUEsc0JBQXNCO0VBQ3BCNU0sSUFBQUEsSUFBSSxDQUFDckQsVUFBVSxDQUFDLElBQUksQ0FBQzJFLFVBQVUsQ0FBQyxDQUFBO0VBQ2xDLEdBQUE7O0VBRUE7RUFDRjtFQUNBLE1BRkU7RUFBQWhDLEVBQUFBLE1BQUEsQ0FHQW5CLE9BQU8sR0FBUCxTQUFBQSxVQUFVO01BQ1IsSUFBSSxDQUFDeU8sbUJBQW1CLEVBQUUsQ0FBQTtNQUMxQixJQUFJLENBQUNKLE1BQU0sR0FBRyxDQUFDLENBQUE7TUFDZixJQUFJLENBQUNGLElBQUksR0FBRyxJQUFJLENBQUE7TUFDaEIsSUFBSSxDQUFDOUYsTUFBTSxHQUFHLElBQUksQ0FBQTtLQUNuQixDQUFBO0VBQUEsRUFBQSxPQUFBdUYsUUFBQSxDQUFBO0VBQUEsQ0FBQTs7QUM5TEgsa0JBQWU7RUFDYjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFdUIsUUFBUSxFQUFBLFNBQUFBLFFBQUNDLENBQUFBLENBQUMsRUFBRTtNQUNWLElBQU1DLEtBQUssR0FBR0QsQ0FBQyxDQUFDaFQsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBR2dULENBQUMsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBR0YsQ0FBQyxDQUFBO0VBQ3pELElBQUEsSUFBTXRGLENBQUMsR0FBR3lGLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0VBQzdDLElBQUEsSUFBTXZGLENBQUMsR0FBR3dGLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0VBQzdDLElBQUEsSUFBTS9WLENBQUMsR0FBR2dXLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO01BRTdDLE9BQU87RUFBRXhGLE1BQUFBLENBQUMsRUFBREEsQ0FBQztFQUFFQyxNQUFBQSxDQUFDLEVBQURBLENBQUM7RUFBRXhRLE1BQUFBLENBQUMsRUFBREEsQ0FBQUE7T0FBRyxDQUFBO0tBQ25CO0VBRUQ7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRWlXLFFBQVEsRUFBQSxTQUFBQSxRQUFDQyxDQUFBQSxHQUFHLEVBQUU7TUFDWixPQUFjQSxNQUFBQSxHQUFBQSxHQUFHLENBQUMzRixDQUFDLEdBQUsyRixJQUFBQSxHQUFBQSxHQUFHLENBQUMxRixDQUFDLEdBQUEsSUFBQSxHQUFLMEYsR0FBRyxDQUFDbFcsQ0FBQyxHQUFBLEdBQUEsQ0FBQTtLQUN4QztJQUVEbVcsb0JBQW9CLEVBQUEsU0FBQUEsb0JBQUNwTyxDQUFBQSxDQUFDLEVBQUU7RUFDdEIsSUFBQSxPQUFPcU8sTUFBTSxDQUFDck8sQ0FBQyxDQUFDd00sR0FBRyxDQUFDaEUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHNkYsTUFBTSxDQUFDck8sQ0FBQyxDQUFDd00sR0FBRyxDQUFDL0QsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHNEYsTUFBTSxDQUFDck8sQ0FBQyxDQUFDd00sR0FBRyxDQUFDdlUsQ0FBQyxDQUFDLENBQUE7RUFDMUUsR0FBQTtFQUNGLENBQUM7O0FDM0NpQyxNQUVicVcsT0FBTyxnQkFBQSxZQUFBO0VBQzFCLEVBQUEsU0FBQUEsT0FBWTlGLENBQUFBLENBQUMsRUFBRXdELEdBQUcsRUFBRTtNQUNsQixJQUFJLENBQUN4RCxDQUFDLEdBQUdoUixJQUFJLENBQUMrVyxHQUFHLENBQUMvRixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDekIsSUFBQSxJQUFJLENBQUN3RCxHQUFHLEdBQUdBLEdBQUcsSUFBSSxDQUFDLENBQUE7RUFDckIsR0FBQTtFQUFDLEVBQUEsSUFBQW5NLE1BQUEsR0FBQXlPLE9BQUEsQ0FBQXZSLFNBQUEsQ0FBQTtJQUFBOEMsTUFBQSxDQUVEa0ksR0FBRyxHQUFILFNBQUFBLElBQUlTLENBQUMsRUFBRXdELEdBQUcsRUFBRTtNQUNWLElBQUksQ0FBQ3hELENBQUMsR0FBR0EsQ0FBQyxDQUFBO01BQ1YsSUFBSSxDQUFDd0QsR0FBRyxHQUFHQSxHQUFHLENBQUE7RUFDZCxJQUFBLE9BQU8sSUFBSSxDQUFBO0tBQ1osQ0FBQTtFQUFBbk0sRUFBQUEsTUFBQSxDQUVEMk8sSUFBSSxHQUFKLFNBQUFBLElBQUFBLENBQUtoRyxDQUFDLEVBQUU7TUFDTixJQUFJLENBQUNBLENBQUMsR0FBR0EsQ0FBQyxDQUFBO0VBQ1YsSUFBQSxPQUFPLElBQUksQ0FBQTtLQUNaLENBQUE7RUFBQTNJLEVBQUFBLE1BQUEsQ0FFRDRPLE1BQU0sR0FBTixTQUFBQSxNQUFBQSxDQUFPekMsR0FBRyxFQUFFO01BQ1YsSUFBSSxDQUFDQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQTtFQUNkLElBQUEsT0FBTyxJQUFJLENBQUE7S0FDWixDQUFBO0VBQUFuTSxFQUFBQSxNQUFBLENBRUQ0RixJQUFJLEdBQUosU0FBQUEsSUFBQUEsQ0FBS3pGLENBQUMsRUFBRTtFQUNOLElBQUEsSUFBSSxDQUFDd0ksQ0FBQyxHQUFHeEksQ0FBQyxDQUFDd0ksQ0FBQyxDQUFBO0VBQ1osSUFBQSxJQUFJLENBQUN3RCxHQUFHLEdBQUdoTSxDQUFDLENBQUNnTSxHQUFHLENBQUE7RUFDaEIsSUFBQSxPQUFPLElBQUksQ0FBQTtLQUNaLENBQUE7RUFBQW5NLEVBQUFBLE1BQUEsQ0FFRDZPLFFBQVEsR0FBUixTQUFBQSxXQUFXO0VBQ1QsSUFBQSxPQUFPLElBQUkzRCxRQUFRLENBQUMsSUFBSSxDQUFDNEQsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0tBQzlDLENBQUE7RUFBQS9PLEVBQUFBLE1BQUEsQ0FFRDhPLElBQUksR0FBSixTQUFBQSxPQUFPO01BQ0wsT0FBTyxJQUFJLENBQUNuRyxDQUFDLEdBQUdoUixJQUFJLENBQUNHLEdBQUcsQ0FBQyxJQUFJLENBQUNxVSxHQUFHLENBQUMsQ0FBQTtLQUNuQyxDQUFBO0VBQUFuTSxFQUFBQSxNQUFBLENBRUQrTyxJQUFJLEdBQUosU0FBQUEsT0FBTztFQUNMLElBQUEsT0FBTyxDQUFDLElBQUksQ0FBQ3BHLENBQUMsR0FBR2hSLElBQUksQ0FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQ3VVLEdBQUcsQ0FBQyxDQUFBO0tBQ3BDLENBQUE7RUFBQW5NLEVBQUFBLE1BQUEsQ0FFRGdNLFNBQVMsR0FBVCxTQUFBQSxZQUFZO01BQ1YsSUFBSSxDQUFDckQsQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUNWLElBQUEsT0FBTyxJQUFJLENBQUE7S0FDWixDQUFBO0VBQUEzSSxFQUFBQSxNQUFBLENBRUR3TSxNQUFNLEdBQU4sU0FBQUEsTUFBQUEsQ0FBTzNHLENBQUMsRUFBRTtFQUNSLElBQUEsT0FBT0EsQ0FBQyxDQUFDOEMsQ0FBQyxLQUFLLElBQUksQ0FBQ0EsQ0FBQyxJQUFJOUMsQ0FBQyxDQUFDc0csR0FBRyxLQUFLLElBQUksQ0FBQ0EsR0FBRyxDQUFBO0tBQzVDLENBQUE7RUFBQW5NLEVBQUFBLE1BQUEsQ0FFRGdHLEtBQUssR0FBTCxTQUFBQSxRQUFRO01BQ04sSUFBSSxDQUFDMkMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtNQUNaLElBQUksQ0FBQ3dELEdBQUcsR0FBRyxHQUFHLENBQUE7RUFDZCxJQUFBLE9BQU8sSUFBSSxDQUFBO0tBQ1osQ0FBQTtFQUFBbk0sRUFBQUEsTUFBQSxDQUVEVyxLQUFLLEdBQUwsU0FBQUEsUUFBUTtNQUNOLE9BQU8sSUFBSThOLE9BQU8sQ0FBQyxJQUFJLENBQUM5RixDQUFDLEVBQUUsSUFBSSxDQUFDd0QsR0FBRyxDQUFDLENBQUE7S0FDckMsQ0FBQTtFQUFBLEVBQUEsT0FBQXNDLE9BQUEsQ0FBQTtFQUFBLENBQUE7O0FDM0RILE1BQU1PLElBQUksR0FBRztJQUNYdk8sTUFBTSxFQUFBLFNBQUFBLE1BQUN3TyxDQUFBQSxJQUFJLEVBQUU7RUFDWCxJQUFBLElBQU1DLEdBQUcsR0FBRyxJQUFJQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7TUFDL0IsSUFBSUYsSUFBSSxFQUFFLElBQUksQ0FBQy9HLEdBQUcsQ0FBQytHLElBQUksRUFBRUMsR0FBRyxDQUFDLENBQUE7RUFFN0IsSUFBQSxPQUFPQSxHQUFHLENBQUE7S0FDWDtFQUVEaEgsRUFBQUEsR0FBRyxFQUFBQSxTQUFBQSxHQUFBQSxDQUFDa0gsSUFBSSxFQUFFQyxJQUFJLEVBQUU7TUFDZCxLQUFLLElBQUlqWSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEVBQUUsRUFBQTtFQUFFaVksTUFBQUEsSUFBSSxDQUFDalksQ0FBQyxDQUFDLEdBQUdnWSxJQUFJLENBQUNoWSxDQUFDLENBQUMsQ0FBQTtFQUFDLEtBQUE7RUFFOUMsSUFBQSxPQUFPaVksSUFBSSxDQUFBO0tBQ1o7RUFFREMsRUFBQUEsUUFBUSxXQUFBQSxRQUFDSixDQUFBQSxHQUFHLEVBQUVHLElBQUksRUFBRUosSUFBSSxFQUFFO0VBQ3hCLElBQUEsSUFBSTVXLEdBQUcsR0FBRzZXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDZDVXLE1BQUFBLEdBQUcsR0FBRzRXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDWjNXLE1BQUFBLEdBQUcsR0FBRzJXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDWjFXLE1BQUFBLEdBQUcsR0FBRzBXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDWnpXLE1BQUFBLEdBQUcsR0FBR3lXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDWnZXLE1BQUFBLEdBQUcsR0FBR3VXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDWnRXLE1BQUFBLEdBQUcsR0FBR3NXLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDWnBXLE1BQUFBLEdBQUcsR0FBR3VXLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDYnRXLE1BQUFBLEdBQUcsR0FBR3NXLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDYnJXLE1BQUFBLEdBQUcsR0FBR3FXLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDYnBXLE1BQUFBLEdBQUcsR0FBR29XLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDYm5XLE1BQUFBLEdBQUcsR0FBR21XLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDYmpXLE1BQUFBLEdBQUcsR0FBR2lXLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDYmhXLE1BQUFBLEdBQUcsR0FBR2dXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtNQUVmSixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUduVyxHQUFHLEdBQUdULEdBQUcsR0FBR1UsR0FBRyxHQUFHUCxHQUFHLENBQUE7TUFDL0J5VyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUduVyxHQUFHLEdBQUdSLEdBQUcsR0FBR1MsR0FBRyxHQUFHTixHQUFHLENBQUE7RUFDL0J3VyxJQUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcxVyxHQUFHLEdBQUdTLEdBQUcsQ0FBQTtNQUNuQmlXLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR2hXLEdBQUcsR0FBR1osR0FBRyxHQUFHYSxHQUFHLEdBQUdWLEdBQUcsQ0FBQTtNQUMvQnlXLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR2hXLEdBQUcsR0FBR1gsR0FBRyxHQUFHWSxHQUFHLEdBQUdULEdBQUcsQ0FBQTtFQUMvQndXLElBQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzdWLEdBQUcsR0FBR2YsR0FBRyxHQUFHZ0IsR0FBRyxHQUFHYixHQUFHLEdBQUdHLEdBQUcsQ0FBQTtFQUNyQ3NXLElBQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzdWLEdBQUcsR0FBR2QsR0FBRyxHQUFHZSxHQUFHLEdBQUdaLEdBQUcsR0FBR0csR0FBRyxDQUFBO0VBRXJDLElBQUEsT0FBT3FXLElBQUksQ0FBQTtLQUNaO0VBRURNLEVBQUFBLE9BQU8sRUFBQUEsU0FBQUEsT0FBQUEsQ0FBQ0wsR0FBRyxFQUFFRCxJQUFJLEVBQUU7RUFDakIsSUFBQSxJQUFJNVcsR0FBRyxHQUFHNlcsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNkNVcsTUFBQUEsR0FBRyxHQUFHNFcsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNaMVcsTUFBQUEsR0FBRyxHQUFHMFcsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNaelcsTUFBQUEsR0FBRyxHQUFHeVcsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNadlcsTUFBQUEsR0FBRyxHQUFHdVcsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNadFcsTUFBQUEsR0FBRyxHQUFHc1csR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNablcsTUFBQUEsR0FBRyxHQUFHTixHQUFHO1FBQ1RTLEdBQUcsR0FBRyxDQUFDVixHQUFHO0VBQ1ZhLE1BQUFBLEdBQUcsR0FBR1QsR0FBRyxHQUFHSixHQUFHLEdBQUdDLEdBQUcsR0FBR0UsR0FBRztFQUMzQjZXLE1BQUFBLENBQUMsR0FBR25YLEdBQUcsR0FBR1UsR0FBRyxHQUFHVCxHQUFHLEdBQUdZLEdBQUc7UUFDekJNLEVBQUUsQ0FBQTtNQUVKQSxFQUFFLEdBQUcsQ0FBQyxHQUFHZ1csQ0FBQyxDQUFBO0VBQ1ZQLElBQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR2xXLEdBQUcsR0FBR1MsRUFBRSxDQUFBO0VBQ2xCeVYsSUFBQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMzVyxHQUFHLEdBQUdrQixFQUFFLENBQUE7RUFDbkJ5VixJQUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcvVixHQUFHLEdBQUdNLEVBQUUsQ0FBQTtFQUNsQnlWLElBQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzVXLEdBQUcsR0FBR21CLEVBQUUsQ0FBQTtFQUNsQnlWLElBQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzVWLEdBQUcsR0FBR0csRUFBRSxDQUFBO0VBQ2xCeVYsSUFBQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQ3JXLEdBQUcsR0FBR1AsR0FBRyxHQUFHQyxHQUFHLEdBQUdLLEdBQUcsSUFBSWEsRUFBRSxDQUFBO0VBRXZDLElBQUEsT0FBT3lWLElBQUksQ0FBQTtLQUNaO0VBRURRLEVBQUFBLFlBQVksV0FBQUEsWUFBQ0MsQ0FBQUEsQ0FBQyxFQUFFQyxHQUFHLEVBQUVWLElBQUksRUFBRTtFQUN6QixJQUFBLElBQUkxVSxDQUFDLEdBQUdvVixHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQ1puVixNQUFBQSxDQUFDLEdBQUdtVixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7TUFFWlYsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHMVUsQ0FBQyxHQUFHbVYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHbFYsQ0FBQyxHQUFHa1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7TUFDcENULElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzFVLENBQUMsR0FBR21WLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2xWLENBQUMsR0FBR2tWLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBRXBDLElBQUEsT0FBT1QsSUFBSSxDQUFBO0VBQ2IsR0FBQTtFQUNGOztBQ3RFcUJXLE1BQUFBLFNBQVMsMEJBQUFDLEtBQUEsRUFBQTtJQUFBQyxjQUFBLENBQUFGLFNBQUEsRUFBQUMsS0FBQSxDQUFBLENBQUE7SUFDNUIsU0FBQUQsU0FBQUEsQ0FBWWxOLEtBQUssRUFBRTtFQUFBLElBQUEsSUFBQUwsS0FBQSxDQUFBO0VBQ2pCQSxJQUFBQSxLQUFBLEdBQUF3TixLQUFBLENBQUF6UyxJQUFBLEtBQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtNQUNQaUYsS0FBQSxDQUFLME4sSUFBSSxHQUFHclAsSUFBSSxDQUFDbkQsT0FBTyxDQUFDbUYsS0FBSyxDQUFDLENBQUE7RUFBQyxJQUFBLE9BQUFMLEtBQUEsQ0FBQTtFQUNsQyxHQUFBO0VBQUMsRUFBQSxJQUFBckMsTUFBQSxHQUFBNFAsU0FBQSxDQUFBMVMsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBRUQrSSxRQUFRLEdBQVIsU0FBQUEsV0FBVztNQUNULElBQU1oTyxHQUFHLEdBQUcyRixJQUFJLENBQUM3QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUNrUyxJQUFJLENBQUMsQ0FBQTtFQUM1QyxJQUFBLE9BQU9oVixHQUFHLEtBQUssUUFBUSxJQUFJQSxHQUFHLEtBQUssUUFBUSxHQUFHZ0osUUFBUSxDQUFDVyxXQUFXLEVBQUUsR0FBRzNKLEdBQUcsQ0FBQTtFQUM1RSxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFWRTtFQUFBNlUsRUFBQUEsU0FBQSxDQVdPSSxlQUFlLEdBQXRCLFNBQUFBLGVBQUFBLENBQXVCMVMsR0FBRyxFQUFFO0VBQzFCLElBQUEsSUFBSSxDQUFDQSxHQUFHLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFFckIsSUFBQSxJQUFJQSxHQUFHLFlBQVlzUyxTQUFTLEVBQUUsT0FBT3RTLEdBQUcsQ0FBQyxLQUNwQyxPQUFPLElBQUlzUyxTQUFTLENBQUN0UyxHQUFHLENBQUMsQ0FBQTtLQUMvQixDQUFBO0VBQUEsRUFBQSxPQUFBc1MsU0FBQSxDQUFBO0VBQUEsQ0FBQSxDQTNCb0M5RyxJQUFJOztNQ0p0Qm1ILFNBQVMsZ0JBQUEsWUFBQTtJQUM1QixTQUFBQSxTQUFBQSxDQUFZMVYsQ0FBQyxFQUFFQyxDQUFDLEVBQUUrUSxDQUFDLEVBQUUwQyxDQUFDLEVBQUU7TUFDdEIsSUFBSSxDQUFDMVQsQ0FBQyxHQUFHQSxDQUFDLENBQUE7TUFDVixJQUFJLENBQUNDLENBQUMsR0FBR0EsQ0FBQyxDQUFBO01BRVYsSUFBSSxDQUFDZixLQUFLLEdBQUc4UixDQUFDLENBQUE7TUFDZCxJQUFJLENBQUM3UixNQUFNLEdBQUd1VSxDQUFDLENBQUE7TUFFZixJQUFJLENBQUNpQyxNQUFNLEdBQUcsSUFBSSxDQUFDMVYsQ0FBQyxHQUFHLElBQUksQ0FBQ2QsTUFBTSxDQUFBO01BQ2xDLElBQUksQ0FBQ3lXLEtBQUssR0FBRyxJQUFJLENBQUM1VixDQUFDLEdBQUcsSUFBSSxDQUFDZCxLQUFLLENBQUE7RUFDbEMsR0FBQTtFQUFDLEVBQUEsSUFBQXVHLE1BQUEsR0FBQWlRLFNBQUEsQ0FBQS9TLFNBQUEsQ0FBQTtJQUFBOEMsTUFBQSxDQUVEb1EsUUFBUSxHQUFSLFNBQUFBLFNBQVM3VixDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNiLElBQUEsSUFBSUQsQ0FBQyxJQUFJLElBQUksQ0FBQzRWLEtBQUssSUFBSTVWLENBQUMsSUFBSSxJQUFJLENBQUNBLENBQUMsSUFBSUMsQ0FBQyxJQUFJLElBQUksQ0FBQzBWLE1BQU0sSUFBSTFWLENBQUMsSUFBSSxJQUFJLENBQUNBLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUM5RSxPQUFPLEtBQUssQ0FBQTtLQUNsQixDQUFBO0VBQUEsRUFBQSxPQUFBeVYsU0FBQSxDQUFBO0VBQUEsQ0FBQTs7RUNaSDtFQUNBO0VBQ0E7QUFGQSxNQUdxQkksSUFBSSxnQkFBQSxZQUFBO0VBQ3ZCO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQUEsSUFBWUMsQ0FBQUEsTUFBTSxFQUFFQyxPQUFPLEVBQUU7RUFBQSxJQUFBLElBQUEsQ0E3QjdCQyxNQUFNLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQSxJQUFBLElBQUEsQ0FNTkMsT0FBTyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUEsSUFBQSxJQUFBLENBTVBDLFNBQVMsR0FBQSxLQUFBLENBQUEsQ0FBQTtFQUFBLElBQUEsSUFBQSxDQU1UQyxRQUFRLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFZTixJQUFBLElBQUksQ0FBQ0gsTUFBTSxHQUFHMUgsSUFBSSxDQUFDRSxZQUFZLENBQUN0SSxJQUFJLENBQUM5RCxTQUFTLENBQUMwVCxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUMxRCxJQUFBLElBQUksQ0FBQ0csT0FBTyxHQUFHM0gsSUFBSSxDQUFDRSxZQUFZLENBQUN0SSxJQUFJLENBQUM5RCxTQUFTLENBQUMyVCxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtNQUU1RCxJQUFJLENBQUNHLFNBQVMsR0FBRyxDQUFDLENBQUE7TUFDbEIsSUFBSSxDQUFDQyxRQUFRLEdBQUcsQ0FBQyxDQUFBO01BQ2pCLElBQUksQ0FBQzdKLElBQUksRUFBRSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUhFLEVBQUEsSUFBQTlHLE1BQUEsR0FBQXFRLElBQUEsQ0FBQW5ULFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQUlBOEcsSUFBSSxHQUFKLFNBQUFBLE9BQU87TUFDTCxJQUFJLENBQUM0SixTQUFTLEdBQUcsQ0FBQyxDQUFBO01BQ2xCLElBQUksQ0FBQ0MsUUFBUSxHQUFHLElBQUksQ0FBQ0YsT0FBTyxDQUFDMUgsUUFBUSxFQUFFLENBQUE7RUFDekMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQS9JLEVBQUFBLE1BQUEsQ0FLQStJLFFBQVEsR0FBUixTQUFBQSxRQUFBQSxDQUFTekQsSUFBSSxFQUFFO01BQ2IsSUFBSSxDQUFDb0wsU0FBUyxJQUFJcEwsSUFBSSxDQUFBO0VBRXRCLElBQUEsSUFBSSxJQUFJLENBQUNvTCxTQUFTLElBQUksSUFBSSxDQUFDQyxRQUFRLEVBQUU7UUFDbkMsSUFBSSxDQUFDRCxTQUFTLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLElBQUksQ0FBQ0MsUUFBUSxHQUFHLElBQUksQ0FBQ0YsT0FBTyxDQUFDMUgsUUFBUSxFQUFFLENBQUE7RUFFdkMsTUFBQSxJQUFJLElBQUksQ0FBQ3lILE1BQU0sQ0FBQ3BZLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDdkIsUUFBQSxJQUFJLElBQUksQ0FBQ29ZLE1BQU0sQ0FBQ3pILFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FDM0MsT0FBTyxDQUFDLENBQUE7RUFDZixPQUFDLE1BQU07RUFDTCxRQUFBLE9BQU8sSUFBSSxDQUFDeUgsTUFBTSxDQUFDekgsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ25DLE9BQUE7RUFDRixLQUFBO0VBRUEsSUFBQSxPQUFPLENBQUMsQ0FBQTtLQUNULENBQUE7RUFBQSxFQUFBLE9BQUFzSCxJQUFBLENBQUE7RUFBQSxDQUFBOztNQy9Fa0JPLFVBQVUsZ0JBQUEsWUFBQTtFQUFBLEVBQUEsU0FBQUEsVUFBQSxHQUFBLEVBQUE7RUFBQSxFQUFBLElBQUE1USxNQUFBLEdBQUE0USxVQUFBLENBQUExVCxTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FDN0I2SSxLQUFLLEdBQUwsU0FBQUEsS0FBQSxHQUFRLEVBQUUsQ0FBQTtJQUFBN0ksTUFBQSxDQUVWOEcsSUFBSSxHQUFKLFNBQUFBLEtBQUt4RixPQUFPLEVBQUVtRSxRQUFRLEVBQUU7RUFDdEIsSUFBQSxJQUFJQSxRQUFRLEVBQUU7RUFDWixNQUFBLElBQUksQ0FBQ29JLFVBQVUsQ0FBQ3BJLFFBQVEsQ0FBQyxDQUFBO0VBQzNCLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBSSxDQUFDb0ksVUFBVSxDQUFDdk0sT0FBTyxDQUFDLENBQUE7RUFDMUIsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFBQSxHQUFBO0lBQUF0QixNQUFBLENBQ0E2TixVQUFVLEdBQVYsU0FBQUEsV0FBV3ZSLE1BQU0sRUFBRSxFQUFFLENBQUE7RUFBQSxFQUFBLE9BQUFzVSxVQUFBLENBQUE7RUFBQSxDQUFBOztFQ1R2QjtFQUNBO0VBQ0E7RUFDQTtBQUNxQkMsTUFBQUEsSUFBSSwwQkFBQUMsV0FBQSxFQUFBO0lBQUFoQixjQUFBLENBQUFlLElBQUEsRUFBQUMsV0FBQSxDQUFBLENBQUE7RUFDdkI7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQUQsS0FBWTFZLENBQUMsRUFBRUMsQ0FBQyxFQUFFVixDQUFDLEVBQUU7RUFBQSxJQUFBLElBQUEySyxLQUFBLENBQUE7RUFDbkJBLElBQUFBLEtBQUEsR0FBQXlPLFdBQUEsQ0FBQTFULElBQUEsS0FBTSxDQUFDLElBQUEsSUFBQSxDQUFBO0VBQUNpRixJQUFBQSxLQUFBLENBZFYwTyxPQUFPLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQTFPLElBQUFBLEtBQUEsQ0FLUEosSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBV0ZJLElBQUFBLEtBQUEsQ0FBSzBPLE9BQU8sR0FBR2pJLElBQUksQ0FBQ0UsWUFBWSxDQUFDN1EsQ0FBQyxFQUFFQyxDQUFDLEVBQUVWLENBQUMsQ0FBQyxDQUFBO01BQ3pDMkssS0FBQSxDQUFLSixJQUFJLEdBQUcsTUFBTSxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDckIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUhFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQTZRLElBQUEsQ0FBQTNULFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQUlBNk4sVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVd2UixNQUFNLEVBQUU7TUFDakIsSUFBSSxJQUFJLENBQUN5VSxPQUFPLENBQUM1WSxDQUFDLEtBQUsyTCxRQUFRLEVBQUV4SCxNQUFNLENBQUN3USxJQUFJLEdBQUdoSixRQUFRLENBQUMsS0FDbkR4SCxNQUFNLENBQUN3USxJQUFJLEdBQUcsSUFBSSxDQUFDaUUsT0FBTyxDQUFDaEksUUFBUSxFQUFFLENBQUE7S0FDM0MsQ0FBQTtFQUFBLEVBQUEsT0FBQThILElBQUEsQ0FBQTtFQUFBLENBQUEsQ0FoQytCRCxVQUFVOztBQ1BKLE1BRW5CSSxJQUFJLGdCQUFBLFlBQUE7RUFDdkIsRUFBQSxTQUFBQSxPQUFjO01BQ1osSUFBSSxDQUFDQyxNQUFNLEdBQUcsSUFBSS9GLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7TUFDaEMsSUFBSSxDQUFDbk4sTUFBTSxHQUFHLENBQUMsQ0FBQTtNQUNmLElBQUksQ0FBQ21ULFNBQVMsR0FBRyxNQUFNLENBQUE7TUFDdkIsSUFBSSxDQUFDQyxLQUFLLEdBQUcsSUFBSSxDQUFBO0VBQ25CLEdBQUE7RUFBQyxFQUFBLElBQUFuUixNQUFBLEdBQUFnUixJQUFBLENBQUE5VCxTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FFRG9SLFdBQVcsR0FBWCxTQUFBQSxXQUFBLEdBQWMsRUFBRSxDQUFBO0lBQUFwUixNQUFBLENBRWhCcVIsUUFBUSxHQUFSLFNBQUFBLFNBQVM1TCxRQUFRLEVBQUUsRUFBRSxDQUFBO0VBQUF6RixFQUFBQSxNQUFBLENBRXJCbkIsT0FBTyxHQUFQLFNBQUFBLFVBQVU7TUFDUixJQUFJLENBQUNvUyxNQUFNLEdBQUcsSUFBSSxDQUFBO0tBQ25CLENBQUE7RUFBQSxFQUFBLE9BQUFELElBQUEsQ0FBQTtFQUFBLENBQUE7O0VDZEg7RUFDQTtFQUNBO0VBQ0E7QUFDcUJNLE1BQUFBLFNBQVMsMEJBQUFDLEtBQUEsRUFBQTtJQUFBekIsY0FBQSxDQUFBd0IsU0FBQSxFQUFBQyxLQUFBLENBQUEsQ0FBQTtFQUM1QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0UsRUFBQSxTQUFBRCxTQUFZL1csQ0FBQUEsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFBQSxJQUFBLElBQUE2SCxLQUFBLENBQUE7RUFDaEJBLElBQUFBLEtBQUEsR0FBQWtQLEtBQUEsQ0FBQW5VLElBQUEsS0FBTSxDQUFDLElBQUEsSUFBQSxDQUFBOztFQUVQO0VBQ0o7RUFDQTtFQUNBO01BQ0lpRixLQUFBLENBQUs5SCxDQUFDLEdBQUdBLENBQUMsQ0FBQTs7RUFFVjtFQUNKO0VBQ0E7RUFDQTtNQUNJOEgsS0FBQSxDQUFLN0gsQ0FBQyxHQUFHQSxDQUFDLENBQUE7RUFBQyxJQUFBLE9BQUE2SCxLQUFBLENBQUE7RUFDYixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBSEUsRUFBQSxJQUFBckMsTUFBQSxHQUFBc1IsU0FBQSxDQUFBcFUsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBSUFvUixXQUFXLEdBQVgsU0FBQUEsY0FBYztFQUNaLElBQUEsSUFBSSxDQUFDSCxNQUFNLENBQUMxVyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLENBQUE7RUFDdEIsSUFBQSxJQUFJLENBQUMwVyxNQUFNLENBQUN6VyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLENBQUE7TUFFdEIsT0FBTyxJQUFJLENBQUN5VyxNQUFNLENBQUE7RUFDcEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFqUixFQUFBQSxNQUFBLENBSUFxUixRQUFRLEdBQVIsU0FBQUEsUUFBQUEsQ0FBUzVMLFFBQVEsRUFBRTtNQUNqQixJQUFJLElBQUksQ0FBQzBMLEtBQUssRUFBRTtFQUNkSyxNQUFBQSxPQUFPLENBQUNDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQ04sS0FBSyxHQUFHLEtBQUssQ0FBQTtFQUNwQixLQUFBO0tBQ0QsQ0FBQTtFQUFBLEVBQUEsT0FBQUcsU0FBQSxDQUFBO0VBQUEsQ0FBQSxDQTFDb0NOLElBQUk7O0VDRjNDO0VBQ0E7RUFDQTtFQUNBO0FBQ3FCVSxNQUFBQSxRQUFRLDBCQUFBWixXQUFBLEVBQUE7SUFBQWhCLGNBQUEsQ0FBQTRCLFFBQUEsRUFBQVosV0FBQSxDQUFBLENBQUE7RUFDM0I7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0lBQ0UsU0FBQVksUUFBQUEsQ0FBWUMsSUFBSSxFQUFFO0VBQUEsSUFBQSxJQUFBdFAsS0FBQSxDQUFBO0VBQ2hCQSxJQUFBQSxLQUFBLEdBQUF5TyxXQUFBLENBQUExVCxJQUFBLEtBQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUFDaUYsSUFBQUEsS0FBQSxDQVpWc1AsSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUF0UCxJQUFBQSxLQUFBLENBS0pKLElBQUksR0FBQSxLQUFBLENBQUEsQ0FBQTtFQVFGSSxJQUFBQSxLQUFBLENBQUtzUCxJQUFJLEdBQUdqUixJQUFJLENBQUM5RCxTQUFTLENBQUMrVSxJQUFJLEVBQUUsSUFBSUwsU0FBUyxFQUFFLENBQUMsQ0FBQTtNQUNqRGpQLEtBQUEsQ0FBS0osSUFBSSxHQUFHLFVBQVUsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQ3pCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFIRSxFQUFBLElBQUFyQyxNQUFBLEdBQUEwUixRQUFBLENBQUF4VSxTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FJQTZJLEtBQUssR0FBTCxTQUFBQSxLQUFBQSxDQUFNOEksSUFBSSxFQUFFO0VBQ1YsSUFBQSxJQUFJLENBQUNBLElBQUksR0FBR2pSLElBQUksQ0FBQzlELFNBQVMsQ0FBQytVLElBQUksRUFBRSxJQUFJTCxTQUFTLEVBQUUsQ0FBQyxDQUFBO0VBQ25ELEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFORTtFQUFBdFIsRUFBQUEsTUFBQSxDQU9BNk4sVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVd2UixNQUFNLEVBQUU7RUFDakIsSUFBQSxJQUFJLENBQUNxVixJQUFJLENBQUNQLFdBQVcsRUFBRSxDQUFBO01BRXZCOVUsTUFBTSxDQUFDNkQsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHLElBQUksQ0FBQ29YLElBQUksQ0FBQ1YsTUFBTSxDQUFDMVcsQ0FBQyxDQUFBO01BQy9CK0IsTUFBTSxDQUFDNkQsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHLElBQUksQ0FBQ21YLElBQUksQ0FBQ1YsTUFBTSxDQUFDelcsQ0FBQyxDQUFBO0tBQ2hDLENBQUE7RUFBQSxFQUFBLE9BQUFrWCxRQUFBLENBQUE7RUFBQSxDQUFBLENBMUNtQ2QsVUFBVTs7RUNEaEQ7RUFDQTtFQUNBO0VBQ0E7QUFDcUJnQixNQUFBQSxRQUFRLDBCQUFBZCxXQUFBLEVBQUE7SUFBQWhCLGNBQUEsQ0FBQThCLFFBQUEsRUFBQWQsV0FBQSxDQUFBLENBQUE7RUFDM0I7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQWMsU0FBWUMsSUFBSSxFQUFFQyxNQUFNLEVBQUV6UyxJQUFJLEVBQUU7RUFBQSxJQUFBLElBQUFnRCxLQUFBLENBQUE7RUFDOUJBLElBQUFBLEtBQUEsR0FBQXlPLFdBQUEsQ0FBQTFULElBQUEsS0FBTSxDQUFDLElBQUEsSUFBQSxDQUFBO0VBQUNpRixJQUFBQSxLQUFBLENBcEJWMFAsSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUExUCxJQUFBQSxLQUFBLENBTUoyUCxNQUFNLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQTNQLElBQUFBLEtBQUEsQ0FLTkosSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO01BV0ZJLEtBQUEsQ0FBSzBQLElBQUksR0FBR2pKLElBQUksQ0FBQ0UsWUFBWSxDQUFDNkksSUFBSSxDQUFDLENBQUE7TUFDbkN4UCxLQUFBLENBQUsyUCxNQUFNLEdBQUdsSixJQUFJLENBQUNFLFlBQVksQ0FBQzhJLE1BQU0sQ0FBQyxDQUFBO01BQ3ZDelAsS0FBQSxDQUFLaEQsSUFBSSxHQUFHcUIsSUFBSSxDQUFDOUQsU0FBUyxDQUFDeUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO01BRTFDZ0QsS0FBQSxDQUFLSixJQUFJLEdBQUcsVUFBVSxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDekIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFMRSxFQUFBLElBQUFyQyxNQUFBLEdBQUE0UixRQUFBLENBQUExVSxTQUFBLENBQUE7SUFBQThDLE1BQUEsQ0FNQTZJLEtBQUssR0FBTCxTQUFBQSxLQUFBQSxDQUFNZ0osSUFBSSxFQUFFQyxNQUFNLEVBQUV6UyxJQUFJLEVBQUU7TUFDeEIsSUFBSSxDQUFDMFMsSUFBSSxHQUFHakosSUFBSSxDQUFDRSxZQUFZLENBQUM2SSxJQUFJLENBQUMsQ0FBQTtNQUNuQyxJQUFJLENBQUNHLE1BQU0sR0FBR2xKLElBQUksQ0FBQ0UsWUFBWSxDQUFDOEksTUFBTSxDQUFDLENBQUE7TUFDdkMsSUFBSSxDQUFDelMsSUFBSSxHQUFHcUIsSUFBSSxDQUFDOUQsU0FBUyxDQUFDeUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0VBQzVDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7RUFBQVcsRUFBQUEsTUFBQSxDQU1BaVMsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFBQSxDQUFrQkMsRUFBRSxFQUFFO0VBQ3BCLElBQUEsT0FBT0EsRUFBRSxHQUFHak0sTUFBTSxDQUFDbUMsT0FBTyxDQUFBO0VBQzVCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBcEksRUFBQUEsTUFBQSxDQUlBNk4sVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVd2UixNQUFNLEVBQUU7RUFDakIsSUFBQSxJQUFJLElBQUksQ0FBQytDLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQ0EsSUFBSSxLQUFLLE9BQU8sRUFBRTtFQUNuRSxNQUFBLElBQU04UyxPQUFPLEdBQUcsSUFBSTFELE9BQU8sQ0FDekIsSUFBSSxDQUFDd0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDRixJQUFJLENBQUNoSixRQUFRLEVBQUUsQ0FBQyxFQUM1QyxJQUFJLENBQUNpSixNQUFNLENBQUNqSixRQUFRLEVBQUUsR0FBR2hGLFFBQVEsQ0FBQ0csTUFDcEMsQ0FBQyxDQUFBO1FBRUQ1SCxNQUFNLENBQUN1SixDQUFDLENBQUN0TCxDQUFDLEdBQUc0WCxPQUFPLENBQUNyRCxJQUFJLEVBQUUsQ0FBQTtRQUMzQnhTLE1BQU0sQ0FBQ3VKLENBQUMsQ0FBQ3JMLENBQUMsR0FBRzJYLE9BQU8sQ0FBQ3BELElBQUksRUFBRSxDQUFBO0VBQzdCLEtBQUMsTUFBTTtFQUNMelMsTUFBQUEsTUFBTSxDQUFDdUosQ0FBQyxDQUFDdEwsQ0FBQyxHQUFHLElBQUksQ0FBQzBYLGlCQUFpQixDQUFDLElBQUksQ0FBQ0YsSUFBSSxDQUFDaEosUUFBUSxFQUFFLENBQUMsQ0FBQTtFQUN6RHpNLE1BQUFBLE1BQU0sQ0FBQ3VKLENBQUMsQ0FBQ3JMLENBQUMsR0FBRyxJQUFJLENBQUN5WCxpQkFBaUIsQ0FBQyxJQUFJLENBQUNELE1BQU0sQ0FBQ2pKLFFBQVEsRUFBRSxDQUFDLENBQUE7RUFDN0QsS0FBQTtLQUNELENBQUE7RUFBQSxFQUFBLE9BQUE2SSxRQUFBLENBQUE7RUFBQSxDQUFBLENBekVtQ2hCLFVBQVU7O0VDUmhEO0VBQ0E7RUFDQTtFQUNBO0FBQ3FCd0IsTUFBQUEsSUFBSSwwQkFBQXRCLFdBQUEsRUFBQTtJQUFBaEIsY0FBQSxDQUFBc0MsSUFBQSxFQUFBdEIsV0FBQSxDQUFBLENBQUE7RUFDdkI7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQXNCLEtBQVlqYSxDQUFDLEVBQUVDLENBQUMsRUFBRVYsQ0FBQyxFQUFFO0VBQUEsSUFBQSxJQUFBMkssS0FBQSxDQUFBO0VBQ25CQSxJQUFBQSxLQUFBLEdBQUF5TyxXQUFBLENBQUExVCxJQUFBLEtBQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUFDaUYsSUFBQUEsS0FBQSxDQWRWZ1EsT0FBTyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUFoUSxJQUFBQSxLQUFBLENBS1BKLElBQUksR0FBQSxLQUFBLENBQUEsQ0FBQTtFQVVGSSxJQUFBQSxLQUFBLENBQUtnUSxPQUFPLEdBQUd2SixJQUFJLENBQUNFLFlBQVksQ0FBQzdRLENBQUMsRUFBRUMsQ0FBQyxFQUFFVixDQUFDLENBQUMsQ0FBQTtNQUN6QzJLLEtBQUEsQ0FBS0osSUFBSSxHQUFHLE1BQU0sQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQ3JCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFIRSxFQUFBLElBQUFyQyxNQUFBLEdBQUFvUyxJQUFBLENBQUFsVixTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FJQTZOLFVBQVUsR0FBVixTQUFBQSxVQUFBQSxDQUFXdlIsTUFBTSxFQUFFO01BQ2pCQSxNQUFNLENBQUN5SixJQUFJLEdBQUcsSUFBSSxDQUFDc00sT0FBTyxDQUFDdEosUUFBUSxFQUFFLENBQUE7S0FDdEMsQ0FBQTtFQUFBLEVBQUEsT0FBQXFKLElBQUEsQ0FBQTtFQUFBLENBQUEsQ0E5QitCeEIsVUFBVTs7RUNKNUM7RUFDQTtFQUNBO0VBQ0E7QUFDcUIwQixNQUFBQSxNQUFNLDBCQUFBeEIsV0FBQSxFQUFBO0lBQUFoQixjQUFBLENBQUF3QyxNQUFBLEVBQUF4QixXQUFBLENBQUEsQ0FBQTtFQUN6QjtFQUNGO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQXdCLE9BQVluYSxDQUFDLEVBQUVDLENBQUMsRUFBRVYsQ0FBQyxFQUFFO0VBQUEsSUFBQSxJQUFBMkssS0FBQSxDQUFBO0VBQ25CQSxJQUFBQSxLQUFBLEdBQUF5TyxXQUFBLENBQUExVCxJQUFBLEtBQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUFDaUYsSUFBQUEsS0FBQSxDQWRWOEssTUFBTSxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUE5SyxJQUFBQSxLQUFBLENBS05KLElBQUksR0FBQSxLQUFBLENBQUEsQ0FBQTtFQVVGSSxJQUFBQSxLQUFBLENBQUs4SyxNQUFNLEdBQUdyRSxJQUFJLENBQUNFLFlBQVksQ0FBQzdRLENBQUMsRUFBRUMsQ0FBQyxFQUFFVixDQUFDLENBQUMsQ0FBQTtNQUN4QzJLLEtBQUEsQ0FBS0osSUFBSSxHQUFHLFFBQVEsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQ3ZCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBTEUsRUFBQSxJQUFBckMsTUFBQSxHQUFBc1MsTUFBQSxDQUFBcFYsU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBTUE2SSxLQUFLLEdBQUwsU0FBQUEsS0FBQUEsQ0FBTTFRLENBQUMsRUFBRUMsQ0FBQyxFQUFFVixDQUFDLEVBQUU7RUFDYixJQUFBLElBQUksQ0FBQ3lWLE1BQU0sR0FBR3JFLElBQUksQ0FBQ0UsWUFBWSxDQUFDN1EsQ0FBQyxFQUFFQyxDQUFDLEVBQUVWLENBQUMsQ0FBQyxDQUFBO0VBQzFDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBc0ksRUFBQUEsTUFBQSxDQUlBNk4sVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVdwSSxRQUFRLEVBQUU7TUFDbkJBLFFBQVEsQ0FBQzBILE1BQU0sR0FBRyxJQUFJLENBQUNBLE1BQU0sQ0FBQ3BFLFFBQVEsRUFBRSxDQUFBO0VBQ3hDdEQsSUFBQUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDNkYsU0FBUyxHQUFHOU0sUUFBUSxDQUFDMEgsTUFBTSxDQUFBO0tBQzFDLENBQUE7RUFBQSxFQUFBLE9BQUFtRixNQUFBLENBQUE7RUFBQSxDQUFBLENBeENpQzFCLFVBQVU7O0VDSDlDO0VBQ0E7RUFDQTtFQUNBO0FBQ3FCNEIsTUFBQUEsSUFBSSwwQkFBQTFCLFdBQUEsRUFBQTtJQUFBaEIsY0FBQSxDQUFBMEMsSUFBQSxFQUFBMUIsV0FBQSxDQUFBLENBQUE7RUFDdkI7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQTBCLEtBQVkvVyxLQUFLLEVBQUU4UCxDQUFDLEVBQUUwQyxDQUFDLEVBQUU7RUFBQSxJQUFBLElBQUE1TCxLQUFBLENBQUE7RUFDdkJBLElBQUFBLEtBQUEsR0FBQXlPLFdBQUEsQ0FBQTFULElBQUEsS0FBTSxDQUFDLElBQUEsSUFBQSxDQUFBO0VBQUNpRixJQUFBQSxLQUFBLENBZFY1RyxLQUFLLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQTRHLElBQUFBLEtBQUEsQ0FLTEosSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO01BV0ZJLEtBQUEsQ0FBSzVHLEtBQUssR0FBRzRHLEtBQUEsQ0FBSzJHLFlBQVksQ0FBQ3ZOLEtBQUssQ0FBQyxDQUFBO01BQ3JDNEcsS0FBQSxDQUFLa0osQ0FBQyxHQUFHN0ssSUFBSSxDQUFDOUQsU0FBUyxDQUFDMk8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0VBQzlCbEosSUFBQUEsS0FBQSxDQUFLNEwsQ0FBQyxHQUFHdk4sSUFBSSxDQUFDOUQsU0FBUyxDQUFDcVIsQ0FBQyxFQUFFNUwsS0FBQSxDQUFLa0osQ0FBQyxDQUFDLENBQUE7TUFDbENsSixLQUFBLENBQUtKLElBQUksR0FBRyxNQUFNLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUNyQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBSEUsRUFBQSxJQUFBckMsTUFBQSxHQUFBd1MsSUFBQSxDQUFBdFYsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBSUE2TixVQUFVLEdBQVYsU0FBQUEsVUFBQUEsQ0FBV3BJLFFBQVEsRUFBRTtNQUNuQixJQUFNZ04sV0FBVyxHQUFHLElBQUksQ0FBQ2hYLEtBQUssQ0FBQ3NOLFFBQVEsRUFBRSxDQUFBO0VBRXpDLElBQUEsSUFBSSxPQUFPMEosV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUNuQ2hOLFFBQVEsQ0FBQ3JFLElBQUksR0FBRztVQUNkM0gsS0FBSyxFQUFFLElBQUksQ0FBQzhSLENBQUM7VUFDYjdSLE1BQU0sRUFBRSxJQUFJLENBQUN1VSxDQUFDO0VBQ2QvUixRQUFBQSxHQUFHLEVBQUV1VyxXQUFXO0VBQ2hCL1MsUUFBQUEsT0FBTyxFQUFFLElBQUk7RUFDYmdULFFBQUFBLEtBQUssRUFBRSxJQUFBO1NBQ1IsQ0FBQTtFQUNILEtBQUMsTUFBTTtRQUNMak4sUUFBUSxDQUFDckUsSUFBSSxHQUFHcVIsV0FBVyxDQUFBO0VBQzdCLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0VBQUF6UyxFQUFBQSxNQUFBLENBTUFnSixZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYXZOLEtBQUssRUFBRTtNQUNsQixPQUFPQSxLQUFLLFlBQVltVSxTQUFTLEdBQUduVSxLQUFLLEdBQUcsSUFBSW1VLFNBQVMsQ0FBQ25VLEtBQUssQ0FBQyxDQUFBO0tBQ2pFLENBQUE7RUFBQSxFQUFBLE9BQUErVyxJQUFBLENBQUE7RUFBQSxDQUFBLENBdkQrQjVCLFVBQVU7O0VDSjVDO0VBQ0E7RUFDQTtFQUNBO0FBSEEsTUFJcUIrQixTQUFTLGdCQUFBLFlBQUE7RUFHNUI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQUEsU0FBWTdGLENBQUFBLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQ3hCO0VBQ0o7RUFDQTtFQUNBO01BQ0ksSUFBSSxDQUFDUCxJQUFJLEdBQUdwTSxJQUFJLENBQUM5RCxTQUFTLENBQUNrUSxJQUFJLEVBQUVoSixRQUFRLENBQUMsQ0FBQTs7RUFFMUM7RUFDSjtFQUNBO0VBQ0E7TUFDSSxJQUFJLENBQUN1SixNQUFNLEdBQUdwQyxJQUFJLENBQUNELFNBQVMsQ0FBQ3FDLE1BQU0sQ0FBQyxDQUFBOztFQUVwQztFQUNKO0VBQ0E7RUFDQTtNQUNJLElBQUksQ0FBQ04sR0FBRyxHQUFHLENBQUMsQ0FBQTs7RUFFWjtFQUNKO0VBQ0E7RUFDQTtNQUNJLElBQUksQ0FBQ0csTUFBTSxHQUFHLENBQUMsQ0FBQTs7RUFFZjtFQUNKO0VBQ0E7RUFDQTtNQUNJLElBQUksQ0FBQ0YsSUFBSSxHQUFHLEtBQUssQ0FBQTs7RUFFakI7RUFDSjtFQUNBO0VBQ0E7TUFDSSxJQUFJLENBQUNZLE9BQU8sR0FBRyxFQUFFLENBQUE7O0VBRWpCO0VBQ0o7RUFDQTtFQUNBO0VBQ0ksSUFBQSxJQUFJLENBQUNwVSxFQUFFLEdBQUEsWUFBQSxHQUFnQm1aLFNBQVMsQ0FBQ25aLEVBQUUsRUFBSSxDQUFBOztFQUV2QztFQUNKO0VBQ0E7RUFDQTtNQUNJLElBQUksQ0FBQ3lJLElBQUksR0FBRyxXQUFXLENBQUE7RUFDekIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBSkUsRUFBQSxJQUFBakMsTUFBQSxHQUFBMlMsU0FBQSxDQUFBelYsU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBS0E2SSxLQUFLLEdBQUwsU0FBQUEsTUFBTWlFLElBQUksRUFBRU8sTUFBTSxFQUFFO01BQ2xCLElBQUksQ0FBQ1AsSUFBSSxHQUFHcE0sSUFBSSxDQUFDOUQsU0FBUyxDQUFDa1EsSUFBSSxFQUFFaEosUUFBUSxDQUFDLENBQUE7TUFDMUMsSUFBSSxDQUFDdUosTUFBTSxHQUFHcEMsSUFBSSxDQUFDRCxTQUFTLENBQUNxQyxNQUFNLENBQUMsQ0FBQTtFQUN0QyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0EsTUFKRTtFQUFBck4sRUFBQUEsTUFBQSxDQUtBNFMsY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVDLEtBQUssRUFBRTtFQUNwQixJQUFBLE9BQU9BLEtBQUssQ0FBQy9NLGNBQWMsQ0FBQ0csTUFBTSxDQUFDbUMsT0FBTyxDQUFDLENBQUE7RUFDN0MsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQXBJLEVBQUFBLE1BQUEsQ0FLQThTLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlalcsS0FBSyxFQUFFO0VBQ3BCLElBQUEsT0FBT0EsS0FBSyxHQUFHb0osTUFBTSxDQUFDbUMsT0FBTyxDQUFBO0VBQy9CLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBcEksRUFBQUEsTUFBQSxDQUlBNk4sVUFBVSxHQUFWLFNBQUFBLFVBQVdwSSxDQUFBQSxRQUFRLEVBQUUsRUFBQzs7RUFFdEI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7SUFBQXpGLE1BQUEsQ0FNQW9GLFNBQVMsR0FBVCxTQUFBQSxTQUFBQSxDQUFVSyxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssRUFBRTtNQUMvQixJQUFJLENBQUNxUCxHQUFHLElBQUl6SCxJQUFJLENBQUE7TUFFaEIsSUFBSSxJQUFJLENBQUN5SCxHQUFHLElBQUksSUFBSSxDQUFDRCxJQUFJLElBQUksSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDdEMsSUFBSSxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxDQUFDRixJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQ25PLE9BQU8sRUFBRSxDQUFBO0VBQ2hCLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBTXBFLEtBQUssR0FBRyxJQUFJLENBQUM0UyxNQUFNLENBQUM1SCxRQUFRLENBQUNzSCxHQUFHLEdBQUd0SCxRQUFRLENBQUNxSCxJQUFJLENBQUMsQ0FBQTtFQUN2RCxNQUFBLElBQUksQ0FBQ0ksTUFBTSxHQUFHdlYsSUFBSSxDQUFDNlYsR0FBRyxDQUFDLENBQUMsR0FBRy9TLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUN0QyxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBdUYsTUFBQSxDQU1BeU4sY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVoSSxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssRUFBRTtNQUNwQyxJQUFJLENBQUMwSCxTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxDQUFDLENBQUE7RUFDdkMsR0FBQTs7RUFFQTtFQUNGO0VBQ0EsTUFGRTtFQUFBc0MsRUFBQUEsTUFBQSxDQUdBbkIsT0FBTyxHQUFQLFNBQUFBLFVBQVU7RUFDUixJQUFBLElBQUl6SCxDQUFDLEdBQUcsSUFBSSxDQUFDd1csT0FBTyxDQUFDMVcsTUFBTSxDQUFBO01BQzNCLE9BQU9FLENBQUMsRUFBRSxFQUFFO1FBQ1YsSUFBSSxDQUFDd1csT0FBTyxDQUFDeFcsQ0FBQyxDQUFDLENBQUMyVyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDdkMsS0FBQTtFQUVBLElBQUEsSUFBSSxDQUFDSCxPQUFPLENBQUMxVyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0tBQ3hCLENBQUE7RUFBQSxFQUFBLE9BQUF5YixTQUFBLENBQUE7RUFBQSxDQUFBLEdBQUE7RUFuSWtCQSxTQUFTLENBQ3JCblosRUFBRSxHQUFHLENBQUM7O0FDTk11WixNQUFBQSxLQUFLLDBCQUFBQyxVQUFBLEVBQUE7SUFBQWxELGNBQUEsQ0FBQWlELEtBQUEsRUFBQUMsVUFBQSxDQUFBLENBQUE7RUFDeEI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRSxTQUFBRCxLQUFBQSxDQUFZRSxFQUFFLEVBQUVDLEVBQUUsRUFBRXBHLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQ2hDQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUVuQmhMLElBQUFBLEtBQUEsQ0FBS3dRLEtBQUssR0FBR3hRLEtBQUEsQ0FBS3VRLGNBQWMsQ0FBQyxJQUFJMUgsUUFBUSxDQUFDK0gsRUFBRSxFQUFFQyxFQUFFLENBQUMsQ0FBQyxDQUFBO01BQ3REN1EsS0FBQSxDQUFLSixJQUFJLEdBQUcsT0FBTyxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDdEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFYRSxFQUFBLElBQUFyQyxNQUFBLEdBQUErUyxLQUFBLENBQUE3VixTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FZQTZJLEtBQUssR0FBTCxTQUFBQSxLQUFNb0ssQ0FBQUEsRUFBRSxFQUFFQyxFQUFFLEVBQUVwRyxJQUFJLEVBQUVPLE1BQU0sRUFBRTtFQUMxQixJQUFBLElBQUksQ0FBQ3dGLEtBQUssR0FBRyxJQUFJLENBQUNELGNBQWMsQ0FBQyxJQUFJMUgsUUFBUSxDQUFDK0gsRUFBRSxFQUFFQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBRXREcEcsSUFBQUEsSUFBSSxJQUFBa0csVUFBQSxDQUFBOVYsU0FBQSxDQUFVMkwsS0FBSyxDQUFBekwsSUFBQSxDQUFDMFAsSUFBQUEsRUFBQUEsSUFBSSxFQUFFTyxNQUFNLENBQUMsQ0FBQTtFQUNuQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFWRTtJQUFBck4sTUFBQSxDQVdBeU4sY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVoSSxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssRUFBRTtNQUNwQyxJQUFJLENBQUMwSCxTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxDQUFDLENBQUE7TUFDckMrSCxRQUFRLENBQUN0TixDQUFDLENBQUNrSixHQUFHLENBQUMsSUFBSSxDQUFDd1IsS0FBSyxDQUFDLENBQUE7S0FDM0IsQ0FBQTtFQUFBLEVBQUEsT0FBQUUsS0FBQSxDQUFBO0VBQUEsQ0FBQSxDQXJEZ0NKLFNBQVM7O0VDQzVDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDcUJRLE1BQUFBLFVBQVUsMEJBQUFILFVBQUEsRUFBQTtJQUFBbEQsY0FBQSxDQUFBcUQsVUFBQSxFQUFBSCxVQUFBLENBQUEsQ0FBQTtFQUM3QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQUcsVUFBQUEsQ0FBWUMsY0FBYyxFQUFFUCxLQUFLLEVBQUUxRixNQUFNLEVBQUVMLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQ3ZEQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTs7RUFFbkI7RUFDSjtFQUNBO0VBQ0E7RUFDSWhMLElBQUFBLEtBQUEsQ0FBSytRLGNBQWMsR0FBRzFTLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3dXLGNBQWMsRUFBRSxJQUFJbEksUUFBUSxFQUFFLENBQUMsQ0FBQTs7RUFFcEU7RUFDSjtFQUNBO0VBQ0E7TUFDSTdJLEtBQUEsQ0FBSzhLLE1BQU0sR0FBR3pNLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3VRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTs7RUFFMUM7RUFDSjtFQUNBO0VBQ0E7RUFDSTlLLElBQUFBLEtBQUEsQ0FBS3dRLEtBQUssR0FBR25TLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3lGLEtBQUEsQ0FBS3lRLGNBQWMsQ0FBQ0QsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7O0VBRTVEO0VBQ0o7RUFDQTtFQUNBO01BQ0l4USxLQUFBLENBQUtnUixRQUFRLEdBQUdoUixLQUFBLENBQUs4SyxNQUFNLEdBQUc5SyxLQUFBLENBQUs4SyxNQUFNLENBQUE7O0VBRXpDO0VBQ0o7RUFDQTtFQUNBO0VBQ0k5SyxJQUFBQSxLQUFBLENBQUtpUixlQUFlLEdBQUcsSUFBSXBJLFFBQVEsRUFBRSxDQUFBOztFQUVyQztFQUNKO0VBQ0E7RUFDQTtNQUNJN0ksS0FBQSxDQUFLMEosUUFBUSxHQUFHLENBQUMsQ0FBQTs7RUFFakI7RUFDSjtFQUNBO0VBQ0E7TUFDSTFKLEtBQUEsQ0FBS0osSUFBSSxHQUFHLFlBQVksQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQzNCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVBFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQW1ULFVBQUEsQ0FBQWpXLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQVFBNkksS0FBSyxHQUFMLFNBQUFBLE1BQU11SyxjQUFjLEVBQUVQLEtBQUssRUFBRTFGLE1BQU0sRUFBRUwsSUFBSSxFQUFFTyxNQUFNLEVBQUU7RUFDakQsSUFBQSxJQUFJLENBQUMrRixjQUFjLEdBQUcxUyxJQUFJLENBQUM5RCxTQUFTLENBQUN3VyxjQUFjLEVBQUUsSUFBSWxJLFFBQVEsRUFBRSxDQUFDLENBQUE7TUFDcEUsSUFBSSxDQUFDaUMsTUFBTSxHQUFHek0sSUFBSSxDQUFDOUQsU0FBUyxDQUFDdVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0VBQzFDLElBQUEsSUFBSSxDQUFDMEYsS0FBSyxHQUFHblMsSUFBSSxDQUFDOUQsU0FBUyxDQUFDLElBQUksQ0FBQ2tXLGNBQWMsQ0FBQ0QsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7TUFDNUQsSUFBSSxDQUFDUSxRQUFRLEdBQUcsSUFBSSxDQUFDbEcsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFBO0VBQ3pDLElBQUEsSUFBSSxDQUFDbUcsZUFBZSxHQUFHLElBQUlwSSxRQUFRLEVBQUUsQ0FBQTtNQUNyQyxJQUFJLENBQUNhLFFBQVEsR0FBRyxDQUFDLENBQUE7RUFFakJlLElBQUFBLElBQUksSUFBQWtHLFVBQUEsQ0FBQTlWLFNBQUEsQ0FBVTJMLEtBQUssQ0FBQXpMLElBQUEsQ0FBQzBQLElBQUFBLEVBQUFBLElBQUksRUFBRU8sTUFBTSxDQUFDLENBQUE7RUFDbkMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBck4sTUFBQSxDQU1BeU4sY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVoSSxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssRUFBRTtNQUNwQyxJQUFJLENBQUMwSCxTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxDQUFDLENBQUE7TUFFckMsSUFBSSxDQUFDNFYsZUFBZSxDQUFDMU4sSUFBSSxDQUFDLElBQUksQ0FBQ3dOLGNBQWMsQ0FBQyxDQUFBO01BQzlDLElBQUksQ0FBQ0UsZUFBZSxDQUFDNUgsR0FBRyxDQUFDakcsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDLENBQUE7TUFDcEMsSUFBSSxDQUFDNEwsUUFBUSxHQUFHLElBQUksQ0FBQ3VILGVBQWUsQ0FBQ3ZILFFBQVEsRUFBRSxDQUFBO0VBRS9DLElBQUEsSUFBSSxJQUFJLENBQUNBLFFBQVEsR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDQSxRQUFRLEdBQUcsSUFBSSxDQUFDc0gsUUFBUSxFQUFFO0VBQzVELE1BQUEsSUFBSSxDQUFDQyxlQUFlLENBQUN0SCxTQUFTLEVBQUUsQ0FBQTtFQUNoQyxNQUFBLElBQUksQ0FBQ3NILGVBQWUsQ0FBQ3hOLGNBQWMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDaUcsUUFBUSxHQUFHLElBQUksQ0FBQ3NILFFBQVEsQ0FBQyxDQUFBO1FBQ3RFLElBQUksQ0FBQ0MsZUFBZSxDQUFDeE4sY0FBYyxDQUFDLElBQUksQ0FBQytNLEtBQUssQ0FBQyxDQUFBO1FBRS9DcE4sUUFBUSxDQUFDdE4sQ0FBQyxDQUFDa0osR0FBRyxDQUFDLElBQUksQ0FBQ2lTLGVBQWUsQ0FBQyxDQUFBO0VBQ3RDLEtBQUE7S0FDRCxDQUFBO0VBQUEsRUFBQSxPQUFBSCxVQUFBLENBQUE7RUFBQSxDQUFBLENBOUZxQ1IsU0FBUzs7QUNMNUJZLE1BQUFBLFdBQVcsMEJBQUFQLFVBQUEsRUFBQTtJQUFBbEQsY0FBQSxDQUFBeUQsV0FBQSxFQUFBUCxVQUFBLENBQUEsQ0FBQTtFQUM5QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRSxTQUFBTyxXQUFBQSxDQUFZQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFNUcsSUFBSSxFQUFFTyxNQUFNLEVBQUU7RUFBQSxJQUFBLElBQUFoTCxLQUFBLENBQUE7TUFDL0NBLEtBQUEsR0FBQTJRLFVBQUEsQ0FBQTVWLElBQUEsT0FBTTBQLElBQUksRUFBRU8sTUFBTSxDQUFDLElBQUEsSUFBQSxDQUFBO01BRW5CaEwsS0FBQSxDQUFLd0csS0FBSyxDQUFDMkssTUFBTSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssQ0FBQyxDQUFBO01BQ2pDclIsS0FBQSxDQUFLaUQsSUFBSSxHQUFHLENBQUMsQ0FBQTtNQUNiakQsS0FBQSxDQUFLSixJQUFJLEdBQUcsYUFBYSxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDNUIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVpFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQXVULFdBQUEsQ0FBQXJXLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQWFBNkksS0FBSyxHQUFMLFNBQUFBLE1BQU0ySyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFNUcsSUFBSSxFQUFFTyxNQUFNLEVBQUU7TUFDekMsSUFBSSxDQUFDc0csT0FBTyxHQUFHLElBQUl6SSxRQUFRLENBQUNzSSxNQUFNLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO01BQzNDLElBQUksQ0FBQ0UsT0FBTyxHQUFHLElBQUksQ0FBQ2YsY0FBYyxDQUFDLElBQUksQ0FBQ2UsT0FBTyxDQUFDLENBQUE7TUFDaEQsSUFBSSxDQUFDRCxLQUFLLEdBQUdBLEtBQUssQ0FBQTtFQUVsQjVHLElBQUFBLElBQUksSUFBQWtHLFVBQUEsQ0FBQTlWLFNBQUEsQ0FBVTJMLEtBQUssQ0FBQXpMLElBQUEsQ0FBQzBQLElBQUFBLEVBQUFBLElBQUksRUFBRU8sTUFBTSxDQUFDLENBQUE7S0FDbEMsQ0FBQTtFQUFBck4sRUFBQUEsTUFBQSxDQUVENk4sVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVdwSSxRQUFRLEVBQUU7RUFDbkJBLElBQUFBLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3BILElBQUksR0FBRyxDQUFDLENBQUE7RUFDeEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BVkU7SUFBQXRGLE1BQUEsQ0FXQXlOLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaEksUUFBUSxFQUFFSCxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7TUFDcEMsSUFBSSxDQUFDMEgsU0FBUyxDQUFDSyxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssQ0FBQyxDQUFBO0VBQ3JDK0gsSUFBQUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDcEgsSUFBSSxJQUFJQSxJQUFJLENBQUE7TUFFMUIsSUFBSUcsUUFBUSxDQUFDaUgsSUFBSSxDQUFDcEgsSUFBSSxJQUFJLElBQUksQ0FBQ29PLEtBQUssRUFBRTtFQUNwQ2pPLE1BQUFBLFFBQVEsQ0FBQ3ROLENBQUMsQ0FBQ3NULEtBQUssQ0FDZDFILFFBQVEsQ0FBQ00sVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDc1AsT0FBTyxDQUFDcFosQ0FBQyxFQUFFLElBQUksQ0FBQ29aLE9BQU8sQ0FBQ3BaLENBQUMsQ0FBQyxFQUNwRHdKLFFBQVEsQ0FBQ00sVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDc1AsT0FBTyxDQUFDblosQ0FBQyxFQUFFLElBQUksQ0FBQ21aLE9BQU8sQ0FBQ25aLENBQUMsQ0FDckQsQ0FBQyxDQUFBO0VBRURpTCxNQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUNwSCxJQUFJLEdBQUcsQ0FBQyxDQUFBO0VBQ3hCLEtBQUE7S0FDRCxDQUFBO0VBQUEsRUFBQSxPQUFBaU8sV0FBQSxDQUFBO0VBQUEsQ0FBQSxDQXhFc0NaLFNBQVM7O0FDRjdCaUIsTUFBQUEsT0FBTywwQkFBQUMsTUFBQSxFQUFBO0lBQUEvRCxjQUFBLENBQUE4RCxPQUFBLEVBQUFDLE1BQUEsQ0FBQSxDQUFBO0VBQzFCO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQUQsUUFBWWhMLENBQUMsRUFBRWtFLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO0VBQzNCQSxJQUFBQSxLQUFBLEdBQUF3UixNQUFBLENBQUF6VyxJQUFBLENBQU0sSUFBQSxFQUFBLENBQUMsRUFBRXdMLENBQUMsRUFBRWtFLElBQUksRUFBRU8sTUFBTSxDQUFDLElBQUEsSUFBQSxDQUFBO01BQ3pCaEwsS0FBQSxDQUFLSixJQUFJLEdBQUcsU0FBUyxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDeEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBVkUsRUFBQSxJQUFBckMsTUFBQSxHQUFBNFQsT0FBQSxDQUFBMVcsU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBV0E2SSxLQUFLLEdBQUwsU0FBQUEsS0FBQUEsQ0FBTUQsQ0FBQyxFQUFFa0UsSUFBSSxFQUFFTyxNQUFNLEVBQUU7RUFDckJ3RyxJQUFBQSxNQUFBLENBQUEzVyxTQUFBLENBQU0yTCxLQUFLLENBQUF6TCxJQUFBLENBQUMsSUFBQSxFQUFBLENBQUMsRUFBRXdMLENBQUMsRUFBRWtFLElBQUksRUFBRU8sTUFBTSxDQUFBLENBQUE7S0FDL0IsQ0FBQTtFQUFBLEVBQUEsT0FBQXVHLE9BQUEsQ0FBQTtFQUFBLENBQUEsQ0EvQmtDYixLQUFLOztBQ0VyQmUsTUFBQUEsU0FBUywwQkFBQWQsVUFBQSxFQUFBO0lBQUFsRCxjQUFBLENBQUFnRSxTQUFBLEVBQUFkLFVBQUEsQ0FBQSxDQUFBO0VBQzVCO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUFjLFNBQUFBLENBQVl4UyxPQUFPLEVBQUV5RSxJQUFJLEVBQUUvSixRQUFRLEVBQUU4USxJQUFJLEVBQUVPLE1BQU0sRUFBRTtFQUFBLElBQUEsSUFBQWhMLEtBQUEsQ0FBQTtNQUNqREEsS0FBQSxHQUFBMlEsVUFBQSxDQUFBNVYsSUFBQSxPQUFNMFAsSUFBSSxFQUFFTyxNQUFNLENBQUMsSUFBQSxJQUFBLENBQUE7TUFDbkJoTCxLQUFBLENBQUt3RyxLQUFLLENBQUN2SCxPQUFPLEVBQUV5RSxJQUFJLEVBQUUvSixRQUFRLENBQUMsQ0FBQTtNQUNuQ3FHLEtBQUEsQ0FBSzBSLE9BQU8sR0FBRyxFQUFFLENBQUE7TUFDakIxUixLQUFBLENBQUtGLElBQUksR0FBRyxFQUFFLENBQUE7TUFDZEUsS0FBQSxDQUFLSixJQUFJLEdBQUcsV0FBVyxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDMUIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFkRSxFQUFBLElBQUFyQyxNQUFBLEdBQUE4VCxTQUFBLENBQUE1VyxTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FlQTZJLEtBQUssR0FBTCxTQUFBQSxNQUFNdkgsT0FBTyxFQUFFeUUsSUFBSSxFQUFFL0osUUFBUSxFQUFFOFEsSUFBSSxFQUFFTyxNQUFNLEVBQUU7TUFDM0MsSUFBSSxDQUFDL0wsT0FBTyxHQUFHWixJQUFJLENBQUM5RCxTQUFTLENBQUMwRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7TUFDNUMsSUFBSSxDQUFDeUUsSUFBSSxHQUFHckYsSUFBSSxDQUFDOUQsU0FBUyxDQUFDbUosSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO01BQ3RDLElBQUksQ0FBQy9KLFFBQVEsR0FBRzBFLElBQUksQ0FBQzlELFNBQVMsQ0FBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO01BRTlDLElBQUksQ0FBQ2dZLGFBQWEsR0FBRyxFQUFFLENBQUE7RUFDdkIsSUFBQSxJQUFJLENBQUNDLEtBQUssR0FBRyxJQUFJL0ksUUFBUSxFQUFFLENBQUE7RUFFM0I0QixJQUFBQSxJQUFJLElBQUFrRyxVQUFBLENBQUE5VixTQUFBLENBQVUyTCxLQUFLLENBQUF6TCxJQUFBLENBQUMwUCxJQUFBQSxFQUFBQSxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxDQUFBO0VBQ25DLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQVZFO0lBQUFyTixNQUFBLENBV0F5TixjQUFjLEdBQWQsU0FBQUEsY0FBQUEsQ0FBZWhJLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxFQUFFO01BQ3BDLElBQUksSUFBSSxDQUFDNEQsT0FBTyxFQUFFO0VBQ2hCWixNQUFBQSxJQUFJLENBQUNsRCxVQUFVLENBQUMsSUFBSSxDQUFDOEQsT0FBTyxDQUFDK0QsU0FBUyxFQUFFM0gsS0FBSyxFQUFFLElBQUksQ0FBQ3FXLE9BQU8sQ0FBQyxDQUFBO0VBQzlELEtBQUMsTUFBTTtFQUNMclQsTUFBQUEsSUFBSSxDQUFDbEQsVUFBVSxDQUFDLElBQUksQ0FBQzJFLElBQUksRUFBRXpFLEtBQUssRUFBRSxJQUFJLENBQUNxVyxPQUFPLENBQUMsQ0FBQTtFQUNqRCxLQUFBO0VBRUEsSUFBQSxJQUFNN2MsTUFBTSxHQUFHLElBQUksQ0FBQzZjLE9BQU8sQ0FBQzdjLE1BQU0sQ0FBQTtFQUNsQyxJQUFBLElBQUlnZCxhQUFhLENBQUE7RUFDakIsSUFBQSxJQUFJbkksUUFBUSxDQUFBO0VBQ1osSUFBQSxJQUFJb0ksT0FBTyxDQUFBO0VBQ1gsSUFBQSxJQUFJQyxTQUFTLENBQUE7TUFDYixJQUFJQyxZQUFZLEVBQUVDLFlBQVksQ0FBQTtFQUM5QixJQUFBLElBQUlsZCxDQUFDLENBQUE7TUFFTCxLQUFLQSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLE1BQU0sRUFBRUUsQ0FBQyxFQUFFLEVBQUU7RUFDM0I4YyxNQUFBQSxhQUFhLEdBQUcsSUFBSSxDQUFDSCxPQUFPLENBQUMzYyxDQUFDLENBQUMsQ0FBQTtRQUUvQixJQUFJOGMsYUFBYSxLQUFLek8sUUFBUSxFQUFFO1VBQzlCLElBQUksQ0FBQ3dPLEtBQUssQ0FBQ3JPLElBQUksQ0FBQ3NPLGFBQWEsQ0FBQy9ULENBQUMsQ0FBQyxDQUFBO1VBQ2hDLElBQUksQ0FBQzhULEtBQUssQ0FBQ3ZJLEdBQUcsQ0FBQ2pHLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQyxDQUFBO0VBRTFCNEwsUUFBQUEsUUFBUSxHQUFHLElBQUksQ0FBQ2tJLEtBQUssQ0FBQ2xJLFFBQVEsRUFBRSxDQUFBO1VBQ2hDLElBQU13SSxRQUFRLEdBQUc5TyxRQUFRLENBQUMwSCxNQUFNLEdBQUcrRyxhQUFhLENBQUMvRyxNQUFNLENBQUE7RUFFdkQsUUFBQSxJQUFJcEIsUUFBUSxJQUFJd0ksUUFBUSxHQUFHQSxRQUFRLEVBQUU7WUFDbkNKLE9BQU8sR0FBR0ksUUFBUSxHQUFHNWMsSUFBSSxDQUFDK1MsSUFBSSxDQUFDcUIsUUFBUSxDQUFDLENBQUE7RUFDeENvSSxVQUFBQSxPQUFPLElBQUksR0FBRyxDQUFBO0VBRWRDLFVBQUFBLFNBQVMsR0FBRzNPLFFBQVEsQ0FBQ00sSUFBSSxHQUFHbU8sYUFBYSxDQUFDbk8sSUFBSSxDQUFBO1lBQzlDc08sWUFBWSxHQUFHLElBQUksQ0FBQ3RPLElBQUksR0FBR21PLGFBQWEsQ0FBQ25PLElBQUksR0FBR3FPLFNBQVMsR0FBRyxHQUFHLENBQUE7WUFDL0RFLFlBQVksR0FBRyxJQUFJLENBQUN2TyxJQUFJLEdBQUdOLFFBQVEsQ0FBQ00sSUFBSSxHQUFHcU8sU0FBUyxHQUFHLEdBQUcsQ0FBQTtZQUUxRDNPLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQ2tCLEdBQUcsQ0FDWixJQUFJLENBQUM0UyxLQUFLLENBQ1B0VCxLQUFLLEVBQUUsQ0FDUHFMLFNBQVMsRUFBRSxDQUNYbEcsY0FBYyxDQUFDcU8sT0FBTyxHQUFHLENBQUNFLFlBQVksQ0FDM0MsQ0FBQyxDQUFBO0VBQ0RILFVBQUFBLGFBQWEsQ0FBQy9ULENBQUMsQ0FBQ2tCLEdBQUcsQ0FBQyxJQUFJLENBQUM0UyxLQUFLLENBQUNqSSxTQUFTLEVBQUUsQ0FBQ2xHLGNBQWMsQ0FBQ3FPLE9BQU8sR0FBR0csWUFBWSxDQUFDLENBQUMsQ0FBQTtZQUVsRixJQUFJLENBQUN0WSxRQUFRLElBQUksSUFBSSxDQUFDQSxRQUFRLENBQUN5SixRQUFRLEVBQUV5TyxhQUFhLENBQUMsQ0FBQTtFQUN6RCxTQUFBO0VBQ0YsT0FBQTtFQUNGLEtBQUE7S0FDRCxDQUFBO0VBQUEsRUFBQSxPQUFBSixTQUFBLENBQUE7RUFBQSxDQUFBLENBbkhvQ25CLFNBQVM7O0FDRDNCNkIsTUFBQUEsU0FBUywwQkFBQXhCLFVBQUEsRUFBQTtJQUFBbEQsY0FBQSxDQUFBMEUsU0FBQSxFQUFBeEIsVUFBQSxDQUFBLENBQUE7RUFDNUI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQXdCLFNBQUFBLENBQVk3QyxJQUFJLEVBQUVULFNBQVMsRUFBRXBFLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQ3pDQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUVuQmhMLElBQUFBLEtBQUEsQ0FBS3dHLEtBQUssQ0FBQzhJLElBQUksRUFBRVQsU0FBUyxDQUFDLENBQUE7TUFDM0I3TyxLQUFBLENBQUtKLElBQUksR0FBRyxXQUFXLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUMxQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVhFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQXdVLFNBQUEsQ0FBQXRYLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQVlBNkksS0FBSyxHQUFMLFNBQUFBLEtBQU04SSxDQUFBQSxJQUFJLEVBQUVULFNBQVMsRUFBRXBFLElBQUksRUFBRU8sTUFBTSxFQUFFO01BQ25DLElBQUksQ0FBQ3NFLElBQUksR0FBR0EsSUFBSSxDQUFBO0VBQ2hCLElBQUEsSUFBSSxDQUFDQSxJQUFJLENBQUNULFNBQVMsR0FBR3hRLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3NVLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtFQUV2RHBFLElBQUFBLElBQUksSUFBQWtHLFVBQUEsQ0FBQTlWLFNBQUEsQ0FBVTJMLEtBQUssQ0FBQXpMLElBQUEsQ0FBQzBQLElBQUFBLEVBQUFBLElBQUksRUFBRU8sTUFBTSxDQUFDLENBQUE7RUFDbkMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BVkU7SUFBQXJOLE1BQUEsQ0FXQXlOLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaEksUUFBUSxFQUFFSCxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7TUFDcEMsSUFBSSxDQUFDMEgsU0FBUyxDQUFDSyxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssQ0FBQyxDQUFBO0VBQ3JDLElBQUEsSUFBSSxDQUFDaVUsSUFBSSxDQUFDTixRQUFRLENBQUM1TCxRQUFRLENBQUMsQ0FBQTtLQUM3QixDQUFBO0VBQUEsRUFBQSxPQUFBK08sU0FBQSxDQUFBO0VBQUEsQ0FBQSxDQXhEb0M3QixTQUFTOztFQ0NoRDtFQUNBO0VBQ0E7RUFDQTtBQUNxQjhCLE1BQUFBLEtBQUssMEJBQUF6QixVQUFBLEVBQUE7SUFBQWxELGNBQUEsQ0FBQTJFLEtBQUEsRUFBQXpCLFVBQUEsQ0FBQSxDQUFBO0VBQ3hCO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTs7RUFHRTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUF5QixLQUFBQSxDQUFZdGMsQ0FBQyxFQUFFQyxDQUFDLEVBQUUwVSxJQUFJLEVBQUVPLE1BQU0sRUFBRTtFQUFBLElBQUEsSUFBQWhMLEtBQUEsQ0FBQTtNQUM5QkEsS0FBQSxHQUFBMlEsVUFBQSxDQUFBNVYsSUFBQSxPQUFNMFAsSUFBSSxFQUFFTyxNQUFNLENBQUMsSUFBQSxJQUFBLENBQUE7RUFBQ2hMLElBQUFBLEtBQUEsQ0EzQnRCcVMsSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUFyUyxJQUFBQSxLQUFBLENBTUpsSyxDQUFDLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQWtLLElBQUFBLEtBQUEsQ0FNRGpLLENBQUMsR0FBQSxLQUFBLENBQUEsQ0FBQTtFQUFBaUssSUFBQUEsS0FBQSxDQUtESixJQUFJLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFZRkksSUFBQUEsS0FBQSxDQUFLd0csS0FBSyxDQUFDMVEsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQTtNQUNoQmlLLEtBQUEsQ0FBS0osSUFBSSxHQUFHLE9BQU8sQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQ3RCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFORSxFQUFBLElBQUFyQyxNQUFBLEdBQUF5VSxLQUFBLENBQUF2WCxTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FPQTZJLEtBQUssR0FBTCxTQUFBQSxLQUFNMVEsQ0FBQUEsQ0FBQyxFQUFFQyxDQUFDLEVBQUUwVSxJQUFJLEVBQUVPLE1BQU0sRUFBRTtNQUN4QixJQUFJLENBQUNxSCxJQUFJLEdBQUd0YyxDQUFDLEtBQUssSUFBSSxJQUFJQSxDQUFDLEtBQUsyRSxTQUFTLENBQUE7RUFDekMsSUFBQSxJQUFJLENBQUM1RSxDQUFDLEdBQUcyUSxJQUFJLENBQUNFLFlBQVksQ0FBQ3RJLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3pFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO01BQ2hELElBQUksQ0FBQ0MsQ0FBQyxHQUFHMFEsSUFBSSxDQUFDRSxZQUFZLENBQUM1USxDQUFDLENBQUMsQ0FBQTtFQUU3QjBVLElBQUFBLElBQUksSUFBQWtHLFVBQUEsQ0FBQTlWLFNBQUEsQ0FBVTJMLEtBQUssQ0FBQXpMLElBQUEsQ0FBQzBQLElBQUFBLEVBQUFBLElBQUksRUFBRU8sTUFBTSxDQUFDLENBQUE7RUFDbkMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFyTixFQUFBQSxNQUFBLENBSUE2TixVQUFVLEdBQVYsU0FBQUEsVUFBQUEsQ0FBV3BJLFFBQVEsRUFBRTtNQUNuQkEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDaUksTUFBTSxHQUFHLElBQUksQ0FBQ3hjLENBQUMsQ0FBQzRRLFFBQVEsRUFBRSxDQUFBO0VBRXhDLElBQUEsSUFBSSxJQUFJLENBQUMyTCxJQUFJLEVBQUVqUCxRQUFRLENBQUNpSCxJQUFJLENBQUNrSSxNQUFNLEdBQUduUCxRQUFRLENBQUNpSCxJQUFJLENBQUNpSSxNQUFNLENBQUMsS0FDdERsUCxRQUFRLENBQUNpSCxJQUFJLENBQUNrSSxNQUFNLEdBQUcsSUFBSSxDQUFDeGMsQ0FBQyxDQUFDMlEsUUFBUSxFQUFFLENBQUE7RUFDL0MsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBL0ksTUFBQSxDQU1BeU4sY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVoSSxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssRUFBRTtNQUNwQyxJQUFJLENBQUMwSCxTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxDQUFDLENBQUE7TUFFckMrSCxRQUFRLENBQUM4RyxLQUFLLEdBQUc5RyxRQUFRLENBQUNpSCxJQUFJLENBQUNrSSxNQUFNLEdBQUcsQ0FBQ25QLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ2lJLE1BQU0sR0FBR2xQLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ2tJLE1BQU0sSUFBSSxJQUFJLENBQUMxSCxNQUFNLENBQUE7TUFFbkcsSUFBSXpILFFBQVEsQ0FBQzhHLEtBQUssR0FBRyxLQUFLLEVBQUU5RyxRQUFRLENBQUM4RyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0tBQy9DLENBQUE7RUFBQSxFQUFBLE9BQUFrSSxLQUFBLENBQUE7RUFBQSxDQUFBLENBNUVnQzlCLFNBQVM7O0VDSjVDO0VBQ0E7RUFDQTtFQUNBO0FBQ3FCa0MsTUFBQUEsS0FBSywwQkFBQTdCLFVBQUEsRUFBQTtJQUFBbEQsY0FBQSxDQUFBK0UsS0FBQSxFQUFBN0IsVUFBQSxDQUFBLENBQUE7RUFDeEI7RUFDRjtFQUNBO0VBQ0E7O0VBR0U7RUFDRjtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQTZCLEtBQUFBLENBQVkxYyxDQUFDLEVBQUVDLENBQUMsRUFBRTBVLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQzlCQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUFDaEwsSUFBQUEsS0FBQSxDQWZ0QnFTLElBQUksR0FBQSxLQUFBLENBQUEsQ0FBQTtFQUFBclMsSUFBQUEsS0FBQSxDQUtKSixJQUFJLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFZRkksSUFBQUEsS0FBQSxDQUFLd0csS0FBSyxDQUFDMVEsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQTtNQUNoQmlLLEtBQUEsQ0FBS0osSUFBSSxHQUFHLE9BQU8sQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQ3RCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFORSxFQUFBLElBQUFyQyxNQUFBLEdBQUE2VSxLQUFBLENBQUEzWCxTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FPQTZJLEtBQUssR0FBTCxTQUFBQSxLQUFNMVEsQ0FBQUEsQ0FBQyxFQUFFQyxDQUFDLEVBQUUwVSxJQUFJLEVBQUVPLE1BQU0sRUFBRTtNQUN4QixJQUFJLENBQUNxSCxJQUFJLEdBQUd0YyxDQUFDLEtBQUssSUFBSSxJQUFJQSxDQUFDLEtBQUsyRSxTQUFTLENBQUE7RUFDekMsSUFBQSxJQUFJLENBQUM1RSxDQUFDLEdBQUcyUSxJQUFJLENBQUNFLFlBQVksQ0FBQ3RJLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3pFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO01BQ2hELElBQUksQ0FBQ0MsQ0FBQyxHQUFHMFEsSUFBSSxDQUFDRSxZQUFZLENBQUM1USxDQUFDLENBQUMsQ0FBQTtFQUU3QjBVLElBQUFBLElBQUksSUFBQWtHLFVBQUEsQ0FBQTlWLFNBQUEsQ0FBVTJMLEtBQUssQ0FBQXpMLElBQUEsQ0FBQzBQLElBQUFBLEVBQUFBLElBQUksRUFBRU8sTUFBTSxDQUFDLENBQUE7RUFDbkMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFyTixFQUFBQSxNQUFBLENBSUE2TixVQUFVLEdBQVYsU0FBQUEsVUFBQUEsQ0FBV3BJLFFBQVEsRUFBRTtNQUNuQkEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDb0ksTUFBTSxHQUFHLElBQUksQ0FBQzNjLENBQUMsQ0FBQzRRLFFBQVEsRUFBRSxDQUFBO0VBQ3hDdEQsSUFBQUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDNkYsU0FBUyxHQUFHOU0sUUFBUSxDQUFDMEgsTUFBTSxDQUFBO01BQ3pDMUgsUUFBUSxDQUFDaUgsSUFBSSxDQUFDcUksTUFBTSxHQUFHLElBQUksQ0FBQ0wsSUFBSSxHQUFHalAsUUFBUSxDQUFDaUgsSUFBSSxDQUFDb0ksTUFBTSxHQUFHLElBQUksQ0FBQzFjLENBQUMsQ0FBQzJRLFFBQVEsRUFBRSxDQUFBO0VBQzdFLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7SUFBQS9JLE1BQUEsQ0FNQXlOLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaEksUUFBUSxFQUFFSCxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7TUFDcEMsSUFBSSxDQUFDMEgsU0FBUyxDQUFDSyxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssQ0FBQyxDQUFBO01BQ3JDK0gsUUFBUSxDQUFDaEwsS0FBSyxHQUFHZ0wsUUFBUSxDQUFDaUgsSUFBSSxDQUFDcUksTUFBTSxHQUFHLENBQUN0UCxRQUFRLENBQUNpSCxJQUFJLENBQUNvSSxNQUFNLEdBQUdyUCxRQUFRLENBQUNpSCxJQUFJLENBQUNxSSxNQUFNLElBQUksSUFBSSxDQUFDN0gsTUFBTSxDQUFBO01BRW5HLElBQUl6SCxRQUFRLENBQUNoTCxLQUFLLEdBQUcsTUFBTSxFQUFFZ0wsUUFBUSxDQUFDaEwsS0FBSyxHQUFHLENBQUMsQ0FBQTtNQUMvQ2dMLFFBQVEsQ0FBQzBILE1BQU0sR0FBRzFILFFBQVEsQ0FBQ2lILElBQUksQ0FBQzZGLFNBQVMsR0FBRzlNLFFBQVEsQ0FBQ2hMLEtBQUssQ0FBQTtLQUMzRCxDQUFBO0VBQUEsRUFBQSxPQUFBb2EsS0FBQSxDQUFBO0VBQUEsQ0FBQSxDQS9EZ0NsQyxTQUFTOztFQ0o1QztFQUNBO0VBQ0E7RUFDQTtBQUNxQnFDLE1BQUFBLE1BQU0sMEJBQUFoQyxVQUFBLEVBQUE7SUFBQWxELGNBQUEsQ0FBQWtGLE1BQUEsRUFBQWhDLFVBQUEsQ0FBQSxDQUFBO0VBQ3pCO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTtFQUNBOztFQUdFO0VBQ0Y7RUFDQTs7RUFHRTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQWdDLE1BQUFBLENBQVlDLFNBQVMsRUFBRTdjLENBQUMsRUFBRTJCLEtBQUssRUFBRStTLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQzdDQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUFDaEwsSUFBQUEsS0FBQSxDQWxDdEJxUyxJQUFJLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQXJTLElBQUFBLEtBQUEsQ0FNSmxLLENBQUMsR0FBQSxLQUFBLENBQUEsQ0FBQTtFQUFBa0ssSUFBQUEsS0FBQSxDQU1EakssQ0FBQyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUFpSyxJQUFBQSxLQUFBLENBTUR0SSxLQUFLLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQXNJLElBQUFBLEtBQUEsQ0FLTEosSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO01BYUZJLEtBQUEsQ0FBS3dHLEtBQUssQ0FBQ29NLFNBQVMsRUFBRTdjLENBQUMsRUFBRTJCLEtBQUssQ0FBQyxDQUFBO01BQy9Cc0ksS0FBQSxDQUFLSixJQUFJLEdBQUcsUUFBUSxDQUFBO0VBQUMsSUFBQSxPQUFBSSxLQUFBLENBQUE7RUFDdkIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBUEUsRUFBQSxJQUFBckMsTUFBQSxHQUFBZ1YsTUFBQSxDQUFBOVgsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBUUE2SSxLQUFLLEdBQUwsU0FBQUEsTUFBTTFRLENBQUMsRUFBRUMsQ0FBQyxFQUFFMkIsS0FBSyxFQUFFK1MsSUFBSSxFQUFFTyxNQUFNLEVBQUU7TUFDL0IsSUFBSSxDQUFDcUgsSUFBSSxHQUFHdGMsQ0FBQyxLQUFLLElBQUksSUFBSUEsQ0FBQyxLQUFLMkUsU0FBUyxDQUFBO0VBRXpDLElBQUEsSUFBSSxDQUFDNUUsQ0FBQyxHQUFHMlEsSUFBSSxDQUFDRSxZQUFZLENBQUN0SSxJQUFJLENBQUM5RCxTQUFTLENBQUN6RSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtFQUN6RCxJQUFBLElBQUksQ0FBQ0MsQ0FBQyxHQUFHMFEsSUFBSSxDQUFDRSxZQUFZLENBQUN0SSxJQUFJLENBQUM5RCxTQUFTLENBQUN4RSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtNQUNoRCxJQUFJLENBQUMyQixLQUFLLEdBQUcyRyxJQUFJLENBQUM5RCxTQUFTLENBQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7RUFFeEMrUyxJQUFBQSxJQUFJLElBQUFrRyxVQUFBLENBQUE5VixTQUFBLENBQVUyTCxLQUFLLENBQUF6TCxJQUFBLENBQUMwUCxJQUFBQSxFQUFBQSxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxDQUFBO0VBQ25DLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7RUFBQXJOLEVBQUFBLE1BQUEsQ0FNQTZOLFVBQVUsR0FBVixTQUFBQSxVQUFBQSxDQUFXcEksUUFBUSxFQUFFO01BQ25CQSxRQUFRLENBQUMySCxRQUFRLEdBQUcsSUFBSSxDQUFDalYsQ0FBQyxDQUFDNFEsUUFBUSxFQUFFLENBQUE7TUFDckN0RCxRQUFRLENBQUNpSCxJQUFJLENBQUN3SSxTQUFTLEdBQUcsSUFBSSxDQUFDL2MsQ0FBQyxDQUFDNFEsUUFBUSxFQUFFLENBQUE7RUFFM0MsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDMkwsSUFBSSxFQUFFalAsUUFBUSxDQUFDaUgsSUFBSSxDQUFDeUksU0FBUyxHQUFHLElBQUksQ0FBQy9jLENBQUMsQ0FBQzJRLFFBQVEsRUFBRSxDQUFBO0VBQzdELEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7SUFBQS9JLE1BQUEsQ0FNQXlOLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaEksUUFBUSxFQUFFSCxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7TUFDcEMsSUFBSSxDQUFDMEgsU0FBUyxDQUFDSyxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssQ0FBQyxDQUFBO0VBRXJDLElBQUEsSUFBSSxDQUFDLElBQUksQ0FBQ2dYLElBQUksRUFBRTtFQUNkLE1BQUEsSUFBSSxJQUFJLENBQUMzYSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQ0EsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUNBLEtBQUssS0FBSyxHQUFHLEVBQUU7VUFDcEUwTCxRQUFRLENBQUMySCxRQUFRLElBQ2YzSCxRQUFRLENBQUNpSCxJQUFJLENBQUN5SSxTQUFTLEdBQUcsQ0FBQzFQLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3dJLFNBQVMsR0FBR3pQLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3lJLFNBQVMsSUFBSSxJQUFJLENBQUNqSSxNQUFNLENBQUE7RUFDL0YsT0FBQyxNQUFNO0VBQ0x6SCxRQUFBQSxRQUFRLENBQUMySCxRQUFRLElBQUkzSCxRQUFRLENBQUNpSCxJQUFJLENBQUN5SSxTQUFTLENBQUE7RUFDOUMsT0FBQTtPQUNELE1BQU0sSUFBSSxJQUFJLENBQUNoZCxDQUFDLENBQUNBLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDQSxDQUFDLENBQUNBLENBQUMsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDQSxDQUFDLENBQUNBLENBQUMsS0FBSyxHQUFHLEVBQUU7RUFDMUU7RUFDQXNOLE1BQUFBLFFBQVEsQ0FBQzJILFFBQVEsR0FBRzNILFFBQVEsQ0FBQ29ILFlBQVksRUFBRSxDQUFBO0VBQzdDLEtBQUE7S0FDRCxDQUFBO0VBQUEsRUFBQSxPQUFBbUksTUFBQSxDQUFBO0VBQUEsQ0FBQSxDQWhHaUNyQyxTQUFTOztBQ0p4QnlDLE1BQUFBLEtBQUssMEJBQUFwQyxVQUFBLEVBQUE7SUFBQWxELGNBQUEsQ0FBQXNGLEtBQUEsRUFBQXBDLFVBQUEsQ0FBQSxDQUFBO0VBQ3hCO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQW9DLEtBQUFBLENBQVlqZCxDQUFDLEVBQUVDLENBQUMsRUFBRTBVLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQzlCQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUVuQmhMLElBQUFBLEtBQUEsQ0FBS3dHLEtBQUssQ0FBQzFRLENBQUMsRUFBRUMsQ0FBQyxDQUFDLENBQUE7TUFDaEJpSyxLQUFBLENBQUtKLElBQUksR0FBRyxPQUFPLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUN0QixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVhFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQW9WLEtBQUEsQ0FBQWxZLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQVlBNkksS0FBSyxHQUFMLFNBQUFBLEtBQU0xUSxDQUFBQSxDQUFDLEVBQUVDLENBQUMsRUFBRTBVLElBQUksRUFBRU8sTUFBTSxFQUFFO01BQ3hCLElBQUksQ0FBQ2xWLENBQUMsR0FBR3lYLFNBQVMsQ0FBQ0ksZUFBZSxDQUFDN1gsQ0FBQyxDQUFDLENBQUE7TUFDckMsSUFBSSxDQUFDQyxDQUFDLEdBQUd3WCxTQUFTLENBQUNJLGVBQWUsQ0FBQzVYLENBQUMsQ0FBQyxDQUFBO0VBQ3JDMFUsSUFBQUEsSUFBSSxJQUFBa0csVUFBQSxDQUFBOVYsU0FBQSxDQUFVMkwsS0FBSyxDQUFBekwsSUFBQSxDQUFDMFAsSUFBQUEsRUFBQUEsSUFBSSxFQUFFTyxNQUFNLENBQUMsQ0FBQTtFQUNuQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQVJFO0VBQUFyTixFQUFBQSxNQUFBLENBU0E2TixVQUFVLEdBQVYsU0FBQUEsVUFBQUEsQ0FBV3BJLFFBQVEsRUFBRTtNQUNuQkEsUUFBUSxDQUFDL0MsS0FBSyxHQUFHLElBQUksQ0FBQ3ZLLENBQUMsQ0FBQzRRLFFBQVEsRUFBRSxDQUFBO0VBQ2xDdEQsSUFBQUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDMkksTUFBTSxHQUFHQyxTQUFTLENBQUN0SCxRQUFRLENBQUN2SSxRQUFRLENBQUMvQyxLQUFLLENBQUMsQ0FBQTtNQUV6RCxJQUFJLElBQUksQ0FBQ3RLLENBQUMsRUFBRXFOLFFBQVEsQ0FBQ2lILElBQUksQ0FBQzZJLE1BQU0sR0FBR0QsU0FBUyxDQUFDdEgsUUFBUSxDQUFDLElBQUksQ0FBQzVWLENBQUMsQ0FBQzJRLFFBQVEsRUFBRSxDQUFDLENBQUE7RUFDMUUsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BVkU7SUFBQS9JLE1BQUEsQ0FXQXlOLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaEksUUFBUSxFQUFFSCxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7TUFDcEMsSUFBSSxJQUFJLENBQUN0RixDQUFDLEVBQUU7UUFDVixJQUFJLENBQUNnTixTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxDQUFDLENBQUE7RUFFckMrSCxNQUFBQSxRQUFRLENBQUNrSCxHQUFHLENBQUNoRSxDQUFDLEdBQUdsRCxRQUFRLENBQUNpSCxJQUFJLENBQUM2SSxNQUFNLENBQUM1TSxDQUFDLEdBQUcsQ0FBQ2xELFFBQVEsQ0FBQ2lILElBQUksQ0FBQzJJLE1BQU0sQ0FBQzFNLENBQUMsR0FBR2xELFFBQVEsQ0FBQ2lILElBQUksQ0FBQzZJLE1BQU0sQ0FBQzVNLENBQUMsSUFBSSxJQUFJLENBQUN1RSxNQUFNLENBQUE7RUFDekd6SCxNQUFBQSxRQUFRLENBQUNrSCxHQUFHLENBQUMvRCxDQUFDLEdBQUduRCxRQUFRLENBQUNpSCxJQUFJLENBQUM2SSxNQUFNLENBQUMzTSxDQUFDLEdBQUcsQ0FBQ25ELFFBQVEsQ0FBQ2lILElBQUksQ0FBQzJJLE1BQU0sQ0FBQ3pNLENBQUMsR0FBR25ELFFBQVEsQ0FBQ2lILElBQUksQ0FBQzZJLE1BQU0sQ0FBQzNNLENBQUMsSUFBSSxJQUFJLENBQUNzRSxNQUFNLENBQUE7RUFDekd6SCxNQUFBQSxRQUFRLENBQUNrSCxHQUFHLENBQUN2VSxDQUFDLEdBQUdxTixRQUFRLENBQUNpSCxJQUFJLENBQUM2SSxNQUFNLENBQUNuZCxDQUFDLEdBQUcsQ0FBQ3FOLFFBQVEsQ0FBQ2lILElBQUksQ0FBQzJJLE1BQU0sQ0FBQ2pkLENBQUMsR0FBR3FOLFFBQVEsQ0FBQ2lILElBQUksQ0FBQzZJLE1BQU0sQ0FBQ25kLENBQUMsSUFBSSxJQUFJLENBQUM4VSxNQUFNLENBQUE7UUFFekd6SCxRQUFRLENBQUNrSCxHQUFHLENBQUNoRSxDQUFDLEdBQUdsRCxRQUFRLENBQUNrSCxHQUFHLENBQUNoRSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BDbEQsUUFBUSxDQUFDa0gsR0FBRyxDQUFDL0QsQ0FBQyxHQUFHbkQsUUFBUSxDQUFDa0gsR0FBRyxDQUFDL0QsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwQ25ELFFBQVEsQ0FBQ2tILEdBQUcsQ0FBQ3ZVLENBQUMsR0FBR3FOLFFBQVEsQ0FBQ2tILEdBQUcsQ0FBQ3ZVLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDdEMsS0FBQyxNQUFNO1FBQ0xxTixRQUFRLENBQUNrSCxHQUFHLENBQUNoRSxDQUFDLEdBQUdsRCxRQUFRLENBQUNpSCxJQUFJLENBQUMySSxNQUFNLENBQUMxTSxDQUFDLENBQUE7UUFDdkNsRCxRQUFRLENBQUNrSCxHQUFHLENBQUMvRCxDQUFDLEdBQUduRCxRQUFRLENBQUNpSCxJQUFJLENBQUMySSxNQUFNLENBQUN6TSxDQUFDLENBQUE7UUFDdkNuRCxRQUFRLENBQUNrSCxHQUFHLENBQUN2VSxDQUFDLEdBQUdxTixRQUFRLENBQUNpSCxJQUFJLENBQUMySSxNQUFNLENBQUNqZCxDQUFDLENBQUE7RUFDekMsS0FBQTtLQUNELENBQUE7RUFBQSxFQUFBLE9BQUFnZCxLQUFBLENBQUE7RUFBQSxDQUFBLENBbEZnQ3pDLFNBQVM7O0VDQzVDLElBQU02QyxRQUFRLEdBQUcsVUFBVSxDQUFBO0FBRU5DLE1BQUFBLE9BQU8sMEJBQUF6QyxVQUFBLEVBQUE7SUFBQWxELGNBQUEsQ0FBQTJGLE9BQUEsRUFBQXpDLFVBQUEsQ0FBQSxDQUFBO0VBQzFCO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQXlDLE9BQUFBLENBQVlDLEtBQUssRUFBRTdDLEtBQUssRUFBRS9GLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO01BQ3RDQSxLQUFBLEdBQUEyUSxVQUFBLENBQUE1VixJQUFBLE9BQU0wUCxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUNuQmhMLElBQUFBLEtBQUEsQ0FBS3NULGdCQUFnQixDQUFDRCxLQUFLLEVBQUU3QyxLQUFLLENBQUMsQ0FBQTtNQUNuQ3hRLEtBQUEsQ0FBS0osSUFBSSxHQUFHLFNBQVMsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQ3hCLEdBQUE7RUFBQyxFQUFBLElBQUFyQyxNQUFBLEdBQUF5VixPQUFBLENBQUF2WSxTQUFBLENBQUE7SUFBQThDLE1BQUEsQ0FFRDJWLGdCQUFnQixHQUFoQixTQUFBQSxpQkFBaUJELEtBQUssRUFBRTdDLEtBQUssRUFBRTtNQUM3QixJQUFJLENBQUNBLEtBQUssR0FBRzJDLFFBQVEsQ0FBQTtFQUNyQixJQUFBLElBQUksQ0FBQ0UsS0FBSyxHQUFHM1IsUUFBUSxDQUFDSCxFQUFFLEdBQUcsQ0FBQyxDQUFBO01BRTVCLElBQUk4UixLQUFLLEtBQUssT0FBTyxFQUFFO0VBQ3JCLE1BQUEsSUFBSSxDQUFDQSxLQUFLLEdBQUczUixRQUFRLENBQUNILEVBQUUsR0FBRyxDQUFDLENBQUE7RUFDOUIsS0FBQyxNQUFNLElBQUk4UixLQUFLLEtBQUssTUFBTSxFQUFFO1FBQzNCLElBQUksQ0FBQ0EsS0FBSyxHQUFHLENBQUMzUixRQUFRLENBQUNILEVBQUUsR0FBRyxDQUFDLENBQUE7RUFDL0IsS0FBQyxNQUFNLElBQUk4UixLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLElBQUksQ0FBQ0EsS0FBSyxHQUFHLFFBQVEsQ0FBQTtFQUN2QixLQUFDLE1BQU0sSUFBSUEsS0FBSyxZQUFZNU0sSUFBSSxFQUFFO1FBQ2hDLElBQUksQ0FBQzRNLEtBQUssR0FBRyxNQUFNLENBQUE7UUFDbkIsSUFBSSxDQUFDRSxJQUFJLEdBQUdGLEtBQUssQ0FBQTtPQUNsQixNQUFNLElBQUlBLEtBQUssRUFBRTtRQUNoQixJQUFJLENBQUNBLEtBQUssR0FBR0EsS0FBSyxDQUFBO0VBQ3BCLEtBQUE7RUFFQSxJQUFBLElBQ0VHLE1BQU0sQ0FBQ2hELEtBQUssQ0FBQyxDQUFDaUQsV0FBVyxFQUFFLEtBQUssVUFBVSxJQUMxQ0QsTUFBTSxDQUFDaEQsS0FBSyxDQUFDLENBQUNpRCxXQUFXLEVBQUUsS0FBSyxPQUFPLElBQ3ZDRCxNQUFNLENBQUNoRCxLQUFLLENBQUMsQ0FBQ2lELFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFDdEM7UUFDQSxJQUFJLENBQUNqRCxLQUFLLEdBQUcyQyxRQUFRLENBQUE7T0FDdEIsTUFBTSxJQUFJM0MsS0FBSyxFQUFFO1FBQ2hCLElBQUksQ0FBQ0EsS0FBSyxHQUFHQSxLQUFLLENBQUE7RUFDcEIsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BWEU7RUFBQTdTLEVBQUFBLE1BQUEsQ0FZQTZJLEtBQUssR0FBTCxTQUFBQSxLQUFNNk0sQ0FBQUEsS0FBSyxFQUFFN0MsS0FBSyxFQUFFL0YsSUFBSSxFQUFFTyxNQUFNLEVBQUU7RUFDaEMsSUFBQSxJQUFJLENBQUNxSSxLQUFLLEdBQUczUixRQUFRLENBQUNILEVBQUUsR0FBRyxDQUFDLENBQUE7RUFDNUIsSUFBQSxJQUFJLENBQUMrUixnQkFBZ0IsQ0FBQ0QsS0FBSyxFQUFFN0MsS0FBSyxDQUFDLENBQUE7RUFDbkMvRixJQUFBQSxJQUFJLElBQUFrRyxVQUFBLENBQUE5VixTQUFBLENBQVUyTCxLQUFLLENBQUF6TCxJQUFBLENBQUMwUCxJQUFBQSxFQUFBQSxJQUFJLEVBQUVPLE1BQU0sQ0FBQyxDQUFBO0tBQ2xDLENBQUE7RUFBQXJOLEVBQUFBLE1BQUEsQ0FFRDZOLFVBQVUsR0FBVixTQUFBQSxVQUFBQSxDQUFXcEksUUFBUSxFQUFFO0VBQ25CLElBQUEsSUFBSSxJQUFJLENBQUNpUSxLQUFLLEtBQUssUUFBUSxFQUFFO0VBQzNCalEsTUFBQUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDcUosTUFBTSxHQUFHaFMsUUFBUSxDQUFDTSxVQUFVLENBQUMsQ0FBQ04sUUFBUSxDQUFDSCxFQUFFLEVBQUVHLFFBQVEsQ0FBQ0gsRUFBRSxDQUFDLENBQUE7RUFDdkUsS0FBQyxNQUFNLElBQUksSUFBSSxDQUFDOFIsS0FBSyxLQUFLLE1BQU0sRUFBRTtRQUNoQ2pRLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3FKLE1BQU0sR0FBRyxJQUFJLENBQUNILElBQUksQ0FBQzdNLFFBQVEsRUFBRSxDQUFBO0VBQzdDLEtBQUE7TUFFQXRELFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3NKLE9BQU8sR0FBRyxJQUFJOUssUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUM1QyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFWRTtJQUFBbEwsTUFBQSxDQVdBeU4sY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVoSSxRQUFRLEVBQUVILElBQUksRUFBRTVILEtBQUssRUFBRTtNQUNwQyxJQUFJLENBQUMwSCxTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFNUgsS0FBSyxDQUFDLENBQUE7RUFFckMsSUFBQSxJQUFJeEcsTUFBTSxDQUFBO01BQ1YsSUFBSStlLFFBQVEsR0FBR3hRLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDd0YsV0FBVyxFQUFFLENBQUE7TUFDdkMsSUFBSSxJQUFJLENBQUNxSyxLQUFLLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQ0EsS0FBSyxLQUFLLE1BQU0sRUFBRTtFQUNwRE8sTUFBQUEsUUFBUSxJQUFJeFEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDcUosTUFBTSxDQUFBO0VBQ2xDLEtBQUMsTUFBTTtRQUNMRSxRQUFRLElBQUksSUFBSSxDQUFDUCxLQUFLLENBQUE7RUFDeEIsS0FBQTtFQUVBLElBQUEsSUFBSSxJQUFJLENBQUM3QyxLQUFLLEtBQUsyQyxRQUFRLEVBQUU7UUFDM0J0ZSxNQUFNLEdBQUd1TyxRQUFRLENBQUNJLENBQUMsQ0FBQzNPLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQTtFQUNwQyxLQUFDLE1BQU07UUFDTEEsTUFBTSxHQUFHLElBQUksQ0FBQzJiLEtBQUssQ0FBQTtFQUNyQixLQUFBO0VBRUFwTixJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUNzSixPQUFPLENBQUN6YixDQUFDLEdBQUdyRCxNQUFNLEdBQUdTLElBQUksQ0FBQ0MsR0FBRyxDQUFDcWUsUUFBUSxDQUFDLENBQUE7RUFDckR4USxJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUNzSixPQUFPLENBQUN4YixDQUFDLEdBQUd0RCxNQUFNLEdBQUdTLElBQUksQ0FBQ0csR0FBRyxDQUFDbWUsUUFBUSxDQUFDLENBQUE7RUFDckR4USxJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUNzSixPQUFPLEdBQUcsSUFBSSxDQUFDcEQsY0FBYyxDQUFDbk4sUUFBUSxDQUFDaUgsSUFBSSxDQUFDc0osT0FBTyxDQUFDLENBQUE7TUFDbEV2USxRQUFRLENBQUN0TixDQUFDLENBQUNrSixHQUFHLENBQUNvRSxRQUFRLENBQUNpSCxJQUFJLENBQUNzSixPQUFPLENBQUMsQ0FBQTtLQUN0QyxDQUFBO0VBQUEsRUFBQSxPQUFBUCxPQUFBLENBQUE7RUFBQSxDQUFBLENBNUdrQzlDLFNBQVM7O0VDTDlDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDcUJ1RCxNQUFBQSxTQUFTLDBCQUFBQyxXQUFBLEVBQUE7SUFBQXJHLGNBQUEsQ0FBQW9HLFNBQUEsRUFBQUMsV0FBQSxDQUFBLENBQUE7RUFDNUI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRSxTQUFBRCxTQUFBQSxDQUFZOUMsY0FBYyxFQUFFUCxLQUFLLEVBQUUxRixNQUFNLEVBQUVMLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQUEsSUFBQSxJQUFBaEwsS0FBQSxDQUFBO0VBQ3ZEQSxJQUFBQSxLQUFBLEdBQUE4VCxXQUFBLENBQUEvWSxJQUFBLE9BQU1nVyxjQUFjLEVBQUVQLEtBQUssRUFBRTFGLE1BQU0sRUFBRUwsSUFBSSxFQUFFTyxNQUFNLENBQUMsSUFBQSxJQUFBLENBQUE7O0VBRWxEO0VBQ0o7RUFDQTtFQUNBO0VBQ0loTCxJQUFBQSxLQUFBLENBQUt3USxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUE7O0VBRWhCO0VBQ0o7RUFDQTtFQUNBO01BQ0l4USxLQUFBLENBQUtKLElBQUksR0FBRyxXQUFXLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUMxQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVJFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQWtXLFNBQUEsQ0FBQWhaLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQVNBNkksS0FBSyxHQUFMLFNBQUFBLE1BQU11SyxjQUFjLEVBQUVQLEtBQUssRUFBRTFGLE1BQU0sRUFBRUwsSUFBSSxFQUFFTyxNQUFNLEVBQUU7RUFDakQ4SSxJQUFBQSxXQUFBLENBQUFqWixTQUFBLENBQU0yTCxLQUFLLENBQUF6TCxJQUFBLENBQUEsSUFBQSxFQUFDZ1csY0FBYyxFQUFFUCxLQUFLLEVBQUUxRixNQUFNLEVBQUVMLElBQUksRUFBRU8sTUFBTSxDQUFBLENBQUE7RUFDdkQsSUFBQSxJQUFJLENBQUN3RixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUE7S0FDakIsQ0FBQTtFQUFBLEVBQUEsT0FBQXFELFNBQUEsQ0FBQTtFQUFBLENBQUEsQ0F2Q29DL0MsVUFBVTs7QUNONUJpRCxNQUFBQSxXQUFXLDBCQUFBcEQsVUFBQSxFQUFBO0lBQUFsRCxjQUFBLENBQUFzRyxXQUFBLEVBQUFwRCxVQUFBLENBQUEsQ0FBQTtFQUM5QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUFvRCxXQUFBQSxDQUFZQyxXQUFXLEVBQUV4RCxLQUFLLEVBQUUvRixJQUFJLEVBQUVPLE1BQU0sRUFBRTtFQUFBLElBQUEsSUFBQWhMLEtBQUEsQ0FBQTtNQUM1Q0EsS0FBQSxHQUFBMlEsVUFBQSxDQUFBNVYsSUFBQSxPQUFNMFAsSUFBSSxFQUFFTyxNQUFNLENBQUMsSUFBQSxJQUFBLENBQUE7RUFFbkJoTCxJQUFBQSxLQUFBLENBQUtpVSxXQUFXLEdBQUcsSUFBSXBMLFFBQVEsRUFBRSxDQUFBO0VBQ2pDN0ksSUFBQUEsS0FBQSxDQUFLZ1UsV0FBVyxHQUFHM1YsSUFBSSxDQUFDOUQsU0FBUyxDQUFDeVosV0FBVyxFQUFFLElBQUluTCxRQUFRLEVBQUUsQ0FBQyxDQUFBO0VBQzlEN0ksSUFBQUEsS0FBQSxDQUFLd1EsS0FBSyxHQUFHblMsSUFBSSxDQUFDOUQsU0FBUyxDQUFDeUYsS0FBQSxDQUFLeVEsY0FBYyxDQUFDRCxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtNQUU1RHhRLEtBQUEsQ0FBS0osSUFBSSxHQUFHLGFBQWEsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQzVCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBWEUsRUFBQSxJQUFBckMsTUFBQSxHQUFBb1csV0FBQSxDQUFBbFosU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBWUE2SSxLQUFLLEdBQUwsU0FBQUEsS0FBTXdOLENBQUFBLFdBQVcsRUFBRXhELEtBQUssRUFBRS9GLElBQUksRUFBRU8sTUFBTSxFQUFFO0VBQ3RDLElBQUEsSUFBSSxDQUFDaUosV0FBVyxHQUFHLElBQUlwTCxRQUFRLEVBQUUsQ0FBQTtFQUNqQyxJQUFBLElBQUksQ0FBQ21MLFdBQVcsR0FBRzNWLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3laLFdBQVcsRUFBRSxJQUFJbkwsUUFBUSxFQUFFLENBQUMsQ0FBQTtFQUM5RCxJQUFBLElBQUksQ0FBQzJILEtBQUssR0FBR25TLElBQUksQ0FBQzlELFNBQVMsQ0FBQyxJQUFJLENBQUNrVyxjQUFjLENBQUNELEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0VBRTVEL0YsSUFBQUEsSUFBSSxJQUFBa0csVUFBQSxDQUFBOVYsU0FBQSxDQUFVMkwsS0FBSyxDQUFBekwsSUFBQSxDQUFDMFAsSUFBQUEsRUFBQUEsSUFBSSxFQUFFTyxNQUFNLENBQUMsQ0FBQTtFQUNuQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQSxNQUZFO0VBQUFyTixFQUFBQSxNQUFBLENBR0E2TixVQUFVLEdBQVYsU0FBQUEsVUFBV3BJLENBQUFBLFFBQVEsRUFBRSxFQUFDOztFQUV0QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BVkU7SUFBQXpGLE1BQUEsQ0FXQXlOLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaEksUUFBUSxFQUFFSCxJQUFJLEVBQUU1SCxLQUFLLEVBQUU7RUFDcEMsSUFBQSxJQUFJLENBQUM0WSxXQUFXLENBQUNwTyxHQUFHLENBQUMsSUFBSSxDQUFDbU8sV0FBVyxDQUFDOWIsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxFQUFFLElBQUksQ0FBQzhiLFdBQVcsQ0FBQzdiLENBQUMsR0FBR2lMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsQ0FBQyxDQUFBO01BQzFGLElBQU0rYixVQUFVLEdBQUcsSUFBSSxDQUFDRCxXQUFXLENBQUN2SyxRQUFRLEVBQUUsQ0FBQTtNQUU5QyxJQUFJd0ssVUFBVSxLQUFLLENBQUMsRUFBRTtRQUNwQixJQUFNaEMsUUFBUSxHQUFHLElBQUksQ0FBQytCLFdBQVcsQ0FBQ3BmLE1BQU0sRUFBRSxDQUFBO1FBQzFDLElBQU1zZixNQUFNLEdBQUksSUFBSSxDQUFDM0QsS0FBSyxHQUFHdk4sSUFBSSxJQUFLaVIsVUFBVSxHQUFHaEMsUUFBUSxDQUFDLENBQUE7UUFFNUQ5TyxRQUFRLENBQUNJLENBQUMsQ0FBQ3RMLENBQUMsSUFBSWljLE1BQU0sR0FBRyxJQUFJLENBQUNGLFdBQVcsQ0FBQy9iLENBQUMsQ0FBQTtRQUMzQ2tMLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDckwsQ0FBQyxJQUFJZ2MsTUFBTSxHQUFHLElBQUksQ0FBQ0YsV0FBVyxDQUFDOWIsQ0FBQyxDQUFBO0VBQzdDLEtBQUE7S0FDRCxDQUFBO0VBQUEsRUFBQSxPQUFBNGIsV0FBQSxDQUFBO0VBQUEsQ0FBQSxDQXZFc0N6RCxTQUFTOztBQ0FsRCx1QkFBZTtFQUNiOUUsRUFBQUEsVUFBVSxXQUFBQSxVQUFDdk0sQ0FBQUEsT0FBTyxFQUFFbUUsUUFBUSxFQUFFM0QsV0FBVyxFQUFFO0VBQ3pDLElBQUEsSUFBTTVLLE1BQU0sR0FBRzRLLFdBQVcsQ0FBQzVLLE1BQU0sQ0FBQTtFQUNqQyxJQUFBLElBQUlFLENBQUMsQ0FBQTtNQUVMLEtBQUtBLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsTUFBTSxFQUFFRSxDQUFDLEVBQUUsRUFBRTtFQUMzQixNQUFBLElBQUkwSyxXQUFXLENBQUMxSyxDQUFDLENBQUMsWUFBWXdaLFVBQVUsRUFBRTtVQUN4QzlPLFdBQVcsQ0FBQzFLLENBQUMsQ0FBQyxDQUFDMFAsSUFBSSxDQUFDeEYsT0FBTyxFQUFFbUUsUUFBUSxDQUFDLENBQUE7RUFDeEMsT0FBQyxNQUFNO1VBQ0wsSUFBSSxDQUFDcUIsSUFBSSxDQUFDeEYsT0FBTyxFQUFFbUUsUUFBUSxFQUFFM0QsV0FBVyxDQUFDMUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUM5QyxPQUFBO0VBQ0YsS0FBQTtFQUVBLElBQUEsSUFBSSxDQUFDcWYsV0FBVyxDQUFDblYsT0FBTyxFQUFFbUUsUUFBUSxDQUFDLENBQUE7S0FDcEM7RUFFRDtFQUNBcUIsRUFBQUEsSUFBSSxXQUFBQSxJQUFDeEYsQ0FBQUEsT0FBTyxFQUFFbUUsUUFBUSxFQUFFb0ksVUFBVSxFQUFFO0VBQ2xDakIsSUFBQUEsUUFBUSxDQUFDeEQsT0FBTyxDQUFDM0QsUUFBUSxFQUFFb0ksVUFBVSxDQUFDLENBQUE7RUFDdENqQixJQUFBQSxRQUFRLENBQUNyRCxZQUFZLENBQUM5RCxRQUFRLEVBQUVvSSxVQUFVLENBQUMsQ0FBQTtLQUM1QztFQUVENEksRUFBQUEsV0FBVyxFQUFBQSxTQUFBQSxXQUFBQSxDQUFDblYsT0FBTyxFQUFFbUUsUUFBUSxFQUFFO01BQzdCLElBQUluRSxPQUFPLENBQUNtVixXQUFXLEVBQUU7UUFDdkJoUixRQUFRLENBQUN0RixDQUFDLENBQUNrQixHQUFHLENBQUNDLE9BQU8sQ0FBQ25CLENBQUMsQ0FBQyxDQUFBO1FBQ3pCc0YsUUFBUSxDQUFDSSxDQUFDLENBQUN4RSxHQUFHLENBQUNDLE9BQU8sQ0FBQ3VFLENBQUMsQ0FBQyxDQUFBO1FBQ3pCSixRQUFRLENBQUN0TixDQUFDLENBQUNrSixHQUFHLENBQUNDLE9BQU8sQ0FBQ25KLENBQUMsQ0FBQyxDQUFBO0VBQ3pCc04sTUFBQUEsUUFBUSxDQUFDSSxDQUFDLENBQUNuTCxNQUFNLENBQUNxSixRQUFRLENBQUNrQixlQUFlLENBQUMzRCxPQUFPLENBQUM4TCxRQUFRLENBQUMsQ0FBQyxDQUFBO0VBQy9ELEtBQUE7RUFDRixHQUFBO0VBQ0YsQ0FBQzs7QUMxQm9Cc0osTUFBQUEsT0FBTywwQkFBQUMsU0FBQSxFQUFBO0lBQUE3RyxjQUFBLENBQUE0RyxPQUFBLEVBQUFDLFNBQUEsQ0FBQSxDQUFBO0VBQzFCO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQUQsT0FBQUEsQ0FBWWxOLElBQUksRUFBTztFQUFBLElBQUEsSUFBQW5ILEtBQUEsQ0FBQTtFQUFBLElBQUEsSUFBWG1ILElBQUksS0FBQSxLQUFBLENBQUEsRUFBQTtRQUFKQSxJQUFJLEdBQUcsRUFBRSxDQUFBO0VBQUEsS0FBQTtFQUNuQm5ILElBQUFBLEtBQUEsR0FBQXNVLFNBQUEsQ0FBQXZaLElBQUEsQ0FBQSxJQUFBLEVBQU1vTSxJQUFJLENBQUMsSUFBQSxJQUFBLENBQUE7TUFFWG5ILEtBQUEsQ0FBS2dELFNBQVMsR0FBRyxFQUFFLENBQUE7TUFDbkJoRCxLQUFBLENBQUtMLFVBQVUsR0FBRyxFQUFFLENBQUE7TUFDcEJLLEtBQUEsQ0FBS1AsV0FBVyxHQUFHLEVBQUUsQ0FBQTtNQUVyQk8sS0FBQSxDQUFLdVUsUUFBUSxHQUFHLENBQUMsQ0FBQTtNQUNqQnZVLEtBQUEsQ0FBS1QsU0FBUyxHQUFHLENBQUMsQ0FBQTtFQUNsQlMsSUFBQUEsS0FBQSxDQUFLd1UsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFBOztFQUVuQjtFQUNKO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7TUFDSXhVLEtBQUEsQ0FBS2tELE9BQU8sR0FBRyxLQUFLLENBQUE7O0VBRXBCO0VBQ0o7RUFDQTtFQUNBO0VBQ0E7RUFDQTtNQUNJbEQsS0FBQSxDQUFLb1UsV0FBVyxHQUFHLElBQUksQ0FBQTs7RUFFdkI7RUFDSjtFQUNBO0VBQ0E7RUFDQTtFQUNBO01BQ0lwVSxLQUFBLENBQUt5VSxJQUFJLEdBQUcsSUFBSXpHLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7TUFFNUJoTyxLQUFBLENBQUtKLElBQUksR0FBRyxTQUFTLENBQUE7TUFDckJJLEtBQUEsQ0FBSzdJLEVBQUUsR0FBRzBGLElBQUksQ0FBQzFGLEVBQUUsQ0FBQzZJLEtBQUEsQ0FBS0osSUFBSSxDQUFDLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUMvQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUxFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQTBXLE9BQUEsQ0FBQXhaLFNBQUEsQ0FBQTtJQUFBOEMsTUFBQSxDQU1BK1csSUFBSSxHQUFKLFNBQUFBLEtBQUtGLFNBQVMsRUFBRS9KLElBQUksRUFBRTtNQUNwQixJQUFJLENBQUNrSyxNQUFNLEdBQUcsS0FBSyxDQUFBO01BQ25CLElBQUksQ0FBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQTtNQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR25XLElBQUksQ0FBQzlELFNBQVMsQ0FBQ2lhLFNBQVMsRUFBRS9TLFFBQVEsQ0FBQyxDQUFBO01BRXBELElBQUlnSixJQUFJLEtBQUssSUFBSSxJQUFJQSxJQUFJLEtBQUssTUFBTSxJQUFJQSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQzFELElBQUksQ0FBQ0EsSUFBSSxHQUFHK0osU0FBUyxLQUFLLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxTQUFTLENBQUE7RUFDdkQsS0FBQyxNQUFNLElBQUksQ0FBQ0ksS0FBSyxDQUFDbkssSUFBSSxDQUFDLEVBQUU7UUFDdkIsSUFBSSxDQUFDQSxJQUFJLEdBQUdBLElBQUksQ0FBQTtFQUNsQixLQUFBO0VBQ0EsSUFBQSxJQUFJLENBQUNnSyxJQUFJLENBQUNoUSxJQUFJLEVBQUUsQ0FBQTtFQUNsQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQTlHLEVBQUFBLE1BQUEsQ0FJQWtYLElBQUksR0FBSixTQUFBQSxPQUFPO0VBQ0wsSUFBQSxJQUFJLENBQUNMLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTtNQUNuQixJQUFJLENBQUNELFFBQVEsR0FBRyxDQUFDLENBQUE7TUFDakIsSUFBSSxDQUFDSSxNQUFNLEdBQUcsSUFBSSxDQUFBO0tBQ25CLENBQUE7RUFBQWhYLEVBQUFBLE1BQUEsQ0FFRG1YLE9BQU8sR0FBUCxTQUFBQSxPQUFBQSxDQUFRN1IsSUFBSSxFQUFFO0VBQ1osSUFBQSxJQUFJOFIsU0FBUyxHQUFHLElBQUksQ0FBQ0osTUFBTSxDQUFBO0VBQzNCLElBQUEsSUFBSUssV0FBVyxHQUFHLElBQUksQ0FBQ1QsUUFBUSxDQUFBO0VBQy9CLElBQUEsSUFBSVUsWUFBWSxHQUFHLElBQUksQ0FBQ1QsU0FBUyxDQUFBO01BRWpDLElBQUksQ0FBQ0csTUFBTSxHQUFHLEtBQUssQ0FBQTtNQUNuQixJQUFJLENBQUNKLFFBQVEsR0FBRyxDQUFDLENBQUE7TUFDakIsSUFBSSxDQUFDQyxTQUFTLEdBQUd2UixJQUFJLENBQUE7RUFDckIsSUFBQSxJQUFJLENBQUN3UixJQUFJLENBQUNoUSxJQUFJLEVBQUUsQ0FBQTtNQUVoQixJQUFNeVEsSUFBSSxHQUFHLE1BQU0sQ0FBQTtNQUNuQixPQUFPalMsSUFBSSxHQUFHaVMsSUFBSSxFQUFFO0VBQ2xCalMsTUFBQUEsSUFBSSxJQUFJaVMsSUFBSSxDQUFBO0VBQ1osTUFBQSxJQUFJLENBQUNwVyxNQUFNLENBQUNvVyxJQUFJLENBQUMsQ0FBQTtFQUNuQixLQUFBO01BRUEsSUFBSSxDQUFDUCxNQUFNLEdBQUdJLFNBQVMsQ0FBQTtFQUN2QixJQUFBLElBQUksQ0FBQ1IsUUFBUSxHQUFHUyxXQUFXLEdBQUcxZixJQUFJLENBQUM2VixHQUFHLENBQUNsSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7TUFDL0MsSUFBSSxDQUFDdVIsU0FBUyxHQUFHUyxZQUFZLENBQUE7RUFDL0IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUF0WCxFQUFBQSxNQUFBLENBSUF3WCxrQkFBa0IsR0FBbEIsU0FBQUEscUJBQXFCO0VBQ25CLElBQUEsSUFBSXBnQixDQUFDLEdBQUcsSUFBSSxDQUFDaU8sU0FBUyxDQUFDbk8sTUFBTSxDQUFBO0VBQzdCLElBQUEsT0FBT0UsQ0FBQyxFQUFFLEVBQUE7UUFBRSxJQUFJLENBQUNpTyxTQUFTLENBQUNqTyxDQUFDLENBQUMsQ0FBQzRWLElBQUksR0FBRyxJQUFJLENBQUE7RUFBQyxLQUFBO0VBQzVDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBaE4sRUFBQUEsTUFBQSxDQUlBeVgsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFBQSxDQUFrQjVKLFVBQVUsRUFBRTtFQUM1QixJQUFBLElBQUlBLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtFQUN0QkEsTUFBQUEsVUFBVSxDQUFDL0csSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ3ZCLEtBQ0U7RUFFSixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTkU7RUFBQTlHLEVBQUFBLE1BQUEsQ0FPQTBYLGFBQWEsR0FBYixTQUFBQSxnQkFBdUI7RUFBQSxJQUFBLEtBQUEsSUFBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUExZ0IsTUFBQSxFQUFOMmdCLElBQUksR0FBQUMsSUFBQUEsS0FBQSxDQUFBSCxJQUFBLEdBQUFJLElBQUEsR0FBQSxDQUFBLEVBQUFBLElBQUEsR0FBQUosSUFBQSxFQUFBSSxJQUFBLEVBQUEsRUFBQTtFQUFKRixNQUFBQSxJQUFJLENBQUFFLElBQUEsQ0FBQUgsR0FBQUEsU0FBQSxDQUFBRyxJQUFBLENBQUEsQ0FBQTtFQUFBLEtBQUE7RUFDbkIsSUFBQSxJQUFJM2dCLENBQUMsR0FBR3lnQixJQUFJLENBQUMzZ0IsTUFBTSxDQUFBO0VBQ25CLElBQUEsT0FBT0UsQ0FBQyxFQUFFLEVBQUE7UUFBRSxJQUFJLENBQUMwSyxXQUFXLENBQUNsRSxJQUFJLENBQUNpYSxJQUFJLENBQUN6Z0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFDLEtBQUE7RUFDN0MsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQTRJLEVBQUFBLE1BQUEsQ0FLQWdZLGdCQUFnQixHQUFoQixTQUFBQSxnQkFBQUEsQ0FBaUJDLFdBQVcsRUFBRTtNQUM1QixJQUFNdmEsS0FBSyxHQUFHLElBQUksQ0FBQ29FLFdBQVcsQ0FBQzNELE9BQU8sQ0FBQzhaLFdBQVcsQ0FBQyxDQUFBO0VBQ25ELElBQUEsSUFBSXZhLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNvRSxXQUFXLENBQUMyQixNQUFNLENBQUMvRixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7RUFDbkQsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFzQyxFQUFBQSxNQUFBLENBSUFrWSxxQkFBcUIsR0FBckIsU0FBQUEsd0JBQXdCO0VBQ3RCeFgsSUFBQUEsSUFBSSxDQUFDckQsVUFBVSxDQUFDLElBQUksQ0FBQ3lFLFdBQVcsQ0FBQyxDQUFBO0VBQ25DLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFORTtFQUFBOUIsRUFBQUEsTUFBQSxDQU9BME4sWUFBWSxHQUFaLFNBQUFBLGVBQXNCO0VBQUEsSUFBQSxLQUFBLElBQUF5SyxLQUFBLEdBQUFQLFNBQUEsQ0FBQTFnQixNQUFBLEVBQU4yZ0IsSUFBSSxHQUFBQyxJQUFBQSxLQUFBLENBQUFLLEtBQUEsR0FBQUMsS0FBQSxHQUFBLENBQUEsRUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUEsRUFBQSxFQUFBO0VBQUpQLE1BQUFBLElBQUksQ0FBQU8sS0FBQSxDQUFBUixHQUFBQSxTQUFBLENBQUFRLEtBQUEsQ0FBQSxDQUFBO0VBQUEsS0FBQTtFQUNsQixJQUFBLElBQUloaEIsQ0FBQyxHQUFHd2dCLFNBQVMsQ0FBQzFnQixNQUFNLENBQUE7TUFDeEIsT0FBT0UsQ0FBQyxFQUFFLEVBQUU7RUFDVixNQUFBLElBQUl1VyxTQUFTLEdBQUdrSyxJQUFJLENBQUN6Z0IsQ0FBQyxDQUFDLENBQUE7RUFDdkIsTUFBQSxJQUFJLENBQUM0SyxVQUFVLENBQUNwRSxJQUFJLENBQUMrUCxTQUFTLENBQUMsQ0FBQTtRQUMvQixJQUFJQSxTQUFTLENBQUNDLE9BQU8sRUFBRUQsU0FBUyxDQUFDQyxPQUFPLENBQUNoUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDckQsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFvQyxFQUFBQSxNQUFBLENBS0ErTixlQUFlLEdBQWYsU0FBQUEsZUFBQUEsQ0FBZ0JKLFNBQVMsRUFBRTtNQUN6QixJQUFJalEsS0FBSyxHQUFHLElBQUksQ0FBQ3NFLFVBQVUsQ0FBQzdELE9BQU8sQ0FBQ3dQLFNBQVMsQ0FBQyxDQUFBO01BQzlDLElBQUksQ0FBQzNMLFVBQVUsQ0FBQ3lCLE1BQU0sQ0FBQy9GLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtNQUVoQyxJQUFJaVEsU0FBUyxDQUFDQyxPQUFPLEVBQUU7UUFDckJsUSxLQUFLLEdBQUdpUSxTQUFTLENBQUNDLE9BQU8sQ0FBQ3pQLE9BQU8sQ0FBQ3dQLFNBQVMsQ0FBQyxDQUFBO1FBQzVDQSxTQUFTLENBQUNDLE9BQU8sQ0FBQ25LLE1BQU0sQ0FBQy9GLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUNwQyxLQUFBO0VBRUEsSUFBQSxPQUFPQSxLQUFLLENBQUE7RUFDZCxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQXNDLEVBQUFBLE1BQUEsQ0FJQXNOLG1CQUFtQixHQUFuQixTQUFBQSxzQkFBc0I7RUFDcEI1TSxJQUFBQSxJQUFJLENBQUNyRCxVQUFVLENBQUMsSUFBSSxDQUFDMkUsVUFBVSxDQUFDLENBQUE7RUFDbEMsR0FBQTs7RUFFQTtFQUFBLEdBQUE7RUFBQWhDLEVBQUFBLE1BQUEsQ0FDQW1CLE1BQU0sR0FBTixTQUFBQSxNQUFBQSxDQUFPbUUsSUFBSSxFQUFFO01BQ1gsSUFBSSxDQUFDeUgsR0FBRyxJQUFJekgsSUFBSSxDQUFBO0VBQ2hCLElBQUEsSUFBSSxJQUFJLENBQUN5SCxHQUFHLElBQUksSUFBSSxDQUFDRCxJQUFJLElBQUksSUFBSSxDQUFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDbk8sT0FBTyxFQUFFLENBQUE7RUFFdEQsSUFBQSxJQUFJLENBQUN3WixRQUFRLENBQUMvUyxJQUFJLENBQUMsQ0FBQTtFQUNuQixJQUFBLElBQUksQ0FBQ2dULFNBQVMsQ0FBQ2hULElBQUksQ0FBQyxDQUFBO0tBQ3JCLENBQUE7RUFBQXRGLEVBQUFBLE1BQUEsQ0FFRHNZLFNBQVMsR0FBVCxTQUFBQSxTQUFBQSxDQUFVaFQsSUFBSSxFQUFFO0VBQ2QsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDNEIsTUFBTSxFQUFFLE9BQUE7RUFFbEIsSUFBQSxJQUFNM0IsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNBLE9BQU8sQ0FBQTtFQUNoQyxJQUFBLElBQUksQ0FBQzJCLE1BQU0sQ0FBQ1YsVUFBVSxDQUFDcEIsU0FBUyxDQUFDLElBQUksRUFBRUUsSUFBSSxFQUFFQyxPQUFPLENBQUMsQ0FBQTtFQUVyRCxJQUFBLElBQU1yTyxNQUFNLEdBQUcsSUFBSSxDQUFDbU8sU0FBUyxDQUFDbk8sTUFBTSxDQUFBO01BQ3BDLElBQUlFLENBQUMsRUFBRXFPLFFBQVEsQ0FBQTtFQUVmLElBQUEsS0FBS3JPLENBQUMsR0FBR0YsTUFBTSxHQUFHLENBQUMsRUFBRUUsQ0FBQyxJQUFJLENBQUMsRUFBRUEsQ0FBQyxFQUFFLEVBQUU7RUFDaENxTyxNQUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFDSixTQUFTLENBQUNqTyxDQUFDLENBQUMsQ0FBQTs7RUFFNUI7RUFDQXFPLE1BQUFBLFFBQVEsQ0FBQ3RFLE1BQU0sQ0FBQ21FLElBQUksRUFBRWxPLENBQUMsQ0FBQyxDQUFBO0VBQ3hCLE1BQUEsSUFBSSxDQUFDOFAsTUFBTSxDQUFDVixVQUFVLENBQUNwQixTQUFTLENBQUNLLFFBQVEsRUFBRUgsSUFBSSxFQUFFQyxPQUFPLENBQUMsQ0FBQTtFQUN6RCxNQUFBLElBQUksQ0FBQ2dULFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTlTLFFBQVEsQ0FBQyxDQUFBOztFQUUxQztRQUNBLElBQUlBLFFBQVEsQ0FBQ3VILElBQUksRUFBRTtFQUNqQixRQUFBLElBQUksQ0FBQ3VMLFFBQVEsQ0FBQyxlQUFlLEVBQUU5UyxRQUFRLENBQUMsQ0FBQTtVQUV4QyxJQUFJLENBQUN5QixNQUFNLENBQUMvRSxJQUFJLENBQUM1QixNQUFNLENBQUNrRixRQUFRLENBQUMsQ0FBQTtVQUNqQyxJQUFJLENBQUNKLFNBQVMsQ0FBQzVCLE1BQU0sQ0FBQ3JNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUM3QixPQUFBO0VBQ0YsS0FBQTtLQUNELENBQUE7SUFBQTRJLE1BQUEsQ0FFRHVZLFFBQVEsR0FBUixTQUFBQSxTQUFTQyxLQUFLLEVBQUVsYyxNQUFNLEVBQUU7RUFDdEIsSUFBQSxJQUFJLENBQUM0SyxNQUFNLElBQUksSUFBSSxDQUFDQSxNQUFNLENBQUM5RCxhQUFhLENBQUNvVixLQUFLLEVBQUVsYyxNQUFNLENBQUMsQ0FBQTtNQUN2RCxJQUFJLENBQUNtYyxTQUFTLElBQUksSUFBSSxDQUFDclYsYUFBYSxDQUFDb1YsS0FBSyxFQUFFbGMsTUFBTSxDQUFDLENBQUE7S0FDcEQsQ0FBQTtFQUFBMEQsRUFBQUEsTUFBQSxDQUVEcVksUUFBUSxHQUFSLFNBQUFBLFFBQUFBLENBQVMvUyxJQUFJLEVBQUU7TUFDYixJQUFJLElBQUksQ0FBQzBSLE1BQU0sRUFBRSxPQUFBO0VBRWpCLElBQUEsSUFBSSxJQUFJLENBQUNILFNBQVMsS0FBSyxNQUFNLEVBQUU7UUFDN0IsSUFBSSxDQUFDRCxRQUFRLElBQUl0UixJQUFJLENBQUE7RUFDdkIsS0FBQyxNQUFNLElBQUksSUFBSSxDQUFDdVIsU0FBUyxLQUFLLE1BQU0sRUFBRTtFQUNwQyxNQUFBLElBQUl6ZixDQUFDLENBQUE7UUFDTCxJQUFNRixNQUFNLEdBQUcsSUFBSSxDQUFDNGYsSUFBSSxDQUFDL04sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXhDLElBQUk3UixNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQzBLLFNBQVMsR0FBRzFLLE1BQU0sQ0FBQTtRQUN2QyxLQUFLRSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLE1BQU0sRUFBRUUsQ0FBQyxFQUFFLEVBQUE7VUFBRSxJQUFJLENBQUNzaEIsY0FBYyxFQUFFLENBQUE7RUFBQyxPQUFBO1FBQ25ELElBQUksQ0FBQzdCLFNBQVMsR0FBRyxNQUFNLENBQUE7RUFDekIsS0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDRCxRQUFRLElBQUl0UixJQUFJLENBQUE7RUFFckIsTUFBQSxJQUFJLElBQUksQ0FBQ3NSLFFBQVEsR0FBRyxJQUFJLENBQUNDLFNBQVMsRUFBRTtVQUNsQyxJQUFNM2YsT0FBTSxHQUFHLElBQUksQ0FBQzRmLElBQUksQ0FBQy9OLFFBQVEsQ0FBQ3pELElBQUksQ0FBQyxDQUFBO0VBQ3ZDLFFBQUEsSUFBSWxPLEVBQUMsQ0FBQTtVQUVMLElBQUlGLE9BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDMEssU0FBUyxHQUFHMUssT0FBTSxDQUFBO1VBQ3ZDLEtBQUtFLEVBQUMsR0FBRyxDQUFDLEVBQUVBLEVBQUMsR0FBR0YsT0FBTSxFQUFFRSxFQUFDLEVBQUUsRUFBQTtZQUFFLElBQUksQ0FBQ3NoQixjQUFjLEVBQUUsQ0FBQTtFQUFDLFNBQUE7RUFDckQsT0FBQTtFQUNGLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0lBQUExWSxNQUFBLENBTUEwWSxjQUFjLEdBQWQsU0FBQUEsZUFBZTdLLFVBQVUsRUFBRUYsU0FBUyxFQUFFO01BQ3BDLElBQU1sSSxRQUFRLEdBQUcsSUFBSSxDQUFDeUIsTUFBTSxDQUFDL0UsSUFBSSxDQUFDbEMsR0FBRyxDQUFDd00sUUFBUSxDQUFDLENBQUE7TUFDL0MsSUFBSSxDQUFDa00sYUFBYSxDQUFDbFQsUUFBUSxFQUFFb0ksVUFBVSxFQUFFRixTQUFTLENBQUMsQ0FBQTtFQUNuRCxJQUFBLElBQUksQ0FBQzRLLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTlTLFFBQVEsQ0FBQyxDQUFBO0VBRTNDLElBQUEsT0FBT0EsUUFBUSxDQUFBO0tBQ2hCLENBQUE7SUFBQXpGLE1BQUEsQ0FFRDJZLGFBQWEsR0FBYixTQUFBQSxhQUFBQSxDQUFjbFQsUUFBUSxFQUFFb0ksVUFBVSxFQUFFRixTQUFTLEVBQUU7RUFDN0MsSUFBQSxJQUFJN0wsV0FBVyxHQUFHLElBQUksQ0FBQ0EsV0FBVyxDQUFBO0VBQ2xDLElBQUEsSUFBSUUsVUFBVSxHQUFHLElBQUksQ0FBQ0EsVUFBVSxDQUFBO01BRWhDLElBQUk2TCxVQUFVLEVBQUUvTCxXQUFXLEdBQUdwQixJQUFJLENBQUNuRCxPQUFPLENBQUNzUSxVQUFVLENBQUMsQ0FBQTtNQUN0RCxJQUFJRixTQUFTLEVBQUUzTCxVQUFVLEdBQUd0QixJQUFJLENBQUNuRCxPQUFPLENBQUNvUSxTQUFTLENBQUMsQ0FBQTtNQUVuRGxJLFFBQVEsQ0FBQ29ELEtBQUssRUFBRSxDQUFBO01BQ2hCK1AsY0FBYyxDQUFDL0ssVUFBVSxDQUFDLElBQUksRUFBRXBJLFFBQVEsRUFBRTNELFdBQVcsQ0FBQyxDQUFBO0VBQ3REMkQsSUFBQUEsUUFBUSxDQUFDcUksYUFBYSxDQUFDOUwsVUFBVSxDQUFDLENBQUE7TUFDbEN5RCxRQUFRLENBQUN5QixNQUFNLEdBQUcsSUFBSSxDQUFBO0VBRXRCLElBQUEsSUFBSSxDQUFDN0IsU0FBUyxDQUFDekgsSUFBSSxDQUFDNkgsUUFBUSxDQUFDLENBQUE7S0FDOUIsQ0FBQTtFQUFBekYsRUFBQUEsTUFBQSxDQUVEZ0gsTUFBTSxHQUFOLFNBQUFBLFNBQVM7TUFDUCxJQUFJLENBQUNrUSxJQUFJLEVBQUUsQ0FBQTtFQUNYeFcsSUFBQUEsSUFBSSxDQUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQ3lHLFNBQVMsQ0FBQyxDQUFBO0VBQ2pDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBckYsRUFBQUEsTUFBQSxDQUlBbkIsT0FBTyxHQUFQLFNBQUFBLFVBQVU7TUFDUixJQUFJLENBQUNtTyxJQUFJLEdBQUcsSUFBSSxDQUFBO01BQ2hCLElBQUksQ0FBQ2hHLE1BQU0sRUFBRSxDQUFBO01BQ2IsSUFBSSxDQUFDa1IscUJBQXFCLEVBQUUsQ0FBQTtNQUM1QixJQUFJLENBQUM1SyxtQkFBbUIsRUFBRSxDQUFBO01BQzFCLElBQUksQ0FBQ3BHLE1BQU0sSUFBSSxJQUFJLENBQUNBLE1BQU0sQ0FBQ0UsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO01BRTlDLElBQUksQ0FBQzBQLElBQUksR0FBRyxJQUFJLENBQUE7TUFDaEIsSUFBSSxDQUFDblIsR0FBRyxHQUFHLElBQUksQ0FBQTtNQUNmLElBQUksQ0FBQ2dILEdBQUcsR0FBRyxJQUFJLENBQUE7TUFDZixJQUFJLENBQUM5RyxDQUFDLEdBQUcsSUFBSSxDQUFBO01BQ2IsSUFBSSxDQUFDMU4sQ0FBQyxHQUFHLElBQUksQ0FBQTtNQUNiLElBQUksQ0FBQ2dJLENBQUMsR0FBRyxJQUFJLENBQUE7S0FDZCxDQUFBO0VBQUEsRUFBQSxPQUFBdVcsT0FBQSxDQUFBO0VBQUEsQ0FBQSxDQXhUa0NqSyxRQUFRLEVBQUE7RUEyVDdDdkosZUFBZSxDQUFDMUUsSUFBSSxDQUFDa1ksT0FBTyxDQUFDOztBQ2pVUm1DLE1BQUFBLGdCQUFnQiwwQkFBQUMsUUFBQSxFQUFBO0lBQUFoSixjQUFBLENBQUErSSxnQkFBQSxFQUFBQyxRQUFBLENBQUEsQ0FBQTtFQUNuQztFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0UsU0FBQUQsZ0JBQUFBLENBQVlyUCxJQUFJLEVBQUU7RUFBQSxJQUFBLElBQUFuSCxLQUFBLENBQUE7RUFDaEJBLElBQUFBLEtBQUEsR0FBQXlXLFFBQUEsQ0FBQTFiLElBQUEsQ0FBQSxJQUFBLEVBQU1vTSxJQUFJLENBQUMsSUFBQSxJQUFBLENBQUE7TUFFWG5ILEtBQUEsQ0FBSzBXLGNBQWMsR0FBRyxFQUFFLENBQUE7RUFBQyxJQUFBLE9BQUExVyxLQUFBLENBQUE7RUFDM0IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU5FLEVBQUEsSUFBQXJDLE1BQUEsR0FBQTZZLGdCQUFBLENBQUEzYixTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FPQWdaLGdCQUFnQixHQUFoQixTQUFBQSxtQkFBMEI7RUFBQSxJQUFBLEtBQUEsSUFBQXJCLElBQUEsR0FBQUMsU0FBQSxDQUFBMWdCLE1BQUEsRUFBTjJnQixJQUFJLEdBQUFDLElBQUFBLEtBQUEsQ0FBQUgsSUFBQSxHQUFBSSxJQUFBLEdBQUEsQ0FBQSxFQUFBQSxJQUFBLEdBQUFKLElBQUEsRUFBQUksSUFBQSxFQUFBLEVBQUE7RUFBSkYsTUFBQUEsSUFBSSxDQUFBRSxJQUFBLENBQUFILEdBQUFBLFNBQUEsQ0FBQUcsSUFBQSxDQUFBLENBQUE7RUFBQSxLQUFBO0VBQ3RCLElBQUEsSUFBSTNnQixDQUFDO1FBQ0hGLE1BQU0sR0FBRzJnQixJQUFJLENBQUMzZ0IsTUFBTSxDQUFBO01BRXRCLEtBQUtFLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsTUFBTSxFQUFFRSxDQUFDLEVBQUUsRUFBRTtFQUMzQixNQUFBLElBQUl1VyxTQUFTLEdBQUdrSyxJQUFJLENBQUN6Z0IsQ0FBQyxDQUFDLENBQUE7RUFDdkIsTUFBQSxJQUFJLENBQUMyaEIsY0FBYyxDQUFDbmIsSUFBSSxDQUFDK1AsU0FBUyxDQUFDLENBQUE7RUFDbkNBLE1BQUFBLFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQzVCLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0EsTUFKRTtFQUFBN04sRUFBQUEsTUFBQSxDQUtBaVosbUJBQW1CLEdBQW5CLFNBQUFBLG1CQUFBQSxDQUFvQnRMLFNBQVMsRUFBRTtNQUM3QixJQUFNalEsS0FBSyxHQUFHLElBQUksQ0FBQ3FiLGNBQWMsQ0FBQzVhLE9BQU8sQ0FBQ3dQLFNBQVMsQ0FBQyxDQUFBO0VBQ3BELElBQUEsSUFBSWpRLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNxYixjQUFjLENBQUN0VixNQUFNLENBQUMvRixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDckQsQ0FBQTtFQUFBc0MsRUFBQUEsTUFBQSxDQUVEbUIsTUFBTSxHQUFOLFNBQUFBLE1BQUFBLENBQU9tRSxJQUFJLEVBQUU7RUFDWHdULElBQUFBLFFBQUEsQ0FBQTViLFNBQUEsQ0FBTWlFLE1BQU0sQ0FBQS9ELElBQUEsT0FBQ2tJLElBQUksQ0FBQSxDQUFBO0VBRWpCLElBQUEsSUFBSSxDQUFDLElBQUksQ0FBQ0ksS0FBSyxFQUFFO0VBQ2YsTUFBQSxJQUFNeE8sTUFBTSxHQUFHLElBQUksQ0FBQzZoQixjQUFjLENBQUM3aEIsTUFBTSxDQUFBO0VBQ3pDLE1BQUEsSUFBSUUsQ0FBQyxDQUFBO1FBRUwsS0FBS0EsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRixNQUFNLEVBQUVFLENBQUMsRUFBRSxFQUFFO0VBQzNCLFFBQUEsSUFBSSxDQUFDMmhCLGNBQWMsQ0FBQzNoQixDQUFDLENBQUMsQ0FBQ3FXLGNBQWMsQ0FBQyxJQUFJLEVBQUVuSSxJQUFJLEVBQUVsTyxDQUFDLENBQUMsQ0FBQTtFQUN0RCxPQUFBO0VBQ0YsS0FBQTtLQUNELENBQUE7RUFBQSxFQUFBLE9BQUF5aEIsZ0JBQUEsQ0FBQTtFQUFBLENBQUEsQ0F0RDJDbkMsT0FBTzs7QUNDaEN3QyxNQUFBQSxhQUFhLDBCQUFBSixRQUFBLEVBQUE7SUFBQWhKLGNBQUEsQ0FBQW9KLGFBQUEsRUFBQUosUUFBQSxDQUFBLENBQUE7RUFDaEM7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0UsRUFBQSxTQUFBSSxjQUFZQyxXQUFXLEVBQUVsTyxJQUFJLEVBQUV6QixJQUFJLEVBQUU7RUFBQSxJQUFBLElBQUFuSCxLQUFBLENBQUE7RUFDbkNBLElBQUFBLEtBQUEsR0FBQXlXLFFBQUEsQ0FBQTFiLElBQUEsQ0FBQSxJQUFBLEVBQU1vTSxJQUFJLENBQUMsSUFBQSxJQUFBLENBQUE7TUFFWG5ILEtBQUEsQ0FBSzhXLFdBQVcsR0FBR3pZLElBQUksQ0FBQzlELFNBQVMsQ0FBQ3VjLFdBQVcsRUFBRUMsTUFBTSxDQUFDLENBQUE7TUFDdEQvVyxLQUFBLENBQUs0SSxJQUFJLEdBQUd2SyxJQUFJLENBQUM5RCxTQUFTLENBQUNxTyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7TUFFckM1SSxLQUFBLENBQUtnWCxjQUFjLEdBQUcsS0FBSyxDQUFBO01BQzNCaFgsS0FBQSxDQUFLaVgsZ0JBQWdCLEVBQUUsQ0FBQTtFQUFDLElBQUEsT0FBQWpYLEtBQUEsQ0FBQTtFQUMxQixHQUFBO0VBQUMsRUFBQSxJQUFBckMsTUFBQSxHQUFBa1osYUFBQSxDQUFBaGMsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBRURzWixnQkFBZ0IsR0FBaEIsU0FBQUEsbUJBQW1CO0VBQUEsSUFBQSxJQUFBQyxNQUFBLEdBQUEsSUFBQSxDQUFBO0VBQ2pCLElBQUEsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxVQUFBbmQsQ0FBQyxFQUFBO1FBQUEsT0FBSWtkLE1BQUksQ0FBQ0UsU0FBUyxDQUFDcmMsSUFBSSxDQUFDbWMsTUFBSSxFQUFFbGQsQ0FBQyxDQUFDLENBQUE7RUFBQSxLQUFBLENBQUE7RUFDekQsSUFBQSxJQUFJLENBQUNxZCxnQkFBZ0IsR0FBRyxVQUFBcmQsQ0FBQyxFQUFBO1FBQUEsT0FBSWtkLE1BQUksQ0FBQ0ksU0FBUyxDQUFDdmMsSUFBSSxDQUFDbWMsTUFBSSxFQUFFbGQsQ0FBQyxDQUFDLENBQUE7RUFBQSxLQUFBLENBQUE7RUFDekQsSUFBQSxJQUFJLENBQUN1ZCxjQUFjLEdBQUcsVUFBQXZkLENBQUMsRUFBQTtRQUFBLE9BQUlrZCxNQUFJLENBQUNNLE9BQU8sQ0FBQ3pjLElBQUksQ0FBQ21jLE1BQUksRUFBRWxkLENBQUMsQ0FBQyxDQUFBO0VBQUEsS0FBQSxDQUFBO0VBQ3JELElBQUEsSUFBSSxDQUFDOGMsV0FBVyxDQUFDM1csZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQ2dYLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFBO0VBQzlFLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBeFosRUFBQUEsTUFBQSxDQUlBK1csSUFBSSxHQUFKLFNBQUFBLE9BQU87TUFDTCxJQUFJLENBQUNzQyxjQUFjLEdBQUcsSUFBSSxDQUFBO0VBQzVCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBclosRUFBQUEsTUFBQSxDQUlBa1gsSUFBSSxHQUFKLFNBQUFBLE9BQU87TUFDTCxJQUFJLENBQUNtQyxjQUFjLEdBQUcsS0FBSyxDQUFBO0tBQzVCLENBQUE7RUFBQXJaLEVBQUFBLE1BQUEsQ0FFRHlaLFNBQVMsR0FBVCxTQUFBQSxTQUFBQSxDQUFVcGQsQ0FBQyxFQUFFO01BQ1gsSUFBSUEsQ0FBQyxDQUFDeWQsTUFBTSxJQUFJemQsQ0FBQyxDQUFDeWQsTUFBTSxLQUFLLENBQUMsRUFBRTtFQUM5QixNQUFBLElBQUksQ0FBQzNaLENBQUMsQ0FBQzVGLENBQUMsSUFBSSxDQUFDOEIsQ0FBQyxDQUFDeWQsTUFBTSxHQUFHLElBQUksQ0FBQzNaLENBQUMsQ0FBQzVGLENBQUMsSUFBSSxJQUFJLENBQUMwUSxJQUFJLENBQUE7RUFDN0MsTUFBQSxJQUFJLENBQUM5SyxDQUFDLENBQUMzRixDQUFDLElBQUksQ0FBQzZCLENBQUMsQ0FBQzBkLE1BQU0sR0FBRyxJQUFJLENBQUM1WixDQUFDLENBQUMzRixDQUFDLElBQUksSUFBSSxDQUFDeVEsSUFBSSxDQUFBO09BQzlDLE1BQU0sSUFBSTVPLENBQUMsQ0FBQzJkLE9BQU8sSUFBSTNkLENBQUMsQ0FBQzJkLE9BQU8sS0FBSyxDQUFDLEVBQUU7RUFDdkMsTUFBQSxJQUFJLENBQUM3WixDQUFDLENBQUM1RixDQUFDLElBQUksQ0FBQzhCLENBQUMsQ0FBQzJkLE9BQU8sR0FBRyxJQUFJLENBQUM3WixDQUFDLENBQUM1RixDQUFDLElBQUksSUFBSSxDQUFDMFEsSUFBSSxDQUFBO0VBQzlDLE1BQUEsSUFBSSxDQUFDOUssQ0FBQyxDQUFDM0YsQ0FBQyxJQUFJLENBQUM2QixDQUFDLENBQUM0ZCxPQUFPLEdBQUcsSUFBSSxDQUFDOVosQ0FBQyxDQUFDM0YsQ0FBQyxJQUFJLElBQUksQ0FBQ3lRLElBQUksQ0FBQTtFQUNoRCxLQUFBO0VBRUEsSUFBQSxJQUFJLElBQUksQ0FBQ29PLGNBQWMsRUFBRVAsUUFBQSxDQUFBNWIsU0FBQSxDQUFNNlosSUFBSSxDQUFBM1osSUFBQSxDQUFBLElBQUEsRUFBQyxNQUFNLENBQUEsQ0FBQTtFQUM1QyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQTRDLEVBQUFBLE1BQUEsQ0FJQW5CLE9BQU8sR0FBUCxTQUFBQSxVQUFVO0VBQ1JpYSxJQUFBQSxRQUFBLENBQUE1YixTQUFBLENBQU0yQixPQUFPLENBQUF6QixJQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7RUFDYixJQUFBLElBQUksQ0FBQytiLFdBQVcsQ0FBQzdWLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUNrVyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUNoRixDQUFBO0VBQUEsRUFBQSxPQUFBTixhQUFBLENBQUE7RUFBQSxDQUFBLENBakV3Q3hDLE9BQU87O0FDSGxELGNBQWU7RUFDYjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0lBQ0V3RCxPQUFPLEVBQUEsU0FBQUEsT0FBQ2pjLENBQUFBLEdBQUcsRUFBRTtFQUNYLElBQUEsSUFBSSxDQUFDQSxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUE7RUFDdEIsSUFBQSxJQUFJQSxHQUFHLENBQUNrYyxTQUFTLEVBQUUsT0FBTyxJQUFJLENBQUE7TUFFOUIsSUFBTUMsT0FBTyxHQUFHLENBQUduYyxFQUFBQSxHQUFBQSxHQUFHLENBQUNtYyxPQUFPLEVBQUdsZixXQUFXLEVBQUUsQ0FBQTtNQUM5QyxJQUFNbWYsUUFBUSxHQUFHLENBQUdwYyxFQUFBQSxHQUFBQSxHQUFHLENBQUNvYyxRQUFRLEVBQUduZixXQUFXLEVBQUUsQ0FBQTtFQUNoRCxJQUFBLElBQUltZixRQUFRLEtBQUssS0FBSyxJQUFJRCxPQUFPLEtBQUssS0FBSyxFQUFFO1FBQzNDbmMsR0FBRyxDQUFDa2MsU0FBUyxHQUFHLElBQUksQ0FBQTtFQUNwQixNQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsS0FBQTtFQUVBLElBQUEsT0FBTyxLQUFLLENBQUE7S0FDYjtFQUVEO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7SUFDRUcsUUFBUSxFQUFBLFNBQUFBLFFBQUNyYyxDQUFBQSxHQUFHLEVBQUU7TUFDWixPQUFPLE9BQU9BLEdBQUcsS0FBSyxRQUFRLENBQUE7RUFDaEMsR0FBQTtFQUNGLENBQUM7O0VDNUIrQixJQUVYc2MsWUFBWSxnQkFBQSxZQUFBO0VBQy9CLEVBQUEsU0FBQUEsWUFBWUMsQ0FBQUEsT0FBTyxFQUFFQyxNQUFNLEVBQUU7RUFDM0IsSUFBQSxJQUFJLENBQUN0WSxJQUFJLEdBQUcsSUFBSXZDLElBQUksRUFBRSxDQUFBO01BQ3RCLElBQUksQ0FBQzRhLE9BQU8sR0FBR0EsT0FBTyxDQUFBO01BQ3RCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQSxNQUFNLENBQUE7TUFDcEIsSUFBSSxDQUFDQyxVQUFVLEdBQUc7RUFBRUMsTUFBQUEsUUFBUSxFQUFFLElBQUE7T0FBTSxDQUFBO01BRXBDLElBQUksQ0FBQ3JCLGdCQUFnQixFQUFFLENBQUE7TUFDdkIsSUFBSSxDQUFDclgsSUFBSSxHQUFHLGNBQWMsQ0FBQTtFQUM1QixHQUFBO0VBQUMsRUFBQSxJQUFBakMsTUFBQSxHQUFBdWEsWUFBQSxDQUFBcmQsU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBRUQ0YSxTQUFTLEdBQVQsU0FBQUEsVUFBVWxZLEtBQUssRUFBY21ZLFNBQVMsRUFBTTtFQUFBLElBQUEsSUFBbENuWSxLQUFLLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBTEEsTUFBQUEsS0FBSyxHQUFHLFNBQVMsQ0FBQTtFQUFBLEtBQUE7RUFBQSxJQUFBLElBQUVtWSxTQUFTLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBVEEsTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBQTtFQUFBLEtBQUE7TUFDeEMsSUFBSSxDQUFDSixNQUFNLEdBQUc7RUFBRS9YLE1BQUFBLEtBQUssRUFBTEEsS0FBSztFQUFFbVksTUFBQUEsU0FBUyxFQUFUQSxTQUFBQTtPQUFXLENBQUE7S0FDbkMsQ0FBQTtFQUFBN2EsRUFBQUEsTUFBQSxDQUVEc1osZ0JBQWdCLEdBQWhCLFNBQUFBLG1CQUFtQjtFQUFBLElBQUEsSUFBQWpYLEtBQUEsR0FBQSxJQUFBLENBQUE7TUFDakIsSUFBSSxDQUFDeVksb0JBQW9CLEdBQUcsWUFBTTtFQUNoQ3pZLE1BQUFBLEtBQUksQ0FBQzBZLGNBQWMsQ0FBQzNkLElBQUksQ0FBQ2lGLEtBQUksQ0FBQyxDQUFBO09BQy9CLENBQUE7TUFFRCxJQUFJLENBQUMyWSx5QkFBeUIsR0FBRyxZQUFNO0VBQ3JDM1ksTUFBQUEsS0FBSSxDQUFDNFksbUJBQW1CLENBQUM3ZCxJQUFJLENBQUNpRixLQUFJLENBQUMsQ0FBQTtPQUNwQyxDQUFBO0VBRUQsSUFBQSxJQUFJLENBQUM2WSxvQkFBb0IsR0FBRyxVQUFBNVosT0FBTyxFQUFJO1FBQ3JDZSxLQUFJLENBQUM4WSxjQUFjLENBQUMvZCxJQUFJLENBQUNpRixLQUFJLEVBQUVmLE9BQU8sQ0FBQyxDQUFBO09BQ3hDLENBQUE7RUFFRCxJQUFBLElBQUksQ0FBQzhaLHNCQUFzQixHQUFHLFVBQUE5WixPQUFPLEVBQUk7UUFDdkNlLEtBQUksQ0FBQ2daLGdCQUFnQixDQUFDamUsSUFBSSxDQUFDaUYsS0FBSSxFQUFFZixPQUFPLENBQUMsQ0FBQTtPQUMxQyxDQUFBO0VBRUQsSUFBQSxJQUFJLENBQUNnYSx1QkFBdUIsR0FBRyxVQUFBN1YsUUFBUSxFQUFJO1FBQ3pDcEQsS0FBSSxDQUFDa1osaUJBQWlCLENBQUNuZSxJQUFJLENBQUNpRixLQUFJLEVBQUVvRCxRQUFRLENBQUMsQ0FBQTtPQUM1QyxDQUFBO0VBRUQsSUFBQSxJQUFJLENBQUMrVixzQkFBc0IsR0FBRyxVQUFBL1YsUUFBUSxFQUFJO1FBQ3hDcEQsS0FBSSxDQUFDb1osZ0JBQWdCLENBQUNyZSxJQUFJLENBQUNpRixLQUFJLEVBQUVvRCxRQUFRLENBQUMsQ0FBQTtPQUMzQyxDQUFBO0VBRUQsSUFBQSxJQUFJLENBQUNpVyxvQkFBb0IsR0FBRyxVQUFBalcsUUFBUSxFQUFJO1FBQ3RDcEQsS0FBSSxDQUFDc1osY0FBYyxDQUFDdmUsSUFBSSxDQUFDaUYsS0FBSSxFQUFFb0QsUUFBUSxDQUFDLENBQUE7T0FDekMsQ0FBQTtLQUNGLENBQUE7RUFBQXpGLEVBQUFBLE1BQUEsQ0FFRDhHLElBQUksR0FBSixTQUFBQSxJQUFBQSxDQUFLL0YsTUFBTSxFQUFFO01BQ1gsSUFBSSxDQUFDbUcsTUFBTSxHQUFHbkcsTUFBTSxDQUFBO01BRXBCQSxNQUFNLENBQUN5QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDc1ksb0JBQW9CLENBQUMsQ0FBQTtNQUNuRS9aLE1BQU0sQ0FBQ3lCLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQ3dZLHlCQUF5QixDQUFDLENBQUE7TUFFOUVqYSxNQUFNLENBQUN5QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDMFksb0JBQW9CLENBQUMsQ0FBQTtNQUNuRW5hLE1BQU0sQ0FBQ3lCLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQzRZLHNCQUFzQixDQUFDLENBQUE7TUFFdkVyYSxNQUFNLENBQUN5QixnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUM4WSx1QkFBdUIsQ0FBQyxDQUFBO01BQ3pFdmEsTUFBTSxDQUFDeUIsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDZ1osc0JBQXNCLENBQUMsQ0FBQTtNQUN2RXphLE1BQU0sQ0FBQ3lCLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUNrWixvQkFBb0IsQ0FBQyxDQUFBO0tBQ3BFLENBQUE7SUFBQTFiLE1BQUEsQ0FFRDdGLE1BQU0sR0FBTixTQUFBQSxNQUFBQSxDQUFPVixLQUFLLEVBQUVDLE1BQU0sRUFBRSxFQUFFLENBQUE7RUFBQXNHLEVBQUFBLE1BQUEsQ0FFeEJuQixPQUFPLEdBQVAsU0FBQUEsVUFBVTtNQUNSLElBQUksQ0FBQ21JLE1BQU0sRUFBRSxDQUFBO0VBQ2IsSUFBQSxJQUFJLENBQUM3RSxJQUFJLENBQUN0RCxPQUFPLEVBQUUsQ0FBQTtNQUNuQixJQUFJLENBQUNzRCxJQUFJLEdBQUcsSUFBSSxDQUFBO01BQ2hCLElBQUksQ0FBQ3FZLE9BQU8sR0FBRyxJQUFJLENBQUE7TUFDbkIsSUFBSSxDQUFDQyxNQUFNLEdBQUcsSUFBSSxDQUFBO0tBQ25CLENBQUE7RUFBQXphLEVBQUFBLE1BQUEsQ0FFRGdILE1BQU0sR0FBTixTQUFBQSxNQUFBQSxDQUFPakcsTUFBTSxFQUFFO01BQ2IsSUFBSSxDQUFDbUcsTUFBTSxDQUFDNUQsbUJBQW1CLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQ3dYLG9CQUFvQixDQUFDLENBQUE7TUFDM0UsSUFBSSxDQUFDNVQsTUFBTSxDQUFDNUQsbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDMFgseUJBQXlCLENBQUMsQ0FBQTtNQUV0RixJQUFJLENBQUM5VCxNQUFNLENBQUM1RCxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDNFgsb0JBQW9CLENBQUMsQ0FBQTtNQUMzRSxJQUFJLENBQUNoVSxNQUFNLENBQUM1RCxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUM4WCxzQkFBc0IsQ0FBQyxDQUFBO01BRS9FLElBQUksQ0FBQ2xVLE1BQU0sQ0FBQzVELG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQ2dZLHVCQUF1QixDQUFDLENBQUE7TUFDakYsSUFBSSxDQUFDcFUsTUFBTSxDQUFDNUQsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDa1ksc0JBQXNCLENBQUMsQ0FBQTtNQUMvRSxJQUFJLENBQUN0VSxNQUFNLENBQUM1RCxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDb1ksb0JBQW9CLENBQUMsQ0FBQTtNQUUzRSxJQUFJLENBQUN4VSxNQUFNLEdBQUcsSUFBSSxDQUFBO0tBQ25CLENBQUE7RUFBQWxILEVBQUFBLE1BQUEsQ0FFRCthLGNBQWMsR0FBZCxTQUFBQSxjQUFBLEdBQWlCLEVBQUUsQ0FBQTtFQUFBL2EsRUFBQUEsTUFBQSxDQUNuQmliLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBQSxHQUFzQixFQUFFLENBQUE7SUFBQWpiLE1BQUEsQ0FFeEJtYixjQUFjLEdBQWQsU0FBQUEsZUFBZTdaLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFBQXRCLE1BQUEsQ0FDMUJxYixnQkFBZ0IsR0FBaEIsU0FBQUEsaUJBQWlCL1osT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUFBdEIsTUFBQSxDQUU1QnViLGlCQUFpQixHQUFqQixTQUFBQSxrQkFBa0I5VixRQUFRLEVBQUUsRUFBRSxDQUFBO0lBQUF6RixNQUFBLENBQzlCeWIsZ0JBQWdCLEdBQWhCLFNBQUFBLGlCQUFpQmhXLFFBQVEsRUFBRSxFQUFFLENBQUE7SUFBQXpGLE1BQUEsQ0FDN0IyYixjQUFjLEdBQWQsU0FBQUEsZUFBZWxXLFFBQVEsRUFBRSxFQUFFLENBQUE7RUFBQSxFQUFBLE9BQUE4VSxZQUFBLENBQUE7RUFBQSxDQUFBLEVBQUE7O0VDdkY3QjtFQUNBO0VBQ0E7RUFDQTtBQUNxQnFCLE1BQUFBLGNBQWMsMEJBQUFDLGFBQUEsRUFBQTtJQUFBL0wsY0FBQSxDQUFBOEwsY0FBQSxFQUFBQyxhQUFBLENBQUEsQ0FBQTtFQUNqQztFQUNGO0VBQ0E7RUFDQTs7RUFHRTtFQUNGO0VBQ0E7RUFDQTs7RUFHRTtFQUNGO0VBQ0E7RUFDQTs7RUFHRTtFQUNGO0VBQ0E7O0VBR0U7RUFDRjtFQUNBO0VBQ0E7SUFDRSxTQUFBRCxjQUFBQSxDQUFZcEIsT0FBTyxFQUFFO0VBQUEsSUFBQSxJQUFBblksS0FBQSxDQUFBO0VBQ25CQSxJQUFBQSxLQUFBLEdBQUF3WixhQUFBLENBQUF6ZSxJQUFBLENBQUEsSUFBQSxFQUFNb2QsT0FBTyxDQUFDLElBQUEsSUFBQSxDQUFBO0VBQUNuWSxJQUFBQSxLQUFBLENBeEJqQm9ZLE1BQU0sR0FBQSxLQUFBLENBQUEsQ0FBQTtFQUFBcFksSUFBQUEsS0FBQSxDQU1ON0csT0FBTyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0VBQUE2RyxJQUFBQSxLQUFBLENBTVB5WixXQUFXLEdBQUEsS0FBQSxDQUFBLENBQUE7RUFBQXpaLElBQUFBLEtBQUEsQ0FLWEosSUFBSSxHQUFBLEtBQUEsQ0FBQSxDQUFBO01BU0ZJLEtBQUEsQ0FBS29ZLE1BQU0sR0FBRyxJQUFJLENBQUE7TUFDbEJwWSxLQUFBLENBQUs3RyxPQUFPLEdBQUc2RyxLQUFBLENBQUttWSxPQUFPLENBQUM3ZCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDNUMwRixJQUFBQSxLQUFBLENBQUt5WixXQUFXLEdBQUcsRUFBRSxDQUFBO01BQ3JCelosS0FBQSxDQUFLSixJQUFJLEdBQUcsZ0JBQWdCLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUMvQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFKRSxFQUFBLElBQUFyQyxNQUFBLEdBQUE0YixjQUFBLENBQUExZSxTQUFBLENBQUE7SUFBQThDLE1BQUEsQ0FLQTdGLE1BQU0sR0FBTixTQUFBQSxPQUFPVixLQUFLLEVBQUVDLE1BQU0sRUFBRTtFQUNwQixJQUFBLElBQUksQ0FBQzhnQixPQUFPLENBQUMvZ0IsS0FBSyxHQUFHQSxLQUFLLENBQUE7RUFDMUIsSUFBQSxJQUFJLENBQUMrZ0IsT0FBTyxDQUFDOWdCLE1BQU0sR0FBR0EsTUFBTSxDQUFBO0VBQzlCLEdBQUE7O0VBRUE7RUFDRjtFQUNBLE1BRkU7RUFBQXNHLEVBQUFBLE1BQUEsQ0FHQSthLGNBQWMsR0FBZCxTQUFBQSxpQkFBaUI7TUFDZixJQUFJLENBQUN2ZixPQUFPLENBQUNLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQzJlLE9BQU8sQ0FBQy9nQixLQUFLLEVBQUUsSUFBSSxDQUFDK2dCLE9BQU8sQ0FBQzlnQixNQUFNLENBQUMsQ0FBQTtFQUN2RSxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQXNHLEVBQUFBLE1BQUEsQ0FJQXViLGlCQUFpQixHQUFqQixTQUFBQSxpQkFBQUEsQ0FBa0I5VixRQUFRLEVBQUU7TUFDMUIsSUFBSUEsUUFBUSxDQUFDckUsSUFBSSxFQUFFO0VBQ2pCekMsTUFBQUEsT0FBTyxDQUFDN0MsZUFBZSxDQUFDMkosUUFBUSxDQUFDckUsSUFBSSxFQUFFLElBQUksQ0FBQzJhLFdBQVcsRUFBRXRXLFFBQVEsQ0FBQyxDQUFBO0VBQ3BFLEtBQUMsTUFBTTtFQUNMQSxNQUFBQSxRQUFRLENBQUMvQyxLQUFLLEdBQUcrQyxRQUFRLENBQUMvQyxLQUFLLElBQUksU0FBUyxDQUFBO0VBQzlDLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQTFDLEVBQUFBLE1BQUEsQ0FJQXliLGdCQUFnQixHQUFoQixTQUFBQSxnQkFBQUEsQ0FBaUJoVyxRQUFRLEVBQUU7TUFDekIsSUFBSUEsUUFBUSxDQUFDckUsSUFBSSxFQUFFO1FBQ2pCLElBQUk0YSxLQUFLLENBQUM5QixPQUFPLENBQUN6VSxRQUFRLENBQUNyRSxJQUFJLENBQUMsRUFBRTtFQUNoQyxRQUFBLElBQUksQ0FBQ3pGLFNBQVMsQ0FBQzhKLFFBQVEsQ0FBQyxDQUFBO0VBQzFCLE9BQUE7RUFDRixLQUFDLE1BQU07RUFDTCxNQUFBLElBQUksQ0FBQ3dXLFVBQVUsQ0FBQ3hXLFFBQVEsQ0FBQyxDQUFBO0VBQzNCLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQXpGLEVBQUFBLE1BQUEsQ0FJQTJiLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlbFcsUUFBUSxFQUFFO01BQ3ZCQSxRQUFRLENBQUNyRSxJQUFJLEdBQUcsSUFBSSxDQUFBO0VBQ3RCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BTEU7SUFBQXBCLE1BQUEsQ0FNQStiLFdBQVcsR0FBWCxTQUFBQSxZQUFZaGdCLEdBQUcsRUFBRTBKLFFBQVEsRUFBRTtNQUN6QkEsUUFBUSxDQUFDckUsSUFBSSxHQUFHckYsR0FBRyxDQUFBO0VBQ3JCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFpRSxFQUFBQSxNQUFBLENBS0FyRSxTQUFTLEdBQVQsU0FBQUEsU0FBQUEsQ0FBVThKLFFBQVEsRUFBRTtFQUNsQixJQUFBLElBQU04RixDQUFDLEdBQUk5RixRQUFRLENBQUNyRSxJQUFJLENBQUMzSCxLQUFLLEdBQUdnTSxRQUFRLENBQUNoTCxLQUFLLEdBQUksQ0FBQyxDQUFBO0VBQ3BELElBQUEsSUFBTXdULENBQUMsR0FBSXhJLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzFILE1BQU0sR0FBRytMLFFBQVEsQ0FBQ2hMLEtBQUssR0FBSSxDQUFDLENBQUE7TUFDckQsSUFBTUYsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHZ1IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtNQUM5QixJQUFNL1EsQ0FBQyxHQUFHaUwsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHeVQsQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUU5QixJQUFBLElBQUksQ0FBQyxDQUFDeEksUUFBUSxDQUFDL0MsS0FBSyxFQUFFO1FBQ3BCLElBQUksQ0FBQytDLFFBQVEsQ0FBQ2lILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRWpILFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3dQLE1BQU0sR0FBRyxJQUFJLENBQUNDLFlBQVksQ0FBQzFXLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQyxDQUFBO1FBRXJGLElBQU1nYixVQUFVLEdBQUczVyxRQUFRLENBQUNpSCxJQUFJLENBQUN3UCxNQUFNLENBQUN2ZixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeER5ZixVQUFVLENBQUN2Z0IsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU0SixRQUFRLENBQUNpSCxJQUFJLENBQUN3UCxNQUFNLENBQUN6aUIsS0FBSyxFQUFFZ00sUUFBUSxDQUFDaUgsSUFBSSxDQUFDd1AsTUFBTSxDQUFDeGlCLE1BQU0sQ0FBQyxDQUFBO0VBQ25GMGlCLE1BQUFBLFVBQVUsQ0FBQ0MsV0FBVyxHQUFHNVcsUUFBUSxDQUFDOEcsS0FBSyxDQUFBO1FBQ3ZDNlAsVUFBVSxDQUFDemdCLFNBQVMsQ0FBQzhKLFFBQVEsQ0FBQ3JFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFekNnYixVQUFVLENBQUNFLHdCQUF3QixHQUFHLGFBQWEsQ0FBQTtRQUNuREYsVUFBVSxDQUFDRyxTQUFTLEdBQUdqSCxTQUFTLENBQUNqSCxRQUFRLENBQUM1SSxRQUFRLENBQUNrSCxHQUFHLENBQUMsQ0FBQTtRQUN2RHlQLFVBQVUsQ0FBQ0ksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUvVyxRQUFRLENBQUNpSCxJQUFJLENBQUN3UCxNQUFNLENBQUN6aUIsS0FBSyxFQUFFZ00sUUFBUSxDQUFDaUgsSUFBSSxDQUFDd1AsTUFBTSxDQUFDeGlCLE1BQU0sQ0FBQyxDQUFBO1FBQ2xGMGlCLFVBQVUsQ0FBQ0Usd0JBQXdCLEdBQUcsYUFBYSxDQUFBO1FBQ25ERixVQUFVLENBQUNDLFdBQVcsR0FBRyxDQUFDLENBQUE7RUFFMUIsTUFBQSxJQUFJLENBQUM3Z0IsT0FBTyxDQUFDRyxTQUFTLENBQ3BCOEosUUFBUSxDQUFDaUgsSUFBSSxDQUFDd1AsTUFBTSxFQUNwQixDQUFDLEVBQ0QsQ0FBQyxFQUNEelcsUUFBUSxDQUFDaUgsSUFBSSxDQUFDd1AsTUFBTSxDQUFDemlCLEtBQUssRUFDMUJnTSxRQUFRLENBQUNpSCxJQUFJLENBQUN3UCxNQUFNLENBQUN4aUIsTUFBTSxFQUMzQmEsQ0FBQyxFQUNEQyxDQUFDLEVBQ0QrUSxDQUFDLEVBQ0QwQyxDQUNGLENBQUMsQ0FBQTtFQUNILEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBSSxDQUFDelMsT0FBTyxDQUFDaWhCLElBQUksRUFBRSxDQUFBO0VBRW5CLE1BQUEsSUFBSSxDQUFDamhCLE9BQU8sQ0FBQzZnQixXQUFXLEdBQUc1VyxRQUFRLENBQUM4RyxLQUFLLENBQUE7RUFDekMsTUFBQSxJQUFJLENBQUMvUSxPQUFPLENBQUNraEIsU0FBUyxDQUFDalgsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxFQUFFa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxDQUFDLENBQUE7RUFDbEQsTUFBQSxJQUFJLENBQUNnQixPQUFPLENBQUNkLE1BQU0sQ0FBQ3FKLFFBQVEsQ0FBQ2tCLGVBQWUsQ0FBQ1EsUUFBUSxDQUFDMkgsUUFBUSxDQUFDLENBQUMsQ0FBQTtFQUNoRSxNQUFBLElBQUksQ0FBQzVSLE9BQU8sQ0FBQ2toQixTQUFTLENBQUMsQ0FBQ2pYLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsRUFBRSxDQUFDa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxDQUFDLENBQUE7RUFDcEQsTUFBQSxJQUFJLENBQUNnQixPQUFPLENBQUNHLFNBQVMsQ0FBQzhKLFFBQVEsQ0FBQ3JFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFcUUsUUFBUSxDQUFDckUsSUFBSSxDQUFDM0gsS0FBSyxFQUFFZ00sUUFBUSxDQUFDckUsSUFBSSxDQUFDMUgsTUFBTSxFQUFFYSxDQUFDLEVBQUVDLENBQUMsRUFBRStRLENBQUMsRUFBRTBDLENBQUMsQ0FBQyxDQUFBO0VBRWxHLE1BQUEsSUFBSSxDQUFDelMsT0FBTyxDQUFDNmdCLFdBQVcsR0FBRyxDQUFDLENBQUE7RUFDNUIsTUFBQSxJQUFJLENBQUM3Z0IsT0FBTyxDQUFDbWhCLE9BQU8sRUFBRSxDQUFBO0VBQ3hCLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0EsTUFKRTtFQUFBM2MsRUFBQUEsTUFBQSxDQUtBaWMsVUFBVSxHQUFWLFNBQUFBLFVBQUFBLENBQVd4VyxRQUFRLEVBQUU7TUFDbkIsSUFBSUEsUUFBUSxDQUFDa0gsR0FBRyxFQUFFO1FBQ2hCLElBQUksQ0FBQ25SLE9BQU8sQ0FBQytnQixTQUFTLEdBQUEsT0FBQSxHQUFXOVcsUUFBUSxDQUFDa0gsR0FBRyxDQUFDaEUsQ0FBQyxHQUFBLEdBQUEsR0FBSWxELFFBQVEsQ0FBQ2tILEdBQUcsQ0FBQy9ELENBQUMsR0FBSW5ELEdBQUFBLEdBQUFBLFFBQVEsQ0FBQ2tILEdBQUcsQ0FBQ3ZVLENBQUMsR0FBSXFOLEdBQUFBLEdBQUFBLFFBQVEsQ0FBQzhHLEtBQUssR0FBRyxHQUFBLENBQUE7RUFDMUcsS0FBQyxNQUFNO0VBQ0wsTUFBQSxJQUFJLENBQUMvUSxPQUFPLENBQUMrZ0IsU0FBUyxHQUFHOVcsUUFBUSxDQUFDL0MsS0FBSyxDQUFBO0VBQ3pDLEtBQUE7RUFFQSxJQUFBLElBQUksQ0FBQ2xILE9BQU8sQ0FBQ29oQixTQUFTLEVBQUUsQ0FBQTtFQUN4QixJQUFBLElBQUksQ0FBQ3BoQixPQUFPLENBQUNxaEIsR0FBRyxDQUFDcFgsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxFQUFFa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxFQUFFaUwsUUFBUSxDQUFDMEgsTUFBTSxFQUFFLENBQUMsRUFBRXhWLElBQUksQ0FBQ2lNLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7TUFFbkYsSUFBSSxJQUFJLENBQUM2VyxNQUFNLEVBQUU7UUFDZixJQUFJLENBQUNqZixPQUFPLENBQUNzaEIsV0FBVyxHQUFHLElBQUksQ0FBQ3JDLE1BQU0sQ0FBQy9YLEtBQUssQ0FBQTtRQUM1QyxJQUFJLENBQUNsSCxPQUFPLENBQUN1aEIsU0FBUyxHQUFHLElBQUksQ0FBQ3RDLE1BQU0sQ0FBQ0ksU0FBUyxDQUFBO0VBQzlDLE1BQUEsSUFBSSxDQUFDcmYsT0FBTyxDQUFDaWYsTUFBTSxFQUFFLENBQUE7RUFDdkIsS0FBQTtFQUVBLElBQUEsSUFBSSxDQUFDamYsT0FBTyxDQUFDd2hCLFNBQVMsRUFBRSxDQUFBO0VBQ3hCLElBQUEsSUFBSSxDQUFDeGhCLE9BQU8sQ0FBQ3loQixJQUFJLEVBQUUsQ0FBQTtFQUNyQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0VBQUFqZCxFQUFBQSxNQUFBLENBTUFtYyxZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYTFnQixLQUFLLEVBQUU7RUFDbEIsSUFBQSxJQUFJdWdCLEtBQUssQ0FBQzlCLE9BQU8sQ0FBQ3plLEtBQUssQ0FBQyxFQUFFO1FBQ3hCLElBQU15aEIsSUFBSSxHQUFHemhCLEtBQUssQ0FBQ2hDLEtBQUssR0FBRyxHQUFHLEdBQUdnQyxLQUFLLENBQUMvQixNQUFNLENBQUE7RUFDN0MsTUFBQSxJQUFJK0MsTUFBTSxHQUFHLElBQUksQ0FBQ3FmLFdBQVcsQ0FBQ29CLElBQUksQ0FBQyxDQUFBO1FBRW5DLElBQUksQ0FBQ3pnQixNQUFNLEVBQUU7RUFDWEEsUUFBQUEsTUFBTSxHQUFHNUMsUUFBUSxDQUFDQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7RUFDekMyQyxRQUFBQSxNQUFNLENBQUNoRCxLQUFLLEdBQUdnQyxLQUFLLENBQUNoQyxLQUFLLENBQUE7RUFDMUJnRCxRQUFBQSxNQUFNLENBQUMvQyxNQUFNLEdBQUcrQixLQUFLLENBQUMvQixNQUFNLENBQUE7RUFDNUIsUUFBQSxJQUFJLENBQUNvaUIsV0FBVyxDQUFDb0IsSUFBSSxDQUFDLEdBQUd6Z0IsTUFBTSxDQUFBO0VBQ2pDLE9BQUE7RUFFQSxNQUFBLE9BQU9BLE1BQU0sQ0FBQTtFQUNmLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQSxNQUZFO0VBQUF1RCxFQUFBQSxNQUFBLENBR0FuQixPQUFPLEdBQVAsU0FBQUEsVUFBVTtFQUNSZ2QsSUFBQUEsYUFBQSxDQUFBM2UsU0FBQSxDQUFNMkIsT0FBTyxDQUFBekIsSUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBO01BQ2IsSUFBSSxDQUFDcWQsTUFBTSxHQUFHLElBQUksQ0FBQTtNQUNsQixJQUFJLENBQUNqZixPQUFPLEdBQUcsSUFBSSxDQUFBO01BQ25CLElBQUksQ0FBQ3NnQixXQUFXLEdBQUcsSUFBSSxDQUFBO0tBQ3hCLENBQUE7RUFBQSxFQUFBLE9BQUFGLGNBQUEsQ0FBQTtFQUFBLENBQUEsQ0EzTXlDckIsWUFBWTs7RUNOeEQ7RUFDQTtFQUNBO0VBQ0E7QUFDcUI0QyxNQUFBQSxXQUFXLDBCQUFBdEIsYUFBQSxFQUFBO0lBQUEvTCxjQUFBLENBQUFxTixXQUFBLEVBQUF0QixhQUFBLENBQUEsQ0FBQTtFQUM5QjtFQUNGO0VBQ0E7RUFDQTtJQUNFLFNBQUFzQixXQUFBQSxDQUFZM0MsT0FBTyxFQUFFO0VBQUEsSUFBQSxJQUFBblksS0FBQSxDQUFBO0VBQ25CQSxJQUFBQSxLQUFBLEdBQUF3WixhQUFBLENBQUF6ZSxJQUFBLENBQUEsSUFBQSxFQUFNb2QsT0FBTyxDQUFDLElBQUEsSUFBQSxDQUFBO01BRWRuWSxLQUFBLENBQUtvWSxNQUFNLEdBQUcsSUFBSSxDQUFBO01BQ2xCcFksS0FBQSxDQUFLeEgsV0FBVyxHQUFHLEtBQUssQ0FBQTtNQUN4QndILEtBQUEsQ0FBS0YsSUFBSSxDQUFDMUIsTUFBTSxHQUFHLFVBQUNXLElBQUksRUFBRXFFLFFBQVEsRUFBQTtFQUFBLE1BQUEsT0FBS3BELEtBQUEsQ0FBSythLFVBQVUsQ0FBQ2hjLElBQUksRUFBRXFFLFFBQVEsQ0FBQyxDQUFBO0VBQUEsS0FBQSxDQUFBO0VBQ3RFcEQsSUFBQUEsS0FBQSxDQUFLMFosV0FBVyxHQUFHMVosS0FBQSxDQUFLMFosV0FBVyxDQUFDdmQsSUFBSSxDQUFBNmUsc0JBQUEsQ0FBQWhiLEtBQUEsQ0FBSyxDQUFDLENBQUE7TUFFOUNBLEtBQUEsQ0FBS0osSUFBSSxHQUFHLGFBQWEsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQzVCLEdBQUE7RUFBQyxFQUFBLElBQUFyQyxNQUFBLEdBQUFtZCxXQUFBLENBQUFqZ0IsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBRUR1YixpQkFBaUIsR0FBakIsU0FBQUEsaUJBQUFBLENBQWtCOVYsUUFBUSxFQUFFO01BQzFCLElBQUlBLFFBQVEsQ0FBQ3JFLElBQUksRUFBRTtFQUNqQnpDLE1BQUFBLE9BQU8sQ0FBQzdDLGVBQWUsQ0FBQzJKLFFBQVEsQ0FBQ3JFLElBQUksRUFBRSxJQUFJLENBQUMyYSxXQUFXLEVBQUV0VyxRQUFRLENBQUMsQ0FBQTtFQUNwRSxLQUFDLE1BQU07RUFDTEEsTUFBQUEsUUFBUSxDQUFDckUsSUFBSSxHQUFHLElBQUksQ0FBQ2UsSUFBSSxDQUFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQ3lhLFVBQVUsRUFBRWpWLFFBQVEsQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQytVLE9BQU8sQ0FBQzVYLFdBQVcsQ0FBQzZDLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQyxDQUFBO0VBQ3pDLEtBQUE7S0FDRCxDQUFBO0VBQUFwQixFQUFBQSxNQUFBLENBRUR5YixnQkFBZ0IsR0FBaEIsU0FBQUEsZ0JBQUFBLENBQWlCaFcsUUFBUSxFQUFFO0VBQ3pCLElBQUEsSUFBSSxJQUFJLENBQUM2WCxTQUFTLENBQUM3WCxRQUFRLENBQUMsRUFBRTtRQUM1QixJQUFJLElBQUksQ0FBQzVLLFdBQVcsRUFBRTtVQUNwQjZCLE9BQU8sQ0FBQzdCLFdBQVcsQ0FBQzRLLFFBQVEsQ0FBQ3JFLElBQUksRUFBRXFFLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsRUFBRWtMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsRUFBRWlMLFFBQVEsQ0FBQ2hMLEtBQUssRUFBRWdMLFFBQVEsQ0FBQzJILFFBQVEsQ0FBQyxDQUFBO0VBQ25HLE9BQUMsTUFBTTtVQUNMMVEsT0FBTyxDQUFDekMsU0FBUyxDQUFDd0wsUUFBUSxDQUFDckUsSUFBSSxFQUFFcUUsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxFQUFFa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxFQUFFaUwsUUFBUSxDQUFDaEwsS0FBSyxFQUFFZ0wsUUFBUSxDQUFDMkgsUUFBUSxDQUFDLENBQUE7RUFDakcsT0FBQTtRQUVBM0gsUUFBUSxDQUFDckUsSUFBSSxDQUFDckgsS0FBSyxDQUFDQyxPQUFPLEdBQUd5TCxRQUFRLENBQUM4RyxLQUFLLENBQUE7RUFFNUMsTUFBQSxJQUFJOUcsUUFBUSxDQUFDckUsSUFBSSxDQUFDdVosUUFBUSxFQUFFO1VBQzFCbFYsUUFBUSxDQUFDckUsSUFBSSxDQUFDckgsS0FBSyxDQUFDd2pCLGVBQWUsR0FBRzlYLFFBQVEsQ0FBQy9DLEtBQUssSUFBSSxTQUFTLENBQUE7RUFDbkUsT0FBQTtFQUNGLEtBQUE7S0FDRCxDQUFBO0VBQUExQyxFQUFBQSxNQUFBLENBRUQyYixjQUFjLEdBQWQsU0FBQUEsY0FBQUEsQ0FBZWxXLFFBQVEsRUFBRTtFQUN2QixJQUFBLElBQUksSUFBSSxDQUFDNlgsU0FBUyxDQUFDN1gsUUFBUSxDQUFDLEVBQUU7UUFDNUIsSUFBSSxDQUFDK1UsT0FBTyxDQUFDdlgsV0FBVyxDQUFDd0MsUUFBUSxDQUFDckUsSUFBSSxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDZSxJQUFJLENBQUM1QixNQUFNLENBQUNrRixRQUFRLENBQUNyRSxJQUFJLENBQUMsQ0FBQTtRQUMvQnFFLFFBQVEsQ0FBQ3JFLElBQUksR0FBRyxJQUFJLENBQUE7RUFDdEIsS0FBQTtLQUNELENBQUE7RUFBQXBCLEVBQUFBLE1BQUEsQ0FFRHNkLFNBQVMsR0FBVCxTQUFBQSxTQUFBQSxDQUFVN1gsUUFBUSxFQUFFO0VBQ2xCLElBQUEsT0FBTyxPQUFPQSxRQUFRLENBQUNyRSxJQUFJLEtBQUssUUFBUSxJQUFJcUUsUUFBUSxDQUFDckUsSUFBSSxJQUFJLENBQUNxRSxRQUFRLENBQUNyRSxJQUFJLENBQUMxQixPQUFPLENBQUE7RUFDckYsR0FBQTs7RUFFQTtFQUFBLEdBQUE7SUFBQU0sTUFBQSxDQUNBK2IsV0FBVyxHQUFYLFNBQUFBLFlBQVloZ0IsR0FBRyxFQUFFMEosUUFBUSxFQUFFO01BQ3pCLElBQUlBLFFBQVEsQ0FBQ3VILElBQUksRUFBRSxPQUFBO0VBQ25CdkgsSUFBQUEsUUFBUSxDQUFDckUsSUFBSSxHQUFHLElBQUksQ0FBQ2UsSUFBSSxDQUFDbEMsR0FBRyxDQUFDbEUsR0FBRyxFQUFFMEosUUFBUSxDQUFDLENBQUE7RUFDNUMvSSxJQUFBQSxPQUFPLENBQUN2QyxNQUFNLENBQUNzTCxRQUFRLENBQUNyRSxJQUFJLEVBQUVyRixHQUFHLENBQUN0QyxLQUFLLEVBQUVzQyxHQUFHLENBQUNyQyxNQUFNLENBQUMsQ0FBQTtNQUVwRCxJQUFJLENBQUM4Z0IsT0FBTyxDQUFDNVgsV0FBVyxDQUFDNkMsUUFBUSxDQUFDckUsSUFBSSxDQUFDLENBQUE7S0FDeEMsQ0FBQTtJQUFBcEIsTUFBQSxDQUVEb2QsVUFBVSxHQUFWLFNBQUFBLFdBQVdoYyxJQUFJLEVBQUVxRSxRQUFRLEVBQUU7TUFDekIsSUFBSXJFLElBQUksQ0FBQ3VaLFFBQVEsRUFBRSxPQUFPLElBQUksQ0FBQzZDLFlBQVksQ0FBQy9YLFFBQVEsQ0FBQyxDQUFBO0VBQ3JELElBQUEsT0FBTyxJQUFJLENBQUNnWSxZQUFZLENBQUNyYyxJQUFJLEVBQUVxRSxRQUFRLENBQUMsQ0FBQTtFQUMxQyxHQUFBOztFQUVBO0VBQUEsR0FBQTtFQUFBekYsRUFBQUEsTUFBQSxDQUNBd2QsWUFBWSxHQUFaLFNBQUFBLFlBQUFBLENBQWEvWCxRQUFRLEVBQUU7TUFDckIsSUFBTTdMLEdBQUcsR0FBRzhDLE9BQU8sQ0FBQ3hDLFNBQVMsQ0FBSXVMLFFBQVEsQ0FBQ2pNLEVBQUUsR0FBQSxNQUFBLEVBQVEsQ0FBQyxHQUFHaU0sUUFBUSxDQUFDMEgsTUFBTSxFQUFFLENBQUMsR0FBRzFILFFBQVEsQ0FBQzBILE1BQU0sQ0FBQyxDQUFBO01BQzdGdlQsR0FBRyxDQUFDRyxLQUFLLENBQUMyakIsWUFBWSxHQUFNalksUUFBUSxDQUFDMEgsTUFBTSxHQUFJLElBQUEsQ0FBQTtNQUUvQyxJQUFJLElBQUksQ0FBQ3NOLE1BQU0sRUFBRTtRQUNmN2dCLEdBQUcsQ0FBQ0csS0FBSyxDQUFDNGpCLFdBQVcsR0FBRyxJQUFJLENBQUNsRCxNQUFNLENBQUMvWCxLQUFLLENBQUE7UUFDekM5SSxHQUFHLENBQUNHLEtBQUssQ0FBQzZqQixXQUFXLEdBQU0sSUFBSSxDQUFDbkQsTUFBTSxDQUFDSSxTQUFTLEdBQUksSUFBQSxDQUFBO0VBQ3RELEtBQUE7TUFDQWpoQixHQUFHLENBQUMrZ0IsUUFBUSxHQUFHLElBQUksQ0FBQTtFQUVuQixJQUFBLE9BQU8vZ0IsR0FBRyxDQUFBO0tBQ1gsQ0FBQTtJQUFBb0csTUFBQSxDQUVEeWQsWUFBWSxHQUFaLFNBQUFBLGFBQWFyYyxJQUFJLEVBQUVxRSxRQUFRLEVBQUU7TUFDM0IsSUFBTW9ZLEdBQUcsR0FBRyxPQUFPemMsSUFBSSxLQUFLLFFBQVEsR0FBR0EsSUFBSSxHQUFHQSxJQUFJLENBQUNsRixHQUFHLENBQUE7RUFDdEQsSUFBQSxJQUFNdEMsR0FBRyxHQUFHOEMsT0FBTyxDQUFDeEMsU0FBUyxDQUFJdUwsUUFBUSxDQUFDak0sRUFBRSxHQUFBLE1BQUEsRUFBUTRILElBQUksQ0FBQzNILEtBQUssRUFBRTJILElBQUksQ0FBQzFILE1BQU0sQ0FBQyxDQUFBO0VBQzVFRSxJQUFBQSxHQUFHLENBQUNHLEtBQUssQ0FBQytqQixlQUFlLEdBQUEsTUFBQSxHQUFVRCxHQUFHLEdBQUcsR0FBQSxDQUFBO0VBRXpDLElBQUEsT0FBT2prQixHQUFHLENBQUE7RUFDWixHQUFBOztFQUVBO0VBQ0Y7RUFDQSxNQUZFO0VBQUFvRyxFQUFBQSxNQUFBLENBR0FuQixPQUFPLEdBQVAsU0FBQUEsVUFBVTtFQUNSZ2QsSUFBQUEsYUFBQSxDQUFBM2UsU0FBQSxDQUFNMkIsT0FBTyxDQUFBekIsSUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBO01BQ2IsSUFBSSxDQUFDcWQsTUFBTSxHQUFHLElBQUksQ0FBQTtLQUNuQixDQUFBO0VBQUEsRUFBQSxPQUFBMEMsV0FBQSxDQUFBO0VBQUEsQ0FBQSxDQS9Gc0M1QyxZQUFZOztBQ0xoQ3dELE1BQUFBLGFBQWEsMEJBQUFsQyxhQUFBLEVBQUE7SUFBQS9MLGNBQUEsQ0FBQWlPLGFBQUEsRUFBQWxDLGFBQUEsQ0FBQSxDQUFBO0VBQ2hDLEVBQUEsU0FBQWtDLGFBQVl2RCxDQUFBQSxPQUFPLEVBQUVDLE1BQU0sRUFBRTtFQUFBLElBQUEsSUFBQXBZLEtBQUEsQ0FBQTtFQUMzQkEsSUFBQUEsS0FBQSxHQUFBd1osYUFBQSxDQUFBemUsSUFBQSxDQUFBLElBQUEsRUFBTW9kLE9BQU8sQ0FBQyxJQUFBLElBQUEsQ0FBQTtNQUVkblksS0FBQSxDQUFLb1ksTUFBTSxHQUFHQSxNQUFNLENBQUE7TUFDcEJwWSxLQUFBLENBQUtKLElBQUksR0FBRyxlQUFlLENBQUE7RUFBQyxJQUFBLE9BQUFJLEtBQUEsQ0FBQTtFQUM5QixHQUFBO0VBQUMsRUFBQSxJQUFBckMsTUFBQSxHQUFBK2QsYUFBQSxDQUFBN2dCLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQUVEdWIsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFBQSxDQUFrQjlWLFFBQVEsRUFBRTtNQUMxQixJQUFJQSxRQUFRLENBQUNyRSxJQUFJLEVBQUU7RUFDakIsTUFBQSxJQUFJLENBQUNxYyxZQUFZLENBQUNoWSxRQUFRLENBQUMsQ0FBQTtFQUM3QixLQUFDLE1BQU07RUFDTCxNQUFBLElBQUksQ0FBQytYLFlBQVksQ0FBQy9YLFFBQVEsQ0FBQyxDQUFBO0VBQzdCLEtBQUE7TUFFQSxJQUFJLENBQUMrVSxPQUFPLENBQUN3RCxRQUFRLENBQUN2WSxRQUFRLENBQUNyRSxJQUFJLENBQUMsQ0FBQTtLQUNyQyxDQUFBO0VBQUFwQixFQUFBQSxNQUFBLENBRUR5YixnQkFBZ0IsR0FBaEIsU0FBQUEsZ0JBQUFBLENBQWlCaFcsUUFBUSxFQUFFO01BQ3pCLElBQUlBLFFBQVEsQ0FBQ3JFLElBQUksRUFBRTtRQUNqQnFFLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzdHLENBQUMsR0FBR2tMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsQ0FBQTtRQUM5QmtMLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzVHLENBQUMsR0FBR2lMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsQ0FBQTtFQUU5QmlMLE1BQUFBLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQ21MLEtBQUssR0FBRzlHLFFBQVEsQ0FBQzhHLEtBQUssQ0FBQTtFQUNwQzlHLE1BQUFBLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzZjLE1BQU0sR0FBR3hZLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzhjLE1BQU0sR0FBR3pZLFFBQVEsQ0FBQ2hMLEtBQUssQ0FBQTtFQUM1RGdMLE1BQUFBLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQ2dNLFFBQVEsR0FBRzNILFFBQVEsQ0FBQzJILFFBQVEsQ0FBQTtFQUM1QyxLQUFBO0tBQ0QsQ0FBQTtFQUFBcE4sRUFBQUEsTUFBQSxDQUVEMmIsY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVsVyxRQUFRLEVBQUU7TUFDdkIsSUFBSUEsUUFBUSxDQUFDckUsSUFBSSxFQUFFO0VBQ2pCcUUsTUFBQUEsUUFBUSxDQUFDckUsSUFBSSxDQUFDOEYsTUFBTSxJQUFJekIsUUFBUSxDQUFDckUsSUFBSSxDQUFDOEYsTUFBTSxDQUFDakUsV0FBVyxDQUFDd0MsUUFBUSxDQUFDckUsSUFBSSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDZSxJQUFJLENBQUM1QixNQUFNLENBQUNrRixRQUFRLENBQUNyRSxJQUFJLENBQUMsQ0FBQTtRQUMvQnFFLFFBQVEsQ0FBQ3JFLElBQUksR0FBRyxJQUFJLENBQUE7RUFDdEIsS0FBQTtFQUVBLElBQUEsSUFBSXFFLFFBQVEsQ0FBQzBZLFFBQVEsRUFBRSxJQUFJLENBQUNoYyxJQUFJLENBQUM1QixNQUFNLENBQUNrRixRQUFRLENBQUMwWSxRQUFRLENBQUMsQ0FBQTtFQUM1RCxHQUFBOztFQUVBO0VBQUEsR0FBQTtFQUFBbmUsRUFBQUEsTUFBQSxDQUNBeWQsWUFBWSxHQUFaLFNBQUFBLFlBQUFBLENBQWFoWSxRQUFRLEVBQUU7RUFDckJBLElBQUFBLFFBQVEsQ0FBQ3JFLElBQUksR0FBRyxJQUFJLENBQUNlLElBQUksQ0FBQ2xDLEdBQUcsQ0FBQ3dGLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQyxDQUFBO0VBRTVDLElBQUEsSUFBSXFFLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzhGLE1BQU0sRUFBRSxPQUFBO0VBQzFCLElBQUEsSUFBSXpCLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtFQUMxQnFFLE1BQUFBLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQ2dkLElBQUksR0FBRzNZLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzNGLEtBQUssQ0FBQ2hDLEtBQUssR0FBRyxDQUFDLENBQUE7RUFDbERnTSxNQUFBQSxRQUFRLENBQUNyRSxJQUFJLENBQUNpZCxJQUFJLEdBQUc1WSxRQUFRLENBQUNyRSxJQUFJLENBQUMzRixLQUFLLENBQUMvQixNQUFNLEdBQUcsQ0FBQyxDQUFBO0VBQ3JELEtBQUE7S0FDRCxDQUFBO0VBQUFzRyxFQUFBQSxNQUFBLENBRUR3ZCxZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYS9YLFFBQVEsRUFBRTtFQUNyQixJQUFBLElBQU0wWSxRQUFRLEdBQUcsSUFBSSxDQUFDaGMsSUFBSSxDQUFDbEMsR0FBRyxDQUFDbVosTUFBTSxDQUFDa0YsUUFBUSxDQUFDQyxRQUFRLENBQUMsQ0FBQTtNQUV4RCxJQUFJLElBQUksQ0FBQzlELE1BQU0sRUFBRTtRQUNmLElBQUl1QixLQUFLLENBQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDRyxNQUFNLENBQUMsRUFBRTtFQUMvQjBELFFBQUFBLFFBQVEsQ0FBQ0ssV0FBVyxDQUFDLElBQUksQ0FBQy9ELE1BQU0sQ0FBQyxDQUFBO0VBQ25DLE9BQUMsTUFBTTtFQUNMMEQsUUFBQUEsUUFBUSxDQUFDSyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUE7RUFDakMsT0FBQTtFQUNGLEtBQUE7RUFDQUwsSUFBQUEsUUFBUSxDQUFDTSxTQUFTLENBQUNoWixRQUFRLENBQUMvQyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUN1WixVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRXhXLFFBQVEsQ0FBQzBILE1BQU0sQ0FBQyxDQUFBO0VBQ2pGLElBQUEsSUFBTXVSLEtBQUssR0FBRyxJQUFJLENBQUN2YyxJQUFJLENBQUNsQyxHQUFHLENBQUNtWixNQUFNLENBQUNrRixRQUFRLENBQUNLLEtBQUssRUFBRSxDQUFDUixRQUFRLENBQUMsQ0FBQyxDQUFBO01BRTlEMVksUUFBUSxDQUFDckUsSUFBSSxHQUFHc2QsS0FBSyxDQUFBO01BQ3JCalosUUFBUSxDQUFDMFksUUFBUSxHQUFHQSxRQUFRLENBQUE7S0FDN0IsQ0FBQTtFQUFBbmUsRUFBQUEsTUFBQSxDQUVEbkIsT0FBTyxHQUFQLFNBQUFBLFVBQVU7RUFDUmdkLElBQUFBLGFBQUEsQ0FBQTNlLFNBQUEsQ0FBTTJCLE9BQU8sQ0FBQXpCLElBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQTtNQUNiLElBQUksQ0FBQ3FkLE1BQU0sR0FBRyxJQUFJLENBQUE7S0FDbkIsQ0FBQTtFQUFBLEVBQUEsT0FBQXNELGFBQUEsQ0FBQTtFQUFBLENBQUEsQ0F0RXdDeEQsWUFBWTs7RUNBdkQ7RUFDQTtFQUNBO0VBQ0E7QUFDcUJxRSxNQUFBQSxhQUFhLDBCQUFBL0MsYUFBQSxFQUFBO0lBQUEvTCxjQUFBLENBQUE4TyxhQUFBLEVBQUEvQyxhQUFBLENBQUEsQ0FBQTtFQUNoQztFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0UsRUFBQSxTQUFBK0MsYUFBWXBFLENBQUFBLE9BQU8sRUFBRXFFLFNBQVMsRUFBRTtFQUFBLElBQUEsSUFBQXhjLEtBQUEsQ0FBQTtFQUM5QkEsSUFBQUEsS0FBQSxHQUFBd1osYUFBQSxDQUFBemUsSUFBQSxDQUFBLElBQUEsRUFBTW9kLE9BQU8sQ0FBQyxJQUFBLElBQUEsQ0FBQTtNQUVkblksS0FBQSxDQUFLN0csT0FBTyxHQUFHNkcsS0FBQSxDQUFLbVksT0FBTyxDQUFDN2QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO01BQzVDMEYsS0FBQSxDQUFLeWMsU0FBUyxHQUFHLElBQUksQ0FBQTtNQUNyQnpjLEtBQUEsQ0FBS3djLFNBQVMsR0FBR0EsU0FBUyxDQUFBO0VBQzFCeGMsSUFBQUEsS0FBQSxDQUFLMGMsZUFBZSxDQUFDRixTQUFTLENBQUMsQ0FBQTtNQUUvQnhjLEtBQUEsQ0FBS0osSUFBSSxHQUFHLGVBQWUsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQzlCLEdBQUE7RUFBQyxFQUFBLElBQUFyQyxNQUFBLEdBQUE0ZSxhQUFBLENBQUExaEIsU0FBQSxDQUFBO0lBQUE4QyxNQUFBLENBRUQ3RixNQUFNLEdBQU4sU0FBQUEsT0FBT1YsS0FBSyxFQUFFQyxNQUFNLEVBQUU7RUFDcEIsSUFBQSxJQUFJLENBQUM4Z0IsT0FBTyxDQUFDL2dCLEtBQUssR0FBR0EsS0FBSyxDQUFBO0VBQzFCLElBQUEsSUFBSSxDQUFDK2dCLE9BQU8sQ0FBQzlnQixNQUFNLEdBQUdBLE1BQU0sQ0FBQTtLQUM3QixDQUFBO0VBQUFzRyxFQUFBQSxNQUFBLENBRUQrZSxlQUFlLEdBQWYsU0FBQUEsZUFBQUEsQ0FBZ0JGLFNBQVMsRUFBRTtNQUN6QixJQUFJLENBQUNBLFNBQVMsR0FBR0EsU0FBUyxHQUFHQSxTQUFTLEdBQUcsSUFBSTVPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQ3VLLE9BQU8sQ0FBQy9nQixLQUFLLEVBQUUsSUFBSSxDQUFDK2dCLE9BQU8sQ0FBQzlnQixNQUFNLENBQUMsQ0FBQTtNQUNyRyxJQUFJLENBQUNvbEIsU0FBUyxHQUFHLElBQUksQ0FBQ3RqQixPQUFPLENBQUN1akIsZUFBZSxDQUFDLElBQUksQ0FBQ0YsU0FBUyxDQUFDcGxCLEtBQUssRUFBRSxJQUFJLENBQUNvbEIsU0FBUyxDQUFDbmxCLE1BQU0sQ0FBQyxDQUFBO01BQzFGLElBQUksQ0FBQzhCLE9BQU8sQ0FBQ3dqQixZQUFZLENBQUMsSUFBSSxDQUFDRixTQUFTLEVBQUUsSUFBSSxDQUFDRCxTQUFTLENBQUN0a0IsQ0FBQyxFQUFFLElBQUksQ0FBQ3NrQixTQUFTLENBQUNya0IsQ0FBQyxDQUFDLENBQUE7S0FDOUUsQ0FBQTtFQUFBd0YsRUFBQUEsTUFBQSxDQUVEK2EsY0FBYyxHQUFkLFNBQUFBLGlCQUFpQjtFQUNmLElBQUEsSUFBSSxDQUFDdmYsT0FBTyxDQUFDSyxTQUFTLENBQUMsSUFBSSxDQUFDZ2pCLFNBQVMsQ0FBQ3RrQixDQUFDLEVBQUUsSUFBSSxDQUFDc2tCLFNBQVMsQ0FBQ3JrQixDQUFDLEVBQUUsSUFBSSxDQUFDcWtCLFNBQVMsQ0FBQ3BsQixLQUFLLEVBQUUsSUFBSSxDQUFDb2xCLFNBQVMsQ0FBQ25sQixNQUFNLENBQUMsQ0FBQTtFQUN2RyxJQUFBLElBQUksQ0FBQ29sQixTQUFTLEdBQUcsSUFBSSxDQUFDdGpCLE9BQU8sQ0FBQ0QsWUFBWSxDQUN4QyxJQUFJLENBQUNzakIsU0FBUyxDQUFDdGtCLENBQUMsRUFDaEIsSUFBSSxDQUFDc2tCLFNBQVMsQ0FBQ3JrQixDQUFDLEVBQ2hCLElBQUksQ0FBQ3FrQixTQUFTLENBQUNwbEIsS0FBSyxFQUNwQixJQUFJLENBQUNvbEIsU0FBUyxDQUFDbmxCLE1BQ2pCLENBQUMsQ0FBQTtLQUNGLENBQUE7RUFBQXNHLEVBQUFBLE1BQUEsQ0FFRGliLG1CQUFtQixHQUFuQixTQUFBQSxzQkFBc0I7TUFDcEIsSUFBSSxDQUFDemYsT0FBTyxDQUFDd2pCLFlBQVksQ0FBQyxJQUFJLENBQUNGLFNBQVMsRUFBRSxJQUFJLENBQUNELFNBQVMsQ0FBQ3RrQixDQUFDLEVBQUUsSUFBSSxDQUFDc2tCLFNBQVMsQ0FBQ3JrQixDQUFDLENBQUMsQ0FBQTtLQUM5RSxDQUFBO0lBQUF3RixNQUFBLENBRUR1YixpQkFBaUIsR0FBakIsU0FBQUEsa0JBQWtCOVYsUUFBUSxFQUFFLEVBQUUsQ0FBQTtFQUFBekYsRUFBQUEsTUFBQSxDQUU5QnliLGdCQUFnQixHQUFoQixTQUFBQSxnQkFBQUEsQ0FBaUJoVyxRQUFRLEVBQUU7TUFDekIsSUFBSSxJQUFJLENBQUNxWixTQUFTLEVBQUU7RUFDbEIsTUFBQSxJQUFJLENBQUNHLFFBQVEsQ0FDWCxJQUFJLENBQUNILFNBQVMsRUFDYnJaLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsR0FBRyxJQUFJLENBQUNza0IsU0FBUyxDQUFDdGtCLENBQUMsSUFBSyxDQUFDLEVBQ3JDa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHLElBQUksQ0FBQ3FrQixTQUFTLENBQUNya0IsQ0FBQyxJQUFLLENBQUMsRUFDdENpTCxRQUNGLENBQUMsQ0FBQTtFQUNILEtBQUE7S0FDRCxDQUFBO0VBQUF6RixFQUFBQSxNQUFBLENBRURpZixRQUFRLEdBQVIsU0FBQUEsUUFBU3JqQixDQUFBQSxTQUFTLEVBQUVyQixDQUFDLEVBQUVDLENBQUMsRUFBRWlMLFFBQVEsRUFBRTtFQUNsQyxJQUFBLElBQU1rSCxHQUFHLEdBQUdsSCxRQUFRLENBQUNrSCxHQUFHLENBQUE7TUFDeEIsSUFBSXBTLENBQUMsR0FBRyxDQUFDLElBQUlBLENBQUMsR0FBRyxJQUFJLENBQUNpZ0IsT0FBTyxDQUFDL2dCLEtBQUssSUFBSWUsQ0FBQyxHQUFHLENBQUMsSUFBSUEsQ0FBQyxHQUFHLElBQUksQ0FBQ2dnQixPQUFPLENBQUM5Z0IsTUFBTSxFQUFFLE9BQUE7RUFFekUsSUFBQSxJQUFNdEMsQ0FBQyxHQUFHLENBQUMsQ0FBQ29ELENBQUMsSUFBSSxDQUFDLElBQUlvQixTQUFTLENBQUNuQyxLQUFLLElBQUljLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7TUFDckRxQixTQUFTLENBQUM4USxJQUFJLENBQUN0VixDQUFDLENBQUMsR0FBR3VWLEdBQUcsQ0FBQ2hFLENBQUMsQ0FBQTtNQUN6Qi9NLFNBQVMsQ0FBQzhRLElBQUksQ0FBQ3RWLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR3VWLEdBQUcsQ0FBQy9ELENBQUMsQ0FBQTtNQUM3QmhOLFNBQVMsQ0FBQzhRLElBQUksQ0FBQ3RWLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR3VWLEdBQUcsQ0FBQ3ZVLENBQUMsQ0FBQTtFQUM3QndELElBQUFBLFNBQVMsQ0FBQzhRLElBQUksQ0FBQ3RWLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR3FPLFFBQVEsQ0FBQzhHLEtBQUssR0FBRyxHQUFHLENBQUE7S0FDN0MsQ0FBQTtFQUFBdk0sRUFBQUEsTUFBQSxDQUVEMmIsY0FBYyxHQUFkLFNBQUFBLGNBQWVsVyxDQUFBQSxRQUFRLEVBQUUsRUFBQzs7RUFFMUI7RUFDRjtFQUNBLE1BRkU7RUFBQXpGLEVBQUFBLE1BQUEsQ0FHQW5CLE9BQU8sR0FBUCxTQUFBQSxVQUFVO0VBQ1JnZCxJQUFBQSxhQUFBLENBQUEzZSxTQUFBLENBQU0yQixPQUFPLENBQUF6QixJQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7TUFDYixJQUFJLENBQUNxZCxNQUFNLEdBQUcsSUFBSSxDQUFBO01BQ2xCLElBQUksQ0FBQ2pmLE9BQU8sR0FBRyxJQUFJLENBQUE7TUFDbkIsSUFBSSxDQUFDc2pCLFNBQVMsR0FBRyxJQUFJLENBQUE7TUFDckIsSUFBSSxDQUFDRCxTQUFTLEdBQUcsSUFBSSxDQUFBO0tBQ3RCLENBQUE7RUFBQSxFQUFBLE9BQUFELGFBQUEsQ0FBQTtFQUFBLENBQUEsQ0E3RXdDckUsWUFBWTs7RUNGdkQsSUFBSTJFLFNBQVMsQ0FBQTs7RUFFYjtFQUNBO0VBQ0E7RUFDQTtBQUNxQkMsTUFBQUEsWUFBWSwwQkFBQXRELGFBQUEsRUFBQTtJQUFBL0wsY0FBQSxDQUFBcVAsWUFBQSxFQUFBdEQsYUFBQSxDQUFBLENBQUE7RUFDL0I7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNFLEVBQUEsU0FBQXNELFlBQVkzRSxDQUFBQSxPQUFPLEVBQUVDLE1BQU0sRUFBRTtFQUFBLElBQUEsSUFBQXBZLEtBQUEsQ0FBQTtFQUMzQkEsSUFBQUEsS0FBQSxHQUFBd1osYUFBQSxDQUFBemUsSUFBQSxDQUFBLElBQUEsRUFBTW9kLE9BQU8sQ0FBQyxJQUFBLElBQUEsQ0FBQTtNQUVkblksS0FBQSxDQUFLb1ksTUFBTSxHQUFHQSxNQUFNLENBQUE7TUFDcEJwWSxLQUFBLENBQUtLLEtBQUssR0FBRyxLQUFLLENBQUE7TUFDbEJMLEtBQUEsQ0FBSytjLFFBQVEsR0FBRyxLQUFLLENBQUE7TUFDckIvYyxLQUFBLENBQUtnZCxTQUFTLEdBQUcsSUFBSSxDQUFBO01BQ3JCaGQsS0FBQSxDQUFLRixJQUFJLENBQUMxQixNQUFNLEdBQUcsVUFBQ1csSUFBSSxFQUFFcUUsUUFBUSxFQUFBO0VBQUEsTUFBQSxPQUFLcEQsS0FBQSxDQUFLK2EsVUFBVSxDQUFDaGMsSUFBSSxFQUFFcUUsUUFBUSxDQUFDLENBQUE7RUFBQSxLQUFBLENBQUE7RUFDdEVwRCxJQUFBQSxLQUFBLENBQUtpZCxPQUFPLENBQUNsRyxNQUFNLENBQUNtRyxJQUFJLENBQUMsQ0FBQTtNQUV6QmxkLEtBQUEsQ0FBS0osSUFBSSxHQUFHLGNBQWMsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQzdCLEdBQUE7RUFBQyxFQUFBLElBQUFyQyxNQUFBLEdBQUFtZixZQUFBLENBQUFqaUIsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBRURzZixPQUFPLEdBQVAsU0FBQUEsT0FBQUEsQ0FBUUMsSUFBSSxFQUFFO01BQ1osSUFBSTtRQUNGTCxTQUFTLEdBQUdLLElBQUksSUFBSTtFQUFFQyxRQUFBQSxNQUFNLEVBQUUsRUFBQztTQUFHLENBQUE7RUFDbEMsTUFBQSxJQUFJLENBQUNDLGVBQWUsR0FBR1AsU0FBUyxDQUFDTSxNQUFNLENBQUNFLElBQUksSUFBSVIsU0FBUyxDQUFDTSxNQUFNLENBQUNHLFNBQVMsQ0FBQTtFQUM1RSxLQUFDLENBQUMsT0FBT3RqQixDQUFDLEVBQUUsRUFBQztLQUNkLENBQUE7RUFBQTJELEVBQUFBLE1BQUEsQ0FFRCthLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxHQUFpQixFQUFDOztFQUVsQjtFQUNGO0VBQ0EsTUFGRTtFQUFBL2EsRUFBQUEsTUFBQSxDQUdBdWIsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFBQSxDQUFrQjlWLFFBQVEsRUFBRTtNQUMxQixJQUFJQSxRQUFRLENBQUNyRSxJQUFJLEVBQUU7RUFDakJxRSxNQUFBQSxRQUFRLENBQUNyRSxJQUFJLEdBQUcsSUFBSSxDQUFDZSxJQUFJLENBQUNsQyxHQUFHLENBQUN3RixRQUFRLENBQUNyRSxJQUFJLEVBQUVxRSxRQUFRLENBQUMsQ0FBQTtFQUN4RCxLQUFDLE1BQU07RUFDTEEsTUFBQUEsUUFBUSxDQUFDckUsSUFBSSxHQUFHLElBQUksQ0FBQ2UsSUFBSSxDQUFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQ3lhLFVBQVUsRUFBRWpWLFFBQVEsQ0FBQyxDQUFBO0VBQzFELEtBQUE7TUFFQSxJQUFJLElBQUksQ0FBQzRaLFNBQVMsRUFBRTtFQUNsQjVaLE1BQUFBLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQ2llLFNBQVMsR0FBRyxJQUFJLENBQUNBLFNBQVMsQ0FBQTtFQUMxQyxLQUFBO01BRUEsSUFBSSxDQUFDN0UsT0FBTyxDQUFDd0QsUUFBUSxDQUFDdlksUUFBUSxDQUFDckUsSUFBSSxDQUFDLENBQUE7RUFDdEMsR0FBQTs7RUFFQTtFQUNGO0VBQ0EsTUFGRTtFQUFBcEIsRUFBQUEsTUFBQSxDQUdBeWIsZ0JBQWdCLEdBQWhCLFNBQUFBLGdCQUFBQSxDQUFpQmhXLFFBQVEsRUFBRTtNQUN6QixJQUFJLENBQUN4TCxTQUFTLENBQUN3TCxRQUFRLEVBQUVBLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQyxDQUFBO01BRXZDLElBQUksSUFBSSxDQUFDZ2UsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMxYyxLQUFLLEtBQUssSUFBSSxFQUFFO1FBQ2pEK0MsUUFBUSxDQUFDckUsSUFBSSxDQUFDd2UsSUFBSSxHQUFHdEssU0FBUyxDQUFDL0csb0JBQW9CLENBQUM5SSxRQUFRLENBQUMsQ0FBQTtFQUMvRCxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0EsTUFGRTtFQUFBekYsRUFBQUEsTUFBQSxDQUdBMmIsY0FBYyxHQUFkLFNBQUFBLGNBQUFBLENBQWVsVyxRQUFRLEVBQUU7TUFDdkIsSUFBSSxDQUFDK1UsT0FBTyxDQUFDdlgsV0FBVyxDQUFDd0MsUUFBUSxDQUFDckUsSUFBSSxDQUFDLENBQUE7TUFDdkMsSUFBSSxDQUFDZSxJQUFJLENBQUM1QixNQUFNLENBQUNrRixRQUFRLENBQUNyRSxJQUFJLENBQUMsQ0FBQTtNQUMvQnFFLFFBQVEsQ0FBQ3JFLElBQUksR0FBRyxJQUFJLENBQUE7S0FDckIsQ0FBQTtJQUFBcEIsTUFBQSxDQUVEL0YsU0FBUyxHQUFULFNBQUFBLFVBQVV3TCxRQUFRLEVBQUVuSixNQUFNLEVBQUU7RUFDMUJBLElBQUFBLE1BQU0sQ0FBQy9CLENBQUMsR0FBR2tMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsQ0FBQTtFQUN2QitCLElBQUFBLE1BQU0sQ0FBQzlCLENBQUMsR0FBR2lMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsQ0FBQTtFQUV2QjhCLElBQUFBLE1BQU0sQ0FBQ2lRLEtBQUssR0FBRzlHLFFBQVEsQ0FBQzhHLEtBQUssQ0FBQTtFQUU3QmpRLElBQUFBLE1BQU0sQ0FBQzdCLEtBQUssQ0FBQ0YsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDaEwsS0FBSyxDQUFBO0VBQy9CNkIsSUFBQUEsTUFBTSxDQUFDN0IsS0FBSyxDQUFDRCxDQUFDLEdBQUdpTCxRQUFRLENBQUNoTCxLQUFLLENBQUE7O0VBRS9CO01BQ0E2QixNQUFNLENBQUM4USxRQUFRLEdBQUczSCxRQUFRLENBQUMySCxRQUFRLEdBQUdySixRQUFRLENBQUNHLE1BQU0sQ0FBQztLQUN2RCxDQUFBO0lBQUFsRSxNQUFBLENBRURvZCxVQUFVLEdBQVYsU0FBQUEsV0FBV2hjLElBQUksRUFBRXFFLFFBQVEsRUFBRTtFQUN6QixJQUFBLElBQUlyRSxJQUFJLENBQUN1WixRQUFRLEVBQUUsT0FBTyxJQUFJLENBQUM2QyxZQUFZLENBQUMvWCxRQUFRLENBQUMsQ0FBQyxLQUNqRCxPQUFPLElBQUksQ0FBQ2dZLFlBQVksQ0FBQ3JjLElBQUksQ0FBQyxDQUFBO0tBQ3BDLENBQUE7RUFBQXBCLEVBQUFBLE1BQUEsQ0FFRHlkLFlBQVksR0FBWixTQUFBQSxZQUFBQSxDQUFhcmMsSUFBSSxFQUFFO01BQ2pCLElBQU02TCxNQUFNLEdBQUc3TCxJQUFJLENBQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDK2YsZUFBZSxDQUFDcmUsSUFBSSxDQUFDbEYsR0FBRyxDQUFDLEdBQUcsSUFBSWdqQixTQUFTLENBQUNNLE1BQU0sQ0FBQ3BlLElBQUksQ0FBQyxDQUFBO0VBRXpGNkwsSUFBQUEsTUFBTSxDQUFDNFMsTUFBTSxDQUFDdGxCLENBQUMsR0FBRyxHQUFHLENBQUE7RUFDckIwUyxJQUFBQSxNQUFNLENBQUM0UyxNQUFNLENBQUNybEIsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtFQUVyQixJQUFBLE9BQU95UyxNQUFNLENBQUE7S0FDZCxDQUFBO0VBQUFqTixFQUFBQSxNQUFBLENBRUR3ZCxZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYS9YLFFBQVEsRUFBRTtFQUNyQixJQUFBLElBQU0wWSxRQUFRLEdBQUcsSUFBSWUsU0FBUyxDQUFDWCxRQUFRLEVBQUUsQ0FBQTtNQUV6QyxJQUFJLElBQUksQ0FBQzlELE1BQU0sRUFBRTtFQUNmLE1BQUEsSUFBTUEsTUFBTSxHQUFHdUIsS0FBSyxDQUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQ0csTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDQSxNQUFNLEdBQUcsUUFBUSxDQUFBO0VBQ25FMEQsTUFBQUEsUUFBUSxDQUFDSyxXQUFXLENBQUMvRCxNQUFNLENBQUMsQ0FBQTtFQUM5QixLQUFBO01BRUEwRCxRQUFRLENBQUNNLFNBQVMsQ0FBQ2haLFFBQVEsQ0FBQy9DLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQTtNQUM5Q3liLFFBQVEsQ0FBQ2xDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFeFcsUUFBUSxDQUFDMEgsTUFBTSxDQUFDLENBQUE7TUFDMUNnUixRQUFRLENBQUMyQixPQUFPLEVBQUUsQ0FBQTtFQUVsQixJQUFBLE9BQU8zQixRQUFRLENBQUE7RUFDakIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFuZSxFQUFBQSxNQUFBLENBSUFuQixPQUFPLEdBQVAsU0FBQUEsT0FBQUEsQ0FBUXdHLFNBQVMsRUFBRTtFQUNqQndXLElBQUFBLGFBQUEsQ0FBQTNlLFNBQUEsQ0FBTTJCLE9BQU8sQ0FBQXpCLElBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQTtFQUViLElBQUEsSUFBSWhHLENBQUMsR0FBR2lPLFNBQVMsQ0FBQ25PLE1BQU0sQ0FBQTtNQUN4QixPQUFPRSxDQUFDLEVBQUUsRUFBRTtFQUNWLE1BQUEsSUFBSXFPLFFBQVEsR0FBR0osU0FBUyxDQUFDak8sQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSXFPLFFBQVEsQ0FBQ3JFLElBQUksRUFBRTtVQUNqQixJQUFJLENBQUNvWixPQUFPLENBQUN2WCxXQUFXLENBQUN3QyxRQUFRLENBQUNyRSxJQUFJLENBQUMsQ0FBQTtFQUN6QyxPQUFBO0VBQ0YsS0FBQTtLQUNELENBQUE7RUFBQSxFQUFBLE9BQUErZCxZQUFBLENBQUE7RUFBQSxDQUFBLENBekh1QzVFLFlBQVk7O0VDWHRCLElBRVh3RixNQUFNLGdCQUFBLFlBQUE7RUFDekIsRUFBQSxTQUFBQSxTQUFjO01BQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUcsRUFBRSxDQUFBO01BQ2QsSUFBSSxDQUFDOUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtNQUViLEtBQUssSUFBSTlsQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcsRUFBRSxFQUFFQSxDQUFDLEVBQUUsRUFBQTtFQUFFLE1BQUEsSUFBSSxDQUFDNG9CLElBQUksQ0FBQ3BpQixJQUFJLENBQUNvUixJQUFJLENBQUN2TyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFDLEtBQUE7RUFDeEYsR0FBQTtFQUFDLEVBQUEsSUFBQVQsTUFBQSxHQUFBK2YsTUFBQSxDQUFBN2lCLFNBQUEsQ0FBQTtJQUFBOEMsTUFBQSxDQUVEa0ksR0FBRyxHQUFILFNBQUFBLElBQUl3SCxDQUFDLEVBQUV0WSxDQUFDLEVBQUU7RUFDUixJQUFBLElBQUlBLENBQUMsS0FBSyxDQUFDLEVBQUU0WCxJQUFJLENBQUM5RyxHQUFHLENBQUN3SCxDQUFDLEVBQUUsSUFBSSxDQUFDc1EsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FDbENoUixJQUFJLENBQUNNLFFBQVEsQ0FBQyxJQUFJLENBQUMwUSxJQUFJLENBQUM1b0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFc1ksQ0FBQyxFQUFFLElBQUksQ0FBQ3NRLElBQUksQ0FBQzVvQixDQUFDLENBQUMsQ0FBQyxDQUFBO0VBRXJELElBQUEsSUFBSSxDQUFDOGxCLElBQUksR0FBR3ZsQixJQUFJLENBQUM2VixHQUFHLENBQUMsSUFBSSxDQUFDMFAsSUFBSSxFQUFFOWxCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUN2QyxDQUFBO0VBQUE0SSxFQUFBQSxNQUFBLENBRURwQyxJQUFJLEdBQUosU0FBQUEsSUFBQUEsQ0FBSzhSLENBQUMsRUFBRTtNQUNOLElBQUksSUFBSSxDQUFDd04sSUFBSSxLQUFLLENBQUMsRUFBRWxPLElBQUksQ0FBQzlHLEdBQUcsQ0FBQ3dILENBQUMsRUFBRSxJQUFJLENBQUNzUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUMxQ2hSLElBQUksQ0FBQ00sUUFBUSxDQUFDLElBQUksQ0FBQzBRLElBQUksQ0FBQyxJQUFJLENBQUM5QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUV4TixDQUFDLEVBQUUsSUFBSSxDQUFDc1EsSUFBSSxDQUFDLElBQUksQ0FBQzlDLElBQUksQ0FBQyxDQUFDLENBQUE7TUFFckUsSUFBSSxDQUFDQSxJQUFJLEVBQUUsQ0FBQTtLQUNaLENBQUE7RUFBQWxkLEVBQUFBLE1BQUEsQ0FFREssR0FBRyxHQUFILFNBQUFBLE1BQU07TUFDSixJQUFJLElBQUksQ0FBQzZjLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDQSxJQUFJLEVBQUUsQ0FBQTtLQUMvQixDQUFBO0VBQUFsZCxFQUFBQSxNQUFBLENBRURpZ0IsR0FBRyxHQUFILFNBQUFBLE1BQU07TUFDSixPQUFPLElBQUksQ0FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQzlDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUNoQyxDQUFBO0VBQUEsRUFBQSxPQUFBNkMsTUFBQSxDQUFBO0VBQUEsQ0FBQSxFQUFBOztFQ3BCSDtFQUNBO0VBQ0E7RUFDQTtBQUNxQkcsTUFBQUEsYUFBYSwwQkFBQXJFLGFBQUEsRUFBQTtJQUFBL0wsY0FBQSxDQUFBb1EsYUFBQSxFQUFBckUsYUFBQSxDQUFBLENBQUE7RUFDaEM7RUFDRjtFQUNBO0VBQ0E7SUFDRSxTQUFBcUUsYUFBQUEsQ0FBWTFGLE9BQU8sRUFBRTtFQUFBLElBQUEsSUFBQW5ZLEtBQUEsQ0FBQTtFQUNuQkEsSUFBQUEsS0FBQSxHQUFBd1osYUFBQSxDQUFBemUsSUFBQSxDQUFBLElBQUEsRUFBTW9kLE9BQU8sQ0FBQyxJQUFBLElBQUEsQ0FBQTtNQUVkblksS0FBQSxDQUFLOGQsRUFBRSxHQUFHOWQsS0FBQSxDQUFLbVksT0FBTyxDQUFDN2QsVUFBVSxDQUFDLG9CQUFvQixFQUFFO0VBQUV5akIsTUFBQUEsU0FBUyxFQUFFLElBQUk7RUFBRUMsTUFBQUEsT0FBTyxFQUFFLEtBQUs7RUFBRUMsTUFBQUEsS0FBSyxFQUFFLEtBQUE7RUFBTSxLQUFDLENBQUMsQ0FBQTtNQUMxRyxJQUFJLENBQUNqZSxLQUFBLENBQUs4ZCxFQUFFLEVBQUVoUCxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtNQUUvRDlPLEtBQUEsQ0FBS2tlLE9BQU8sRUFBRSxDQUFBO01BQ2RsZSxLQUFBLENBQUttZSxZQUFZLEVBQUUsQ0FBQTtNQUNuQm5lLEtBQUEsQ0FBS29lLFdBQVcsRUFBRSxDQUFBO01BQ2xCcGUsS0FBQSxDQUFLcWUsV0FBVyxFQUFFLENBQUE7TUFFbEJyZSxLQUFBLENBQUs4ZCxFQUFFLENBQUNRLGFBQWEsQ0FBQ3RlLEtBQUEsQ0FBSzhkLEVBQUUsQ0FBQ1MsUUFBUSxDQUFDLENBQUE7RUFDdkN2ZSxJQUFBQSxLQUFBLENBQUs4ZCxFQUFFLENBQUNVLFNBQVMsQ0FBQ3hlLEtBQUEsQ0FBSzhkLEVBQUUsQ0FBQ1csU0FBUyxFQUFFemUsS0FBQSxDQUFLOGQsRUFBRSxDQUFDWSxtQkFBbUIsQ0FBQyxDQUFBO01BQ2pFMWUsS0FBQSxDQUFLOGQsRUFBRSxDQUFDYSxNQUFNLENBQUMzZSxLQUFBLENBQUs4ZCxFQUFFLENBQUNjLEtBQUssQ0FBQyxDQUFBO0VBQzdCNWUsSUFBQUEsS0FBQSxDQUFLMFosV0FBVyxHQUFHMVosS0FBQSxDQUFLMFosV0FBVyxDQUFDdmQsSUFBSSxDQUFBNmUsc0JBQUEsQ0FBQWhiLEtBQUEsQ0FBSyxDQUFDLENBQUE7TUFFOUNBLEtBQUEsQ0FBS0osSUFBSSxHQUFHLGVBQWUsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQzlCLEdBQUE7RUFBQyxFQUFBLElBQUFyQyxNQUFBLEdBQUFrZ0IsYUFBQSxDQUFBaGpCLFNBQUEsQ0FBQTtFQUFBOEMsRUFBQUEsTUFBQSxDQUVEOEcsSUFBSSxHQUFKLFNBQUFBLElBQUFBLENBQUsvRixNQUFNLEVBQUU7RUFDWDhhLElBQUFBLGFBQUEsQ0FBQTNlLFNBQUEsQ0FBTTRKLElBQUksQ0FBQTFKLElBQUEsT0FBQzJELE1BQU0sQ0FBQSxDQUFBO0VBQ2pCLElBQUEsSUFBSSxDQUFDNUcsTUFBTSxDQUFDLElBQUksQ0FBQ3FnQixPQUFPLENBQUMvZ0IsS0FBSyxFQUFFLElBQUksQ0FBQytnQixPQUFPLENBQUM5Z0IsTUFBTSxDQUFDLENBQUE7S0FDckQsQ0FBQTtJQUFBc0csTUFBQSxDQUVEN0YsTUFBTSxHQUFOLFNBQUFBLE9BQU9WLEtBQUssRUFBRUMsTUFBTSxFQUFFO0VBQ3BCLElBQUEsSUFBSSxDQUFDd25CLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtFQUNqQixJQUFBLElBQUksQ0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtNQUVoQixJQUFJLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcxbkIsS0FBSyxDQUFBO01BQ3hCLElBQUksQ0FBQzBuQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHem5CLE1BQU0sQ0FBQTtNQUV6QixJQUFJLENBQUMwbkIsTUFBTSxDQUFDbFosR0FBRyxDQUFDLElBQUksQ0FBQ2daLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtNQUM3QixJQUFJLENBQUNFLE1BQU0sQ0FBQ2xaLEdBQUcsQ0FBQyxJQUFJLENBQUNpWixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7RUFFN0IsSUFBQSxJQUFJLENBQUNoQixFQUFFLENBQUNrQixRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTVuQixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO0VBQ3JDLElBQUEsSUFBSSxDQUFDOGdCLE9BQU8sQ0FBQy9nQixLQUFLLEdBQUdBLEtBQUssQ0FBQTtFQUMxQixJQUFBLElBQUksQ0FBQytnQixPQUFPLENBQUM5Z0IsTUFBTSxHQUFHQSxNQUFNLENBQUE7S0FDN0IsQ0FBQTtFQUFBc0csRUFBQUEsTUFBQSxDQUVEd2dCLFlBQVksR0FBWixTQUFBQSxZQUFBQSxDQUFhclQsTUFBTSxFQUFFO01BQ25CLElBQUksQ0FBQ21VLGVBQWUsR0FBRyxJQUFJLENBQUM5RCxZQUFZLENBQUNyUSxNQUFNLENBQUMsQ0FBQTtLQUNqRCxDQUFBO0VBQUFuTixFQUFBQSxNQUFBLENBRUR1aEIsZUFBZSxHQUFmLFNBQUFBLGtCQUFrQjtFQUNoQixJQUFBLElBQU1DLFFBQVEsR0FBRyxDQUNmLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQiw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZiw2Q0FBNkMsRUFDN0MscUNBQXFDLEVBQ3JDLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIsR0FBRyxDQUNKLENBQUNqZixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDWixJQUFBLE9BQU9pZixRQUFRLENBQUE7S0FDaEIsQ0FBQTtFQUFBeGhCLEVBQUFBLE1BQUEsQ0FFRHloQixpQkFBaUIsR0FBakIsU0FBQUEsb0JBQW9CO0VBQ2xCLElBQUEsSUFBTUMsUUFBUSxHQUFHLENBQ2YsMEJBQTBCLEVBQzFCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZix5REFBeUQsRUFDekQsa0RBQWtELEVBQ2xELDBCQUEwQixFQUMxQixHQUFHLENBQ0osQ0FBQ25mLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUNaLElBQUEsT0FBT21mLFFBQVEsQ0FBQTtLQUNoQixDQUFBO0VBQUExaEIsRUFBQUEsTUFBQSxDQUVEdWdCLE9BQU8sR0FBUCxTQUFBQSxVQUFVO0VBQ1IsSUFBQSxJQUFJLENBQUNhLE1BQU0sR0FBRyxJQUFJckIsTUFBTSxFQUFFLENBQUE7RUFDMUIsSUFBQSxJQUFJLENBQUNtQixJQUFJLEdBQUdsUyxJQUFJLENBQUN2TyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3RELElBQUEsSUFBSSxDQUFDMGdCLElBQUksR0FBR25TLElBQUksQ0FBQ3ZPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ2hFLElBQUEsSUFBSSxDQUFDa2hCLGNBQWMsR0FBRyxFQUFFLENBQUE7S0FDekIsQ0FBQTtFQUFBM2hCLEVBQUFBLE1BQUEsQ0FFRDJnQixhQUFhLEdBQWIsU0FBQUEsYUFBQUEsQ0FBY2lCLENBQUMsRUFBRTtNQUNmLElBQUksQ0FBQ3pCLEVBQUUsQ0FBQ1EsYUFBYSxDQUFDLElBQUksQ0FBQ1IsRUFBRSxDQUFDeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNsQyxDQUFBO0lBQUE1aEIsTUFBQSxDQUVENmdCLFNBQVMsR0FBVCxTQUFBQSxVQUFVZSxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNkLElBQUEsSUFBSSxDQUFDMUIsRUFBRSxDQUFDVSxTQUFTLENBQUMsSUFBSSxDQUFDVixFQUFFLENBQUN5QixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUN6QixFQUFFLENBQUMwQixDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzFDLENBQUE7SUFBQTdoQixNQUFBLENBRUQ4aEIsU0FBUyxHQUFULFNBQUFBLFNBQUFBLENBQVUzQixFQUFFLEVBQUV6ZSxHQUFHLEVBQUVxZ0IsRUFBRSxFQUFFO01BQ3JCLElBQU1DLE1BQU0sR0FBR0QsRUFBRSxHQUFHNUIsRUFBRSxDQUFDOEIsWUFBWSxDQUFDOUIsRUFBRSxDQUFDK0IsZUFBZSxDQUFDLEdBQUcvQixFQUFFLENBQUM4QixZQUFZLENBQUM5QixFQUFFLENBQUNnQyxhQUFhLENBQUMsQ0FBQTtFQUUzRmhDLElBQUFBLEVBQUUsQ0FBQ2lDLFlBQVksQ0FBQ0osTUFBTSxFQUFFdGdCLEdBQUcsQ0FBQyxDQUFBO0VBQzVCeWUsSUFBQUEsRUFBRSxDQUFDa0MsYUFBYSxDQUFDTCxNQUFNLENBQUMsQ0FBQTtNQUV4QixJQUFJLENBQUM3QixFQUFFLENBQUNtQyxrQkFBa0IsQ0FBQ04sTUFBTSxFQUFFN0IsRUFBRSxDQUFDb0MsY0FBYyxDQUFDLEVBQUU7RUFDckRwUixNQUFBQSxLQUFLLENBQUNnUCxFQUFFLENBQUNxQyxnQkFBZ0IsQ0FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQTtFQUNsQyxNQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsS0FBQTtFQUVBLElBQUEsT0FBT0EsTUFBTSxDQUFBO0tBQ2QsQ0FBQTtFQUFBaGlCLEVBQUFBLE1BQUEsQ0FFRHlnQixXQUFXLEdBQVgsU0FBQUEsY0FBYztFQUNaLElBQUEsSUFBTWdDLGNBQWMsR0FBRyxJQUFJLENBQUNYLFNBQVMsQ0FBQyxJQUFJLENBQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDc0IsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtFQUM5RSxJQUFBLElBQU1pQixZQUFZLEdBQUcsSUFBSSxDQUFDWixTQUFTLENBQUMsSUFBSSxDQUFDM0IsRUFBRSxFQUFFLElBQUksQ0FBQ29CLGVBQWUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO01BRTNFLElBQUksQ0FBQ29CLFFBQVEsR0FBRyxJQUFJLENBQUN4QyxFQUFFLENBQUN5QyxhQUFhLEVBQUUsQ0FBQTtNQUN2QyxJQUFJLENBQUN6QyxFQUFFLENBQUMwQyxZQUFZLENBQUMsSUFBSSxDQUFDRixRQUFRLEVBQUVELFlBQVksQ0FBQyxDQUFBO01BQ2pELElBQUksQ0FBQ3ZDLEVBQUUsQ0FBQzBDLFlBQVksQ0FBQyxJQUFJLENBQUNGLFFBQVEsRUFBRUYsY0FBYyxDQUFDLENBQUE7TUFDbkQsSUFBSSxDQUFDdEMsRUFBRSxDQUFDMkMsV0FBVyxDQUFDLElBQUksQ0FBQ0gsUUFBUSxDQUFDLENBQUE7TUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQ3hDLEVBQUUsQ0FBQzRDLG1CQUFtQixDQUFDLElBQUksQ0FBQ0osUUFBUSxFQUFFLElBQUksQ0FBQ3hDLEVBQUUsQ0FBQzZDLFdBQVcsQ0FBQyxFQUFFN1IsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7TUFFM0csSUFBSSxDQUFDZ1AsRUFBRSxDQUFDOEMsVUFBVSxDQUFDLElBQUksQ0FBQ04sUUFBUSxDQUFDLENBQUE7RUFDakMsSUFBQSxJQUFJLENBQUNBLFFBQVEsQ0FBQ08sR0FBRyxHQUFHLElBQUksQ0FBQy9DLEVBQUUsQ0FBQ2dELGlCQUFpQixDQUFDLElBQUksQ0FBQ1IsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUE7RUFDL0UsSUFBQSxJQUFJLENBQUNBLFFBQVEsQ0FBQ1MsR0FBRyxHQUFHLElBQUksQ0FBQ2pELEVBQUUsQ0FBQ2dELGlCQUFpQixDQUFDLElBQUksQ0FBQ1IsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFBO01BQzdFLElBQUksQ0FBQ3hDLEVBQUUsQ0FBQ2tELHVCQUF1QixDQUFDLElBQUksQ0FBQ1YsUUFBUSxDQUFDUyxHQUFHLENBQUMsQ0FBQTtNQUNsRCxJQUFJLENBQUNqRCxFQUFFLENBQUNrRCx1QkFBdUIsQ0FBQyxJQUFJLENBQUNWLFFBQVEsQ0FBQ08sR0FBRyxDQUFDLENBQUE7RUFFbEQsSUFBQSxJQUFJLENBQUNQLFFBQVEsQ0FBQ1csV0FBVyxHQUFHLElBQUksQ0FBQ25ELEVBQUUsQ0FBQ29ELGtCQUFrQixDQUFDLElBQUksQ0FBQ1osUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0VBQzdFLElBQUEsSUFBSSxDQUFDQSxRQUFRLENBQUNhLGNBQWMsR0FBRyxJQUFJLENBQUNyRCxFQUFFLENBQUNvRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUNaLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtFQUNwRixJQUFBLElBQUksQ0FBQ0EsUUFBUSxDQUFDYyxNQUFNLEdBQUcsSUFBSSxDQUFDdEQsRUFBRSxDQUFDb0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDWixRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUE7RUFDOUUsSUFBQSxJQUFJLENBQUNBLFFBQVEsQ0FBQ2pnQixLQUFLLEdBQUcsSUFBSSxDQUFDeWQsRUFBRSxDQUFDb0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDWixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7RUFDekUsSUFBQSxJQUFJLENBQUN4QyxFQUFFLENBQUN1RCxTQUFTLENBQUMsSUFBSSxDQUFDZixRQUFRLENBQUNjLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUMzQyxDQUFBO0VBQUF6akIsRUFBQUEsTUFBQSxDQUVEMGdCLFdBQVcsR0FBWCxTQUFBQSxjQUFjO0VBQ1osSUFBQSxJQUFNaUQsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUM3QixJQUFBLElBQUlDLEdBQUcsQ0FBQTtNQUVQLElBQUksQ0FBQ0MsV0FBVyxHQUFHLElBQUksQ0FBQzFELEVBQUUsQ0FBQ2hFLFlBQVksRUFBRSxDQUFBO0VBQ3pDLElBQUEsSUFBSSxDQUFDZ0UsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQzRELG9CQUFvQixFQUFFLElBQUksQ0FBQ0YsV0FBVyxDQUFDLENBQUE7TUFDbEUsSUFBSSxDQUFDMUQsRUFBRSxDQUFDNkQsVUFBVSxDQUFDLElBQUksQ0FBQzdELEVBQUUsQ0FBQzRELG9CQUFvQixFQUFFLElBQUlFLFdBQVcsQ0FBQ04sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDeEQsRUFBRSxDQUFDK0QsV0FBVyxDQUFDLENBQUE7RUFFMUYsSUFBQSxJQUFJOXNCLENBQUMsQ0FBQTtNQUNMLElBQUkrc0IsR0FBRyxHQUFHLEVBQUUsQ0FBQTtNQUNaLEtBQUsvc0IsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLEdBQUcsRUFBRUEsQ0FBQyxFQUFFLEVBQUE7RUFBRStzQixNQUFBQSxHQUFHLENBQUN2bUIsSUFBSSxDQUFDeEcsQ0FBQyxDQUFDLENBQUE7RUFBQyxLQUFBO0VBQ3RDd3NCLElBQUFBLEdBQUcsR0FBRyxJQUFJSyxXQUFXLENBQUNFLEdBQUcsQ0FBQyxDQUFBO01BRTFCLElBQUksQ0FBQ0MsT0FBTyxHQUFHLElBQUksQ0FBQ2pFLEVBQUUsQ0FBQ2hFLFlBQVksRUFBRSxDQUFBO0VBQ3JDLElBQUEsSUFBSSxDQUFDZ0UsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQzRELG9CQUFvQixFQUFFLElBQUksQ0FBQ0ssT0FBTyxDQUFDLENBQUE7RUFDOUQsSUFBQSxJQUFJLENBQUNqRSxFQUFFLENBQUM2RCxVQUFVLENBQUMsSUFBSSxDQUFDN0QsRUFBRSxDQUFDNEQsb0JBQW9CLEVBQUVILEdBQUcsRUFBRSxJQUFJLENBQUN6RCxFQUFFLENBQUMrRCxXQUFXLENBQUMsQ0FBQTtFQUUxRUMsSUFBQUEsR0FBRyxHQUFHLEVBQUUsQ0FBQTtNQUNSLEtBQUsvc0IsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLEdBQUcsRUFBRUEsQ0FBQyxFQUFFLEVBQUE7RUFBRStzQixNQUFBQSxHQUFHLENBQUN2bUIsSUFBSSxDQUFDeEcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7RUFBQyxLQUFBO0VBQ3BEd3NCLElBQUFBLEdBQUcsR0FBRyxJQUFJSyxXQUFXLENBQUNFLEdBQUcsQ0FBQyxDQUFBO01BRTFCLElBQUksQ0FBQ0UsV0FBVyxHQUFHLElBQUksQ0FBQ2xFLEVBQUUsQ0FBQ2hFLFlBQVksRUFBRSxDQUFBO0VBQ3pDLElBQUEsSUFBSSxDQUFDZ0UsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQzRELG9CQUFvQixFQUFFLElBQUksQ0FBQ00sV0FBVyxDQUFDLENBQUE7RUFDbEUsSUFBQSxJQUFJLENBQUNsRSxFQUFFLENBQUM2RCxVQUFVLENBQUMsSUFBSSxDQUFDN0QsRUFBRSxDQUFDNEQsb0JBQW9CLEVBQUVILEdBQUcsRUFBRSxJQUFJLENBQUN6RCxFQUFFLENBQUMrRCxXQUFXLENBQUMsQ0FBQTtLQUMzRSxDQUFBO0VBQUFsa0IsRUFBQUEsTUFBQSxDQUVEd2QsWUFBWSxHQUFaLFNBQUFBLFlBQUFBLENBQWE4RyxNQUFNLEVBQUU7RUFDbkIsSUFBQSxJQUFJLENBQUNDLGtCQUFrQixHQUFHL25CLFNBQVMsQ0FBQ3JGLEtBQUssQ0FBQ3VKLElBQUksQ0FBQzlELFNBQVMsQ0FBQzBuQixNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUNyRSxJQUFBLElBQU03bkIsTUFBTSxHQUFHQyxPQUFPLENBQUNuRCxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQ2dyQixrQkFBa0IsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDQSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQTtFQUM5RyxJQUFBLElBQU0vb0IsT0FBTyxHQUFHaUIsTUFBTSxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7TUFFdkNuQixPQUFPLENBQUNvaEIsU0FBUyxFQUFFLENBQUE7TUFDbkJwaEIsT0FBTyxDQUFDcWhCLEdBQUcsQ0FBQyxJQUFJLENBQUMwSCxrQkFBa0IsRUFBRSxJQUFJLENBQUNBLGtCQUFrQixFQUFFLElBQUksQ0FBQ0Esa0JBQWtCLEVBQUUsQ0FBQyxFQUFFNXNCLElBQUksQ0FBQ2lNLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7TUFDNUdwSSxPQUFPLENBQUN3aEIsU0FBUyxFQUFFLENBQUE7TUFDbkJ4aEIsT0FBTyxDQUFDK2dCLFNBQVMsR0FBRyxNQUFNLENBQUE7TUFDMUIvZ0IsT0FBTyxDQUFDeWhCLElBQUksRUFBRSxDQUFBO0VBRWQsSUFBQSxPQUFPeGdCLE1BQU0sQ0FBQytuQixTQUFTLEVBQUUsQ0FBQTtLQUMxQixDQUFBO0VBQUF4a0IsRUFBQUEsTUFBQSxDQUVEeWtCLGNBQWMsR0FBZCxTQUFBQSxjQUFBQSxDQUFlaGYsUUFBUSxFQUFFO0VBQ3ZCLElBQUEsSUFBTWlmLEVBQUUsR0FBR2pmLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzNILEtBQUssQ0FBQTtFQUM5QixJQUFBLElBQU1rckIsRUFBRSxHQUFHbGYsUUFBUSxDQUFDckUsSUFBSSxDQUFDMUgsTUFBTSxDQUFBO01BRS9CLElBQU1rckIsTUFBTSxHQUFHcG9CLFNBQVMsQ0FBQ3JGLEtBQUssQ0FBQ3NPLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzNILEtBQUssQ0FBQyxDQUFBO01BQ25ELElBQU1vckIsT0FBTyxHQUFHcm9CLFNBQVMsQ0FBQ3JGLEtBQUssQ0FBQ3NPLFFBQVEsQ0FBQ3JFLElBQUksQ0FBQzFILE1BQU0sQ0FBQyxDQUFBO01BRXJELElBQU1vckIsT0FBTyxHQUFHcmYsUUFBUSxDQUFDckUsSUFBSSxDQUFDM0gsS0FBSyxHQUFHbXJCLE1BQU0sQ0FBQTtNQUM1QyxJQUFNRyxPQUFPLEdBQUd0ZixRQUFRLENBQUNyRSxJQUFJLENBQUMxSCxNQUFNLEdBQUdtckIsT0FBTyxDQUFBO01BRTlDLElBQUksQ0FBQyxJQUFJLENBQUNsRCxjQUFjLENBQUNsYyxRQUFRLENBQUNpSCxJQUFJLENBQUN4USxHQUFHLENBQUMsRUFDekMsSUFBSSxDQUFDeWxCLGNBQWMsQ0FBQ2xjLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3hRLEdBQUcsQ0FBQyxHQUFHLENBQ3ZDLElBQUksQ0FBQ2lrQixFQUFFLENBQUM2RSxhQUFhLEVBQUUsRUFDdkIsSUFBSSxDQUFDN0UsRUFBRSxDQUFDaEUsWUFBWSxFQUFFLEVBQ3RCLElBQUksQ0FBQ2dFLEVBQUUsQ0FBQ2hFLFlBQVksRUFBRSxDQUN2QixDQUFBO0VBRUgxVyxJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUN1WSxPQUFPLEdBQUcsSUFBSSxDQUFDdEQsY0FBYyxDQUFDbGMsUUFBUSxDQUFDaUgsSUFBSSxDQUFDeFEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDakV1SixJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUN3WSxRQUFRLEdBQUcsSUFBSSxDQUFDdkQsY0FBYyxDQUFDbGMsUUFBUSxDQUFDaUgsSUFBSSxDQUFDeFEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDbEV1SixJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUN5WSxRQUFRLEdBQUcsSUFBSSxDQUFDeEQsY0FBYyxDQUFDbGMsUUFBUSxDQUFDaUgsSUFBSSxDQUFDeFEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFFbEUsSUFBQSxJQUFJLENBQUNpa0IsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQ2lGLFlBQVksRUFBRTNmLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3lZLFFBQVEsQ0FBQyxDQUFBO0VBQ2hFLElBQUEsSUFBSSxDQUFDaEYsRUFBRSxDQUFDNkQsVUFBVSxDQUNoQixJQUFJLENBQUM3RCxFQUFFLENBQUNpRixZQUFZLEVBQ3BCLElBQUlqVyxZQUFZLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFMlYsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUVDLE9BQU8sRUFBRUEsT0FBTyxFQUFFQSxPQUFPLENBQUMsQ0FBQyxFQUMxRSxJQUFJLENBQUM1RSxFQUFFLENBQUMrRCxXQUNWLENBQUMsQ0FBQTtFQUNELElBQUEsSUFBSSxDQUFDL0QsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQ2lGLFlBQVksRUFBRTNmLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3dZLFFBQVEsQ0FBQyxDQUFBO0VBQ2hFLElBQUEsSUFBSSxDQUFDL0UsRUFBRSxDQUFDNkQsVUFBVSxDQUNoQixJQUFJLENBQUM3RCxFQUFFLENBQUNpRixZQUFZLEVBQ3BCLElBQUlqVyxZQUFZLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFdVYsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUVDLEVBQUUsRUFBRUQsRUFBRSxFQUFFQyxFQUFFLENBQUMsQ0FBQyxFQUN0RCxJQUFJLENBQUN4RSxFQUFFLENBQUMrRCxXQUNWLENBQUMsQ0FBQTtNQUVELElBQU0xb0IsT0FBTyxHQUFHaUssUUFBUSxDQUFDaUgsSUFBSSxDQUFDalEsTUFBTSxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDckQsSUFBQSxJQUFNK1AsSUFBSSxHQUFHbFIsT0FBTyxDQUFDRCxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRXFwQixNQUFNLEVBQUVDLE9BQU8sQ0FBQyxDQUFBO0VBRXhELElBQUEsSUFBSSxDQUFDMUUsRUFBRSxDQUFDa0YsV0FBVyxDQUFDLElBQUksQ0FBQ2xGLEVBQUUsQ0FBQ21GLFVBQVUsRUFBRTdmLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3VZLE9BQU8sQ0FBQyxDQUFBO0VBQzlELElBQUEsSUFBSSxDQUFDOUUsRUFBRSxDQUFDb0YsVUFBVSxDQUFDLElBQUksQ0FBQ3BGLEVBQUUsQ0FBQ21GLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDbkYsRUFBRSxDQUFDcUYsSUFBSSxFQUFFLElBQUksQ0FBQ3JGLEVBQUUsQ0FBQ3FGLElBQUksRUFBRSxJQUFJLENBQUNyRixFQUFFLENBQUNzRixhQUFhLEVBQUUvWSxJQUFJLENBQUMsQ0FBQTtNQUNsRyxJQUFJLENBQUN5VCxFQUFFLENBQUN1RixhQUFhLENBQUMsSUFBSSxDQUFDdkYsRUFBRSxDQUFDbUYsVUFBVSxFQUFFLElBQUksQ0FBQ25GLEVBQUUsQ0FBQ3dGLGtCQUFrQixFQUFFLElBQUksQ0FBQ3hGLEVBQUUsQ0FBQ3lGLE1BQU0sQ0FBQyxDQUFBO01BQ3JGLElBQUksQ0FBQ3pGLEVBQUUsQ0FBQ3VGLGFBQWEsQ0FBQyxJQUFJLENBQUN2RixFQUFFLENBQUNtRixVQUFVLEVBQUUsSUFBSSxDQUFDbkYsRUFBRSxDQUFDMEYsa0JBQWtCLEVBQUUsSUFBSSxDQUFDMUYsRUFBRSxDQUFDMkYscUJBQXFCLENBQUMsQ0FBQTtNQUNwRyxJQUFJLENBQUMzRixFQUFFLENBQUM0RixjQUFjLENBQUMsSUFBSSxDQUFDNUYsRUFBRSxDQUFDbUYsVUFBVSxDQUFDLENBQUE7RUFFMUM3ZixJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUNzWixhQUFhLEdBQUcsSUFBSSxDQUFBO0VBQ2xDdmdCLElBQUFBLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3VaLFlBQVksR0FBR3ZCLEVBQUUsQ0FBQTtFQUMvQmpmLElBQUFBLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3daLGFBQWEsR0FBR3ZCLEVBQUUsQ0FBQTtLQUNqQyxDQUFBO0VBQUEza0IsRUFBQUEsTUFBQSxDQUVEK2EsY0FBYyxHQUFkLFNBQUFBLGlCQUFpQjtFQUNmO0VBQ0E7S0FDRCxDQUFBO0VBQUEvYSxFQUFBQSxNQUFBLENBRUR1YixpQkFBaUIsR0FBakIsU0FBQUEsaUJBQUFBLENBQWtCOVYsUUFBUSxFQUFFO0VBQzFCQSxJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUNzWixhQUFhLEdBQUcsS0FBSyxDQUFBO01BQ25DdmdCLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3laLElBQUksR0FBR25YLElBQUksQ0FBQ3ZPLE1BQU0sRUFBRSxDQUFBO01BQ2xDZ0YsUUFBUSxDQUFDaUgsSUFBSSxDQUFDeVosSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtNQUN6QjFnQixRQUFRLENBQUNpSCxJQUFJLENBQUMwWixJQUFJLEdBQUdwWCxJQUFJLENBQUN2TyxNQUFNLEVBQUUsQ0FBQTtNQUNsQ2dGLFFBQVEsQ0FBQ2lILElBQUksQ0FBQzBaLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7TUFFekIsSUFBSTNnQixRQUFRLENBQUNyRSxJQUFJLEVBQUU7RUFDakJ6QyxNQUFBQSxPQUFPLENBQUM3QyxlQUFlLENBQUMySixRQUFRLENBQUNyRSxJQUFJLEVBQUUsSUFBSSxDQUFDMmEsV0FBVyxFQUFFdFcsUUFBUSxDQUFDLENBQUE7RUFDcEUsS0FBQyxNQUFNO0VBQ0w5RyxNQUFBQSxPQUFPLENBQUM3QyxlQUFlLENBQUMsSUFBSSxDQUFDd2xCLGVBQWUsRUFBRSxJQUFJLENBQUN2RixXQUFXLEVBQUV0VyxRQUFRLENBQUMsQ0FBQTtRQUN6RUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDMlosUUFBUSxHQUFHNWdCLFFBQVEsQ0FBQzBILE1BQU0sR0FBRyxJQUFJLENBQUNvWCxrQkFBa0IsQ0FBQTtFQUNwRSxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUFBLEdBQUE7SUFBQXZrQixNQUFBLENBQ0ErYixXQUFXLEdBQVgsU0FBQUEsWUFBWWhnQixHQUFHLEVBQUUwSixRQUFRLEVBQUU7TUFDekIsSUFBSUEsUUFBUSxDQUFDdUgsSUFBSSxFQUFFLE9BQUE7TUFDbkJ2SCxRQUFRLENBQUNyRSxJQUFJLEdBQUdyRixHQUFHLENBQUE7RUFDbkIwSixJQUFBQSxRQUFRLENBQUNpSCxJQUFJLENBQUN4USxHQUFHLEdBQUdILEdBQUcsQ0FBQ0csR0FBRyxDQUFBO01BQzNCdUosUUFBUSxDQUFDaUgsSUFBSSxDQUFDalEsTUFBTSxHQUFHa0MsT0FBTyxDQUFDcEMsa0JBQWtCLENBQUNSLEdBQUcsQ0FBQyxDQUFBO0VBQ3REMEosSUFBQUEsUUFBUSxDQUFDaUgsSUFBSSxDQUFDMlosUUFBUSxHQUFHLENBQUMsQ0FBQTtFQUUxQixJQUFBLElBQUksQ0FBQzVCLGNBQWMsQ0FBQ2hmLFFBQVEsQ0FBQyxDQUFBO0tBQzlCLENBQUE7RUFBQXpGLEVBQUFBLE1BQUEsQ0FFRHliLGdCQUFnQixHQUFoQixTQUFBQSxnQkFBQUEsQ0FBaUJoVyxRQUFRLEVBQUU7RUFDekIsSUFBQSxJQUFJQSxRQUFRLENBQUNpSCxJQUFJLENBQUNzWixhQUFhLEVBQUU7RUFDL0IsTUFBQSxJQUFJLENBQUNNLFlBQVksQ0FBQzdnQixRQUFRLENBQUMsQ0FBQTtFQUUzQixNQUFBLElBQUksQ0FBQzBhLEVBQUUsQ0FBQ29HLFNBQVMsQ0FBQyxJQUFJLENBQUM1RCxRQUFRLENBQUNqZ0IsS0FBSyxFQUFFK0MsUUFBUSxDQUFDa0gsR0FBRyxDQUFDaEUsQ0FBQyxHQUFHLEdBQUcsRUFBRWxELFFBQVEsQ0FBQ2tILEdBQUcsQ0FBQy9ELENBQUMsR0FBRyxHQUFHLEVBQUVuRCxRQUFRLENBQUNrSCxHQUFHLENBQUN2VSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDeEcsSUFBSSxDQUFDK25CLEVBQUUsQ0FBQ3FHLGdCQUFnQixDQUFDLElBQUksQ0FBQzdELFFBQVEsQ0FBQ1csV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUNsQyxNQUFNLENBQUNuQixHQUFHLEVBQUUsQ0FBQyxDQUFBO0VBRTdFLE1BQUEsSUFBSSxDQUFDRSxFQUFFLENBQUMyRCxVQUFVLENBQUMsSUFBSSxDQUFDM0QsRUFBRSxDQUFDaUYsWUFBWSxFQUFFM2YsUUFBUSxDQUFDaUgsSUFBSSxDQUFDd1ksUUFBUSxDQUFDLENBQUE7UUFDaEUsSUFBSSxDQUFDL0UsRUFBRSxDQUFDc0csbUJBQW1CLENBQUMsSUFBSSxDQUFDOUQsUUFBUSxDQUFDTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQy9DLEVBQUUsQ0FBQ3VHLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBQzdFLE1BQUEsSUFBSSxDQUFDdkcsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQ2lGLFlBQVksRUFBRTNmLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3lZLFFBQVEsQ0FBQyxDQUFBO1FBQ2hFLElBQUksQ0FBQ2hGLEVBQUUsQ0FBQ3NHLG1CQUFtQixDQUFDLElBQUksQ0FBQzlELFFBQVEsQ0FBQ1MsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUNqRCxFQUFFLENBQUN1RyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUM3RSxNQUFBLElBQUksQ0FBQ3ZHLEVBQUUsQ0FBQ2tGLFdBQVcsQ0FBQyxJQUFJLENBQUNsRixFQUFFLENBQUNtRixVQUFVLEVBQUU3ZixRQUFRLENBQUNpSCxJQUFJLENBQUN1WSxPQUFPLENBQUMsQ0FBQTtFQUM5RCxNQUFBLElBQUksQ0FBQzlFLEVBQUUsQ0FBQ3VELFNBQVMsQ0FBQyxJQUFJLENBQUNmLFFBQVEsQ0FBQ2EsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBQ2xELE1BQUEsSUFBSSxDQUFDckQsRUFBRSxDQUFDMkQsVUFBVSxDQUFDLElBQUksQ0FBQzNELEVBQUUsQ0FBQzRELG9CQUFvQixFQUFFLElBQUksQ0FBQ0YsV0FBVyxDQUFDLENBQUE7UUFFbEUsSUFBSSxDQUFDMUQsRUFBRSxDQUFDd0csWUFBWSxDQUFDLElBQUksQ0FBQ3hHLEVBQUUsQ0FBQ3lHLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDekcsRUFBRSxDQUFDMEcsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBQ3JFLE1BQUEsSUFBSSxDQUFDekYsTUFBTSxDQUFDL2dCLEdBQUcsRUFBRSxDQUFBO0VBQ25CLEtBQUE7S0FDRCxDQUFBO0lBQUFMLE1BQUEsQ0FFRDJiLGNBQWMsR0FBZCxTQUFBQSxlQUFlbFcsUUFBUSxFQUFFLEVBQUUsQ0FBQTtFQUFBekYsRUFBQUEsTUFBQSxDQUUzQnNtQixZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYTdnQixRQUFRLEVBQUU7TUFDckIsSUFBTXFoQixnQkFBZ0IsR0FBR3RxQixTQUFTLENBQUNuRixlQUFlLENBQ2hELENBQUNvTyxRQUFRLENBQUNpSCxJQUFJLENBQUN1WixZQUFZLEdBQUcsQ0FBQyxFQUMvQixDQUFDeGdCLFFBQVEsQ0FBQ2lILElBQUksQ0FBQ3daLGFBQWEsR0FBRyxDQUNqQyxDQUFDLENBQUE7RUFDRCxJQUFBLElBQU1hLGlCQUFpQixHQUFHdnFCLFNBQVMsQ0FBQ25GLGVBQWUsQ0FBQ29PLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsRUFBRWtMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsQ0FBQyxDQUFBO01BRS9FLElBQU13c0IsS0FBSyxHQUFHdmhCLFFBQVEsQ0FBQzJILFFBQVEsR0FBR3JKLFFBQVEsQ0FBQ0csTUFBTSxDQUFBO0VBQ2pELElBQUEsSUFBTStpQixjQUFjLEdBQUd6cUIsU0FBUyxDQUFDaEYsWUFBWSxDQUFDd3ZCLEtBQUssQ0FBQyxDQUFBO01BRXBELElBQU12c0IsS0FBSyxHQUFHZ0wsUUFBUSxDQUFDaEwsS0FBSyxHQUFHZ0wsUUFBUSxDQUFDaUgsSUFBSSxDQUFDMlosUUFBUSxDQUFBO01BQ3JELElBQU1hLFdBQVcsR0FBRzFxQixTQUFTLENBQUN6RSxTQUFTLENBQUMwQyxLQUFLLEVBQUVBLEtBQUssQ0FBQyxDQUFBO01BQ3JELElBQUkwc0IsTUFBTSxHQUFHM3FCLFNBQVMsQ0FBQ3RFLGNBQWMsQ0FBQzR1QixnQkFBZ0IsRUFBRUksV0FBVyxDQUFDLENBQUE7TUFFcEVDLE1BQU0sR0FBRzNxQixTQUFTLENBQUN0RSxjQUFjLENBQUNpdkIsTUFBTSxFQUFFRixjQUFjLENBQUMsQ0FBQTtNQUN6REUsTUFBTSxHQUFHM3FCLFNBQVMsQ0FBQ3RFLGNBQWMsQ0FBQ2l2QixNQUFNLEVBQUVKLGlCQUFpQixDQUFDLENBQUE7TUFFNUQvWCxJQUFJLENBQUNPLE9BQU8sQ0FBQzRYLE1BQU0sRUFBRTFoQixRQUFRLENBQUNpSCxJQUFJLENBQUMwWixJQUFJLENBQUMsQ0FBQTtFQUN4Q2UsSUFBQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHMWhCLFFBQVEsQ0FBQzhHLEtBQUssQ0FBQTtFQUUxQixJQUFBLElBQUksQ0FBQzZVLE1BQU0sQ0FBQ3hqQixJQUFJLENBQUN1cEIsTUFBTSxDQUFDLENBQUE7S0FDekIsQ0FBQTtFQUFBbm5CLEVBQUFBLE1BQUEsQ0FFRG5CLE9BQU8sR0FBUCxTQUFBQSxVQUFVO0VBQ1JnZCxJQUFBQSxhQUFBLENBQUEzZSxTQUFBLENBQU0yQixPQUFPLENBQUF6QixJQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7TUFDYixJQUFJLENBQUMraUIsRUFBRSxHQUFHLElBQUksQ0FBQTtNQUNkLElBQUksQ0FBQ2lCLE1BQU0sR0FBRyxJQUFJLENBQUE7TUFDbEIsSUFBSSxDQUFDRixJQUFJLEdBQUcsSUFBSSxDQUFBO01BQ2hCLElBQUksQ0FBQ0MsSUFBSSxHQUFHLElBQUksQ0FBQTtNQUNoQixJQUFJLENBQUNRLGNBQWMsR0FBRyxJQUFJLENBQUE7S0FDM0IsQ0FBQTtFQUFBLEVBQUEsT0FBQXpCLGFBQUEsQ0FBQTtFQUFBLENBQUEsQ0FwVHdDM0YsWUFBWTs7RUNadkQ7RUFDQTtFQUNBO0VBQ0E7QUFDcUI2TSxNQUFBQSxjQUFjLDBCQUFBdkwsYUFBQSxFQUFBO0lBQUEvTCxjQUFBLENBQUFzWCxjQUFBLEVBQUF2TCxhQUFBLENBQUEsQ0FBQTtFQUNqQztFQUNGO0VBQ0E7RUFDQTtJQUNFLFNBQUF1TCxjQUFBQSxDQUFZNU0sT0FBTyxFQUFFO0VBQUEsSUFBQSxJQUFBblksS0FBQSxDQUFBO0VBQ25CQSxJQUFBQSxLQUFBLEdBQUF3WixhQUFBLENBQUF6ZSxJQUFBLENBQUEsSUFBQSxFQUFNb2QsT0FBTyxDQUFDLElBQUEsSUFBQSxDQUFBOztFQUVkO0VBQ0o7RUFDQTtFQUNBO01BQ0luWSxLQUFBLENBQUtKLElBQUksR0FBRyxnQkFBZ0IsQ0FBQTtFQUFDLElBQUEsT0FBQUksS0FBQSxDQUFBO0VBQy9CLEdBQUE7RUFBQyxFQUFBLE9BQUEra0IsY0FBQSxDQUFBO0VBQUEsQ0FBQSxDQWJ5QzdNLFlBQVk7O0VDRHhEO0VBQ0E7RUFDQTtFQUNBO0FBQ3FCOE0sTUFBQUEsUUFBUSwwQkFBQTlWLEtBQUEsRUFBQTtJQUFBekIsY0FBQSxDQUFBdVgsUUFBQSxFQUFBOVYsS0FBQSxDQUFBLENBQUE7RUFDM0I7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUE4VixRQUFBQSxDQUFZQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLFNBQVMsRUFBUTtFQUFBLElBQUEsSUFBQXJsQixLQUFBLENBQUE7RUFBQSxJQUFBLElBQWpCcWxCLFNBQVMsS0FBQSxLQUFBLENBQUEsRUFBQTtFQUFUQSxNQUFBQSxTQUFTLEdBQUcsR0FBRyxDQUFBO0VBQUEsS0FBQTtFQUN6Q3JsQixJQUFBQSxLQUFBLEdBQUFrUCxLQUFBLENBQUFuVSxJQUFBLEtBQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtFQUVQLElBQUEsSUFBSW9xQixFQUFFLEdBQUdGLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDaEJqbEIsS0FBQSxDQUFLaWxCLEVBQUUsR0FBR0EsRUFBRSxDQUFBO1FBQ1pqbEIsS0FBQSxDQUFLa2xCLEVBQUUsR0FBR0EsRUFBRSxDQUFBO1FBQ1psbEIsS0FBQSxDQUFLbWxCLEVBQUUsR0FBR0EsRUFBRSxDQUFBO1FBQ1pubEIsS0FBQSxDQUFLb2xCLEVBQUUsR0FBR0EsRUFBRSxDQUFBO0VBQ2QsS0FBQyxNQUFNO1FBQ0xwbEIsS0FBQSxDQUFLaWxCLEVBQUUsR0FBR0UsRUFBRSxDQUFBO1FBQ1pubEIsS0FBQSxDQUFLa2xCLEVBQUUsR0FBR0UsRUFBRSxDQUFBO1FBQ1pwbEIsS0FBQSxDQUFLbWxCLEVBQUUsR0FBR0YsRUFBRSxDQUFBO1FBQ1pqbEIsS0FBQSxDQUFLb2xCLEVBQUUsR0FBR0YsRUFBRSxDQUFBO0VBQ2QsS0FBQTtNQUVBbGxCLEtBQUEsQ0FBSytKLEVBQUUsR0FBRy9KLEtBQUEsQ0FBS21sQixFQUFFLEdBQUdubEIsS0FBQSxDQUFLaWxCLEVBQUUsQ0FBQTtNQUMzQmpsQixLQUFBLENBQUtnSyxFQUFFLEdBQUdoSyxLQUFBLENBQUtvbEIsRUFBRSxHQUFHcGxCLEtBQUEsQ0FBS2tsQixFQUFFLENBQUE7RUFFM0JsbEIsSUFBQUEsS0FBQSxDQUFLc2xCLElBQUksR0FBR2h3QixJQUFJLENBQUNpd0IsR0FBRyxDQUFDdmxCLEtBQUEsQ0FBS2lsQixFQUFFLEVBQUVqbEIsS0FBQSxDQUFLbWxCLEVBQUUsQ0FBQyxDQUFBO0VBQ3RDbmxCLElBQUFBLEtBQUEsQ0FBS3dsQixJQUFJLEdBQUdsd0IsSUFBSSxDQUFDaXdCLEdBQUcsQ0FBQ3ZsQixLQUFBLENBQUtrbEIsRUFBRSxFQUFFbGxCLEtBQUEsQ0FBS29sQixFQUFFLENBQUMsQ0FBQTtFQUN0Q3BsQixJQUFBQSxLQUFBLENBQUt5bEIsSUFBSSxHQUFHbndCLElBQUksQ0FBQzZWLEdBQUcsQ0FBQ25MLEtBQUEsQ0FBS2lsQixFQUFFLEVBQUVqbEIsS0FBQSxDQUFLbWxCLEVBQUUsQ0FBQyxDQUFBO0VBQ3RDbmxCLElBQUFBLEtBQUEsQ0FBSzBsQixJQUFJLEdBQUdwd0IsSUFBSSxDQUFDNlYsR0FBRyxDQUFDbkwsS0FBQSxDQUFLa2xCLEVBQUUsRUFBRWxsQixLQUFBLENBQUtvbEIsRUFBRSxDQUFDLENBQUE7RUFFdENwbEIsSUFBQUEsS0FBQSxDQUFLeUosR0FBRyxHQUFHekosS0FBQSxDQUFLbWxCLEVBQUUsR0FBR25sQixLQUFBLENBQUtrbEIsRUFBRSxHQUFHbGxCLEtBQUEsQ0FBS2lsQixFQUFFLEdBQUdqbEIsS0FBQSxDQUFLb2xCLEVBQUUsQ0FBQTtFQUNoRHBsQixJQUFBQSxLQUFBLENBQUsybEIsSUFBSSxHQUFHM2xCLEtBQUEsQ0FBSytKLEVBQUUsR0FBRy9KLEtBQUEsQ0FBSytKLEVBQUUsR0FBRy9KLEtBQUEsQ0FBS2dLLEVBQUUsR0FBR2hLLEtBQUEsQ0FBS2dLLEVBQUUsQ0FBQTtFQUVqRGhLLElBQUFBLEtBQUEsQ0FBSzRULFFBQVEsR0FBRzVULEtBQUEsQ0FBS2dKLFdBQVcsRUFBRSxDQUFBO0VBQ2xDaEosSUFBQUEsS0FBQSxDQUFLbkwsTUFBTSxHQUFHbUwsS0FBQSxDQUFLNGxCLFNBQVMsRUFBRSxDQUFBO01BQzlCNWxCLEtBQUEsQ0FBS3FsQixTQUFTLEdBQUdobkIsSUFBSSxDQUFDOUQsU0FBUyxDQUFDOHFCLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQTtFQUFDLElBQUEsT0FBQXJsQixLQUFBLENBQUE7RUFDbEQsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUhFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQXFuQixRQUFBLENBQUFucUIsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBSUFvUixXQUFXLEdBQVgsU0FBQUEsY0FBYztFQUNaLElBQUEsSUFBSSxDQUFDclQsTUFBTSxHQUFHcEcsSUFBSSxDQUFDb0csTUFBTSxFQUFFLENBQUE7TUFDM0IsSUFBSSxDQUFDa1QsTUFBTSxDQUFDMVcsQ0FBQyxHQUFHLElBQUksQ0FBQytzQixFQUFFLEdBQUcsSUFBSSxDQUFDdnBCLE1BQU0sR0FBRyxJQUFJLENBQUM3RyxNQUFNLEdBQUdTLElBQUksQ0FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQ3FlLFFBQVEsQ0FBQyxDQUFBO01BQzdFLElBQUksQ0FBQ2hGLE1BQU0sQ0FBQ3pXLENBQUMsR0FBRyxJQUFJLENBQUMrc0IsRUFBRSxHQUFHLElBQUksQ0FBQ3hwQixNQUFNLEdBQUcsSUFBSSxDQUFDN0csTUFBTSxHQUFHUyxJQUFJLENBQUNHLEdBQUcsQ0FBQyxJQUFJLENBQUNtZSxRQUFRLENBQUMsQ0FBQTtNQUU3RSxPQUFPLElBQUksQ0FBQ2hGLE1BQU0sQ0FBQTtFQUNwQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0lBQUFqUixNQUFBLENBTUE2TSxZQUFZLEdBQVosU0FBQUEsYUFBYXRTLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2pCLElBQUEsSUFBTW9uQixDQUFDLEdBQUcsSUFBSSxDQUFDdlYsRUFBRSxDQUFBO0VBQ2pCLElBQUEsSUFBTXdWLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQ3pWLEVBQUUsQ0FBQTtFQUNsQixJQUFBLElBQU04YixDQUFDLEdBQUcsSUFBSSxDQUFDcGMsR0FBRyxDQUFBO01BQ2xCLElBQU1xYyxDQUFDLEdBQUd0RyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0EsQ0FBQyxDQUFBO01BRXpCLElBQUksQ0FBQ0QsQ0FBQyxHQUFHcm5CLENBQUMsR0FBR3NuQixDQUFDLEdBQUdybkIsQ0FBQyxHQUFHMHRCLENBQUMsSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUN4QyxPQUFPLEtBQUssQ0FBQTtFQUNuQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0lBQUFub0IsTUFBQSxDQU1Bb29CLFdBQVcsR0FBWCxTQUFBQSxZQUFZN3RCLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2hCLElBQUEsSUFBTW9uQixDQUFDLEdBQUcsSUFBSSxDQUFDdlYsRUFBRSxDQUFBO0VBQ2pCLElBQUEsSUFBTXdWLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQ3pWLEVBQUUsQ0FBQTtFQUNsQixJQUFBLElBQU04YixDQUFDLEdBQUcsSUFBSSxDQUFDcGMsR0FBRyxDQUFBO01BQ2xCLElBQU1xYyxDQUFDLEdBQUd2RyxDQUFDLEdBQUdybkIsQ0FBQyxHQUFHc25CLENBQUMsR0FBR3JuQixDQUFDLEdBQUcwdEIsQ0FBQyxDQUFBO01BRTNCLE9BQU9DLENBQUMsR0FBR3h3QixJQUFJLENBQUMrUyxJQUFJLENBQUMsSUFBSSxDQUFDc2QsSUFBSSxDQUFDLENBQUE7RUFDakMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQWhvQixFQUFBQSxNQUFBLENBS0Fxb0IsWUFBWSxHQUFaLFNBQUFBLFlBQUFBLENBQWF4aUIsQ0FBQyxFQUFFO0VBQ2QsSUFBQSxJQUFNeWlCLElBQUksR0FBR3ppQixDQUFDLENBQUN3RixXQUFXLEVBQUUsQ0FBQTtFQUM1QixJQUFBLElBQU1rZCxJQUFJLEdBQUcsSUFBSSxDQUFDbGQsV0FBVyxFQUFFLENBQUE7RUFDL0IsSUFBQSxJQUFNYyxHQUFHLEdBQUcsQ0FBQyxJQUFJb2MsSUFBSSxHQUFHRCxJQUFJLENBQUMsQ0FBQTtFQUU3QixJQUFBLElBQU1FLElBQUksR0FBRzNpQixDQUFDLENBQUN0TCxDQUFDLENBQUE7RUFDaEIsSUFBQSxJQUFNa3VCLElBQUksR0FBRzVpQixDQUFDLENBQUNyTCxDQUFDLENBQUE7RUFFaEJxTCxJQUFBQSxDQUFDLENBQUN0TCxDQUFDLEdBQUdpdUIsSUFBSSxHQUFHN3dCLElBQUksQ0FBQ0MsR0FBRyxDQUFDdVUsR0FBRyxDQUFDLEdBQUdzYyxJQUFJLEdBQUc5d0IsSUFBSSxDQUFDRyxHQUFHLENBQUNxVSxHQUFHLENBQUMsQ0FBQTtFQUNqRHRHLElBQUFBLENBQUMsQ0FBQ3JMLENBQUMsR0FBR2d1QixJQUFJLEdBQUc3d0IsSUFBSSxDQUFDRyxHQUFHLENBQUNxVSxHQUFHLENBQUMsR0FBR3NjLElBQUksR0FBRzl3QixJQUFJLENBQUNDLEdBQUcsQ0FBQ3VVLEdBQUcsQ0FBQyxDQUFBO0VBRWpELElBQUEsT0FBT3RHLENBQUMsQ0FBQTtFQUNWLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBN0YsRUFBQUEsTUFBQSxDQUlBcUwsV0FBVyxHQUFYLFNBQUFBLGNBQWM7TUFDWixPQUFPMVQsSUFBSSxDQUFDMlQsS0FBSyxDQUFDLElBQUksQ0FBQ2UsRUFBRSxFQUFFLElBQUksQ0FBQ0QsRUFBRSxDQUFDLENBQUE7RUFDckMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBLE1BSkU7RUFBQXBNLEVBQUFBLE1BQUEsQ0FLQTBvQixRQUFRLEdBQVIsU0FBQUEsUUFBQUEsQ0FBU2pqQixRQUFRLEVBQUU7TUFDakIsSUFBTWlRLEtBQUssR0FBRy9kLElBQUksQ0FBQytXLEdBQUcsQ0FBQyxJQUFJLENBQUNyRCxXQUFXLEVBQUUsQ0FBQyxDQUFBO0VBRTFDLElBQUEsSUFBSXFLLEtBQUssSUFBSTNSLFFBQVEsQ0FBQ0gsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUM1QixJQUFJNkIsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxJQUFJLElBQUksQ0FBQ3V0QixJQUFJLElBQUlyaUIsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxJQUFJLElBQUksQ0FBQ290QixJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFDekUsS0FBQyxNQUFNO1FBQ0wsSUFBSWxpQixRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLElBQUksSUFBSSxDQUFDdXRCLElBQUksSUFBSXRpQixRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLElBQUksSUFBSSxDQUFDcXRCLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQTtFQUN6RSxLQUFBO0VBRUEsSUFBQSxPQUFPLEtBQUssQ0FBQTtFQUNkLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBN25CLEVBQUFBLE1BQUEsQ0FJQWlvQixTQUFTLEdBQVQsU0FBQUEsWUFBWTtFQUNWLElBQUEsT0FBT3R3QixJQUFJLENBQUMrUyxJQUFJLENBQUMsSUFBSSxDQUFDMEIsRUFBRSxHQUFHLElBQUksQ0FBQ0EsRUFBRSxHQUFHLElBQUksQ0FBQ0MsRUFBRSxHQUFHLElBQUksQ0FBQ0EsRUFBRSxDQUFDLENBQUE7RUFDekQsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFyTSxFQUFBQSxNQUFBLENBSUFxUixRQUFRLEdBQVIsU0FBQUEsUUFBQUEsQ0FBUzVMLFFBQVEsRUFBRTtFQUNqQixJQUFBLElBQUksSUFBSSxDQUFDeUwsU0FBUyxLQUFLLE1BQU0sRUFBRTtRQUM3QixJQUFJLElBQUksQ0FBQ3dXLFNBQVMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDQSxTQUFTLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQ0EsU0FBUyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUNBLFNBQVMsS0FBSyxNQUFNLEVBQUU7RUFDL0csUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDZ0IsUUFBUSxDQUFDampCLFFBQVEsQ0FBQyxFQUFFLE9BQUE7VUFDOUIsSUFBSSxJQUFJLENBQUNvSCxZQUFZLENBQUNwSCxRQUFRLENBQUN0RixDQUFDLENBQUM1RixDQUFDLEVBQUVrTCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLENBQUMsRUFBRWlMLFFBQVEsQ0FBQ3VILElBQUksR0FBRyxJQUFJLENBQUE7RUFDekUsT0FBQyxNQUFNO0VBQ0wsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDMGIsUUFBUSxDQUFDampCLFFBQVEsQ0FBQyxFQUFFLE9BQUE7VUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQ29ILFlBQVksQ0FBQ3BILFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsRUFBRWtMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsQ0FBQyxFQUFFaUwsUUFBUSxDQUFDdUgsSUFBSSxHQUFHLElBQUksQ0FBQTtFQUMxRSxPQUFBO0VBQ0YsS0FBQyxNQUFNLElBQUksSUFBSSxDQUFDa0UsU0FBUyxLQUFLLE9BQU8sRUFBRTtFQUNyQyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUN3WCxRQUFRLENBQUNqakIsUUFBUSxDQUFDLEVBQUUsT0FBQTtRQUU5QixJQUFJLElBQUksQ0FBQzJpQixXQUFXLENBQUMzaUIsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxFQUFFa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxDQUFDLElBQUlpTCxRQUFRLENBQUMwSCxNQUFNLEVBQUU7RUFDbkUsUUFBQSxJQUFJLElBQUksQ0FBQ2YsRUFBRSxLQUFLLENBQUMsRUFBRTtFQUNqQjNHLFVBQUFBLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDdEwsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0VBQ3BCLFNBQUMsTUFBTSxJQUFJLElBQUksQ0FBQzhSLEVBQUUsS0FBSyxDQUFDLEVBQUU7RUFDeEI1RyxVQUFBQSxRQUFRLENBQUNJLENBQUMsQ0FBQ3JMLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtFQUNwQixTQUFDLE1BQU07RUFDTCxVQUFBLElBQUksQ0FBQzZ0QixZQUFZLENBQUM1aUIsUUFBUSxDQUFDSSxDQUFDLENBQUMsQ0FBQTtFQUMvQixTQUFBO0VBQ0YsT0FBQTtFQUNGLEtBQUMsTUFBTSxJQUFJLElBQUksQ0FBQ3FMLFNBQVMsS0FBSyxPQUFPLEVBQUU7UUFDckMsSUFBSSxJQUFJLENBQUNDLEtBQUssRUFBRTtFQUNkSyxRQUFBQSxPQUFPLENBQUNDLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1VBQy9ELElBQUksQ0FBQ04sS0FBSyxHQUFHLEtBQUssQ0FBQTtFQUNwQixPQUFBO0VBQ0YsS0FBQTtLQUNELENBQUE7RUFBQSxFQUFBLE9BQUFrVyxRQUFBLENBQUE7RUFBQSxDQUFBLENBdEttQ3JXLElBQUk7O0VDTjFDO0VBQ0E7RUFDQTtFQUNBO0FBQ3FCMlgsTUFBQUEsVUFBVSwwQkFBQXBYLEtBQUEsRUFBQTtJQUFBekIsY0FBQSxDQUFBNlksVUFBQSxFQUFBcFgsS0FBQSxDQUFBLENBQUE7RUFDN0I7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0UsRUFBQSxTQUFBb1gsV0FBWXB1QixDQUFDLEVBQUVDLENBQUMsRUFBRTJTLE1BQU0sRUFBRTtFQUFBLElBQUEsSUFBQTlLLEtBQUEsQ0FBQTtFQUN4QkEsSUFBQUEsS0FBQSxHQUFBa1AsS0FBQSxDQUFBblUsSUFBQSxLQUFNLENBQUMsSUFBQSxJQUFBLENBQUE7TUFFUGlGLEtBQUEsQ0FBSzlILENBQUMsR0FBR0EsQ0FBQyxDQUFBO01BQ1Y4SCxLQUFBLENBQUs3SCxDQUFDLEdBQUdBLENBQUMsQ0FBQTtNQUNWNkgsS0FBQSxDQUFLOEssTUFBTSxHQUFHQSxNQUFNLENBQUE7TUFDcEI5SyxLQUFBLENBQUtxVCxLQUFLLEdBQUcsQ0FBQyxDQUFBO01BQ2RyVCxLQUFBLENBQUttQyxNQUFNLEdBQUc7RUFBRWpLLE1BQUFBLENBQUMsRUFBREEsQ0FBQztFQUFFQyxNQUFBQSxDQUFDLEVBQURBLENBQUFBO09BQUcsQ0FBQTtFQUFDLElBQUEsT0FBQTZILEtBQUEsQ0FBQTtFQUN6QixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBSEUsRUFBQSxJQUFBckMsTUFBQSxHQUFBMm9CLFVBQUEsQ0FBQXpyQixTQUFBLENBQUE7RUFBQThDLEVBQUFBLE1BQUEsQ0FJQW9SLFdBQVcsR0FBWCxTQUFBQSxjQUFjO01BQ1osSUFBSSxDQUFDc0UsS0FBSyxHQUFHM1IsUUFBUSxDQUFDQyxJQUFJLEdBQUdyTSxJQUFJLENBQUNvRyxNQUFNLEVBQUUsQ0FBQTtNQUMxQyxJQUFJLENBQUM2cUIsWUFBWSxHQUFHanhCLElBQUksQ0FBQ29HLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQ29QLE1BQU0sQ0FBQTtNQUMvQyxJQUFJLENBQUM4RCxNQUFNLENBQUMxVyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEdBQUcsSUFBSSxDQUFDcXVCLFlBQVksR0FBR2p4QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxJQUFJLENBQUM4ZCxLQUFLLENBQUMsQ0FBQTtNQUNqRSxJQUFJLENBQUN6RSxNQUFNLENBQUN6VyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEdBQUcsSUFBSSxDQUFDb3VCLFlBQVksR0FBR2p4QixJQUFJLENBQUNHLEdBQUcsQ0FBQyxJQUFJLENBQUM0ZCxLQUFLLENBQUMsQ0FBQTtNQUVqRSxPQUFPLElBQUksQ0FBQ3pFLE1BQU0sQ0FBQTtFQUNwQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0EsTUFKRTtJQUFBalIsTUFBQSxDQUtBNm9CLFNBQVMsR0FBVCxTQUFBQSxVQUFVdHVCLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2QsSUFBQSxJQUFJLENBQUNnSyxNQUFNLENBQUNqSyxDQUFDLEdBQUdBLENBQUMsQ0FBQTtFQUNqQixJQUFBLElBQUksQ0FBQ2lLLE1BQU0sQ0FBQ2hLLENBQUMsR0FBR0EsQ0FBQyxDQUFBO0VBQ25CLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0EsTUFIRTtFQUFBd0YsRUFBQUEsTUFBQSxDQUlBcVIsUUFBUSxHQUFSLFNBQUFBLFFBQUFBLENBQVM1TCxRQUFRLEVBQUU7TUFDakIsSUFBTStKLENBQUMsR0FBRy9KLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzhMLFVBQVUsQ0FBQyxJQUFJLENBQUN6SCxNQUFNLENBQUMsQ0FBQTtFQUU1QyxJQUFBLElBQUksSUFBSSxDQUFDME0sU0FBUyxLQUFLLE1BQU0sRUFBRTtFQUM3QixNQUFBLElBQUkxQixDQUFDLEdBQUcvSixRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDQSxNQUFNLEVBQUUxSCxRQUFRLENBQUN1SCxJQUFJLEdBQUcsSUFBSSxDQUFBO0VBQzdELEtBQUMsTUFBTSxJQUFJLElBQUksQ0FBQ2tFLFNBQVMsS0FBSyxPQUFPLEVBQUU7RUFDckMsTUFBQSxJQUFJMUIsQ0FBQyxHQUFHL0osUUFBUSxDQUFDMEgsTUFBTSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxFQUFFLElBQUksQ0FBQ2tiLFlBQVksQ0FBQzVpQixRQUFRLENBQUMsQ0FBQTtFQUNyRSxLQUFDLE1BQU0sSUFBSSxJQUFJLENBQUN5TCxTQUFTLEtBQUssT0FBTyxFQUFFO1FBQ3JDLElBQUksSUFBSSxDQUFDQyxLQUFLLEVBQUU7RUFDZEssUUFBQUEsT0FBTyxDQUFDQyxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQTtVQUNqRSxJQUFJLENBQUNOLEtBQUssR0FBRyxLQUFLLENBQUE7RUFDcEIsT0FBQTtFQUNGLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQW5SLEVBQUFBLE1BQUEsQ0FJQXFvQixZQUFZLEdBQVosU0FBQUEsWUFBQUEsQ0FBYTVpQixRQUFRLEVBQUU7TUFDckIsSUFBTTZpQixJQUFJLEdBQUc3aUIsUUFBUSxDQUFDSSxDQUFDLENBQUN3RixXQUFXLEVBQUUsQ0FBQTtFQUNyQyxJQUFBLElBQU1rZCxJQUFJLEdBQUcsSUFBSSxDQUFDbGQsV0FBVyxDQUFDNUYsUUFBUSxDQUFDLENBQUE7RUFFdkMsSUFBQSxJQUFNMEcsR0FBRyxHQUFHLENBQUMsSUFBSW9jLElBQUksR0FBR0QsSUFBSSxDQUFDLENBQUE7RUFDN0IsSUFBQSxJQUFNRSxJQUFJLEdBQUcvaUIsUUFBUSxDQUFDSSxDQUFDLENBQUN0TCxDQUFDLENBQUE7RUFDekIsSUFBQSxJQUFNa3VCLElBQUksR0FBR2hqQixRQUFRLENBQUNJLENBQUMsQ0FBQ3JMLENBQUMsQ0FBQTtNQUV6QmlMLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDdEwsQ0FBQyxHQUFHaXVCLElBQUksR0FBRzd3QixJQUFJLENBQUNDLEdBQUcsQ0FBQ3VVLEdBQUcsQ0FBQyxHQUFHc2MsSUFBSSxHQUFHOXdCLElBQUksQ0FBQ0csR0FBRyxDQUFDcVUsR0FBRyxDQUFDLENBQUE7TUFDMUQxRyxRQUFRLENBQUNJLENBQUMsQ0FBQ3JMLENBQUMsR0FBR2d1QixJQUFJLEdBQUc3d0IsSUFBSSxDQUFDRyxHQUFHLENBQUNxVSxHQUFHLENBQUMsR0FBR3NjLElBQUksR0FBRzl3QixJQUFJLENBQUNDLEdBQUcsQ0FBQ3VVLEdBQUcsQ0FBQyxDQUFBO0VBQzVELEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQSxNQUpFO0VBQUFuTSxFQUFBQSxNQUFBLENBS0FxTCxXQUFXLEdBQVgsU0FBQUEsV0FBQUEsQ0FBWTVGLFFBQVEsRUFBRTtFQUNwQixJQUFBLE9BQU8sQ0FBQzFCLFFBQVEsQ0FBQ0UsSUFBSSxHQUFHdE0sSUFBSSxDQUFDMlQsS0FBSyxDQUFDN0YsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHLElBQUksQ0FBQ2dLLE1BQU0sQ0FBQ2hLLENBQUMsRUFBRWlMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsR0FBRyxJQUFJLENBQUNpSyxNQUFNLENBQUNqSyxDQUFDLENBQUMsQ0FBQTtLQUMvRixDQUFBO0VBQUEsRUFBQSxPQUFBb3VCLFVBQUEsQ0FBQTtFQUFBLENBQUEsQ0FsRnFDM1gsSUFBSTs7RUNMNUM7RUFDQTtFQUNBO0VBQ0E7QUFDcUI4WCxNQUFBQSxRQUFRLDBCQUFBdlgsS0FBQSxFQUFBO0lBQUF6QixjQUFBLENBQUFnWixRQUFBLEVBQUF2WCxLQUFBLENBQUEsQ0FBQTtFQUMzQjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUF1WCxRQUFBQSxDQUFZdnVCLENBQUMsRUFBRUMsQ0FBQyxFQUFFZixLQUFLLEVBQVFDLE1BQU0sRUFBUTtFQUFBLElBQUEsSUFBQTJJLEtBQUEsQ0FBQTtFQUFBLElBQUEsSUFBM0I1SSxLQUFLLEtBQUEsS0FBQSxDQUFBLEVBQUE7RUFBTEEsTUFBQUEsS0FBSyxHQUFHLEdBQUcsQ0FBQTtFQUFBLEtBQUE7RUFBQSxJQUFBLElBQUVDLE1BQU0sS0FBQSxLQUFBLENBQUEsRUFBQTtFQUFOQSxNQUFBQSxNQUFNLEdBQUcsR0FBRyxDQUFBO0VBQUEsS0FBQTtFQUN6QzJJLElBQUFBLEtBQUEsR0FBQWtQLEtBQUEsQ0FBQW5VLElBQUEsS0FBTSxDQUFDLElBQUEsSUFBQSxDQUFBO01BRVBpRixLQUFBLENBQUs5SCxDQUFDLEdBQUdBLENBQUMsQ0FBQTtNQUNWOEgsS0FBQSxDQUFLN0gsQ0FBQyxHQUFHQSxDQUFDLENBQUE7TUFDVjZILEtBQUEsQ0FBSzVJLEtBQUssR0FBR0EsS0FBSyxDQUFBO01BQ2xCNEksS0FBQSxDQUFLM0ksTUFBTSxHQUFHQSxNQUFNLENBQUE7RUFBQyxJQUFBLE9BQUEySSxLQUFBLENBQUE7RUFDdkIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUhFLEVBQUEsSUFBQXJDLE1BQUEsR0FBQThvQixRQUFBLENBQUE1ckIsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBSUFvUixXQUFXLEdBQVgsU0FBQUEsY0FBYztFQUNaLElBQUEsSUFBSSxDQUFDSCxNQUFNLENBQUMxVyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEdBQUc1QyxJQUFJLENBQUNvRyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUN0RSxLQUFLLENBQUE7RUFDbkQsSUFBQSxJQUFJLENBQUN3WCxNQUFNLENBQUN6VyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEdBQUc3QyxJQUFJLENBQUNvRyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUNyRSxNQUFNLENBQUE7TUFDcEQsT0FBTyxJQUFJLENBQUN1WCxNQUFNLENBQUE7RUFDcEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFqUixFQUFBQSxNQUFBLENBSUFxUixRQUFRLEdBQVIsU0FBQUEsUUFBQUEsQ0FBUzVMLFFBQVEsRUFBRTtFQUNqQjtFQUNBLElBQUEsSUFBSSxJQUFJLENBQUN5TCxTQUFTLEtBQUssTUFBTSxFQUFFO1FBQzdCLElBQUl6TCxRQUFRLENBQUN0RixDQUFDLENBQUM1RixDQUFDLEdBQUdrTCxRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDNVMsQ0FBQyxFQUFFa0wsUUFBUSxDQUFDdUgsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUM3RCxJQUFJdkgsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDMEgsTUFBTSxHQUFHLElBQUksQ0FBQzVTLENBQUMsR0FBRyxJQUFJLENBQUNkLEtBQUssRUFBRWdNLFFBQVEsQ0FBQ3VILElBQUksR0FBRyxJQUFJLENBQUE7UUFFbkYsSUFBSXZILFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsR0FBR2lMLFFBQVEsQ0FBQzBILE1BQU0sR0FBRyxJQUFJLENBQUMzUyxDQUFDLEVBQUVpTCxRQUFRLENBQUN1SCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQzdELElBQUl2SCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLEdBQUdpTCxRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDM1MsQ0FBQyxHQUFHLElBQUksQ0FBQ2QsTUFBTSxFQUFFK0wsUUFBUSxDQUFDdUgsSUFBSSxHQUFHLElBQUksQ0FBQTtFQUN0RixLQUFBOztFQUVBO0VBQUEsU0FDSyxJQUFJLElBQUksQ0FBQ2tFLFNBQVMsS0FBSyxPQUFPLEVBQUU7RUFDbkMsTUFBQSxJQUFJekwsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDMEgsTUFBTSxHQUFHLElBQUksQ0FBQzVTLENBQUMsRUFBRTtVQUMzQ2tMLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsR0FBR2tMLFFBQVEsQ0FBQzBILE1BQU0sQ0FBQTtFQUN2QzFILFFBQUFBLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDdEwsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0VBQ3BCLE9BQUMsTUFBTSxJQUFJa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDMEgsTUFBTSxHQUFHLElBQUksQ0FBQzVTLENBQUMsR0FBRyxJQUFJLENBQUNkLEtBQUssRUFBRTtFQUMvRGdNLFFBQUFBLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsR0FBRyxJQUFJLENBQUNkLEtBQUssR0FBR2dNLFFBQVEsQ0FBQzBILE1BQU0sQ0FBQTtFQUNwRDFILFFBQUFBLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDdEwsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0VBQ3BCLE9BQUE7RUFFQSxNQUFBLElBQUlrTCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLEdBQUdpTCxRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDM1MsQ0FBQyxFQUFFO1VBQzNDaUwsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsQ0FBQyxHQUFHaUwsUUFBUSxDQUFDMEgsTUFBTSxDQUFBO0VBQ3ZDMUgsUUFBQUEsUUFBUSxDQUFDSSxDQUFDLENBQUNyTCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7RUFDcEIsT0FBQyxNQUFNLElBQUlpTCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLEdBQUdpTCxRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDM1MsQ0FBQyxHQUFHLElBQUksQ0FBQ2QsTUFBTSxFQUFFO0VBQ2hFK0wsUUFBQUEsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsQ0FBQyxHQUFHLElBQUksQ0FBQ2QsTUFBTSxHQUFHK0wsUUFBUSxDQUFDMEgsTUFBTSxDQUFBO0VBQ3JEMUgsUUFBQUEsUUFBUSxDQUFDSSxDQUFDLENBQUNyTCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7RUFDcEIsT0FBQTtFQUNGLEtBQUE7O0VBRUE7RUFBQSxTQUNLLElBQUksSUFBSSxDQUFDMFcsU0FBUyxLQUFLLE9BQU8sRUFBRTtRQUNuQyxJQUFJekwsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDMEgsTUFBTSxHQUFHLElBQUksQ0FBQzVTLENBQUMsSUFBSWtMLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDdEwsQ0FBQyxJQUFJLENBQUMsRUFBRTtFQUNoRWtMLFFBQUFBLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzVGLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsR0FBRyxJQUFJLENBQUNkLEtBQUssR0FBR2dNLFFBQVEsQ0FBQzBILE1BQU0sQ0FBQTtTQUNyRCxNQUFNLElBQUkxSCxRQUFRLENBQUN0RixDQUFDLENBQUM1RixDQUFDLEdBQUdrTCxRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDNVMsQ0FBQyxHQUFHLElBQUksQ0FBQ2QsS0FBSyxJQUFJZ00sUUFBUSxDQUFDSSxDQUFDLENBQUN0TCxDQUFDLElBQUksQ0FBQyxFQUFFO1VBQ3BGa0wsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDNUYsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsQ0FBQyxHQUFHa0wsUUFBUSxDQUFDMEgsTUFBTSxDQUFBO0VBQ3pDLE9BQUE7UUFFQSxJQUFJMUgsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHaUwsUUFBUSxDQUFDMEgsTUFBTSxHQUFHLElBQUksQ0FBQzNTLENBQUMsSUFBSWlMLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDckwsQ0FBQyxJQUFJLENBQUMsRUFBRTtFQUNoRWlMLFFBQUFBLFFBQVEsQ0FBQ3RGLENBQUMsQ0FBQzNGLENBQUMsR0FBRyxJQUFJLENBQUNBLENBQUMsR0FBRyxJQUFJLENBQUNkLE1BQU0sR0FBRytMLFFBQVEsQ0FBQzBILE1BQU0sQ0FBQTtTQUN0RCxNQUFNLElBQUkxSCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLEdBQUdpTCxRQUFRLENBQUMwSCxNQUFNLEdBQUcsSUFBSSxDQUFDM1MsQ0FBQyxHQUFHLElBQUksQ0FBQ2QsTUFBTSxJQUFJK0wsUUFBUSxDQUFDSSxDQUFDLENBQUNyTCxDQUFDLElBQUksQ0FBQyxFQUFFO1VBQ3JGaUwsUUFBUSxDQUFDdEYsQ0FBQyxDQUFDM0YsQ0FBQyxHQUFHLElBQUksQ0FBQ0EsQ0FBQyxHQUFHaUwsUUFBUSxDQUFDMEgsTUFBTSxDQUFBO0VBQ3pDLE9BQUE7RUFDRixLQUFBO0tBQ0QsQ0FBQTtFQUFBLEVBQUEsT0FBQTJiLFFBQUEsQ0FBQTtFQUFBLENBQUEsQ0ExRW1DOVgsSUFBSTs7RUNIMUM7RUFDQTtFQUNBO0VBQ0E7QUFDcUIrWCxNQUFBQSxTQUFTLDBCQUFBeFgsS0FBQSxFQUFBO0lBQUF6QixjQUFBLENBQUFpWixTQUFBLEVBQUF4WCxLQUFBLENBQUEsQ0FBQTtFQUM1QjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNFLFNBQUF3WCxTQUFBQSxDQUFZakssU0FBUyxFQUFFdmtCLENBQUMsRUFBRUMsQ0FBQyxFQUFFZ1YsQ0FBQyxFQUFFO0VBQUEsSUFBQSxJQUFBbk4sS0FBQSxDQUFBO0VBQzlCQSxJQUFBQSxLQUFBLEdBQUFrUCxLQUFBLENBQUFuVSxJQUFBLEtBQU0sQ0FBQyxJQUFBLElBQUEsQ0FBQTtNQUNQaUYsS0FBQSxDQUFLd0csS0FBSyxDQUFDaVcsU0FBUyxFQUFFdmtCLENBQUMsRUFBRUMsQ0FBQyxFQUFFZ1YsQ0FBQyxDQUFDLENBQUE7RUFBQyxJQUFBLE9BQUFuTixLQUFBLENBQUE7RUFDakMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU5FLEVBQUEsSUFBQXJDLE1BQUEsR0FBQStvQixTQUFBLENBQUE3ckIsU0FBQSxDQUFBO0VBQUE4QyxFQUFBQSxNQUFBLENBT0E2SSxLQUFLLEdBQUwsU0FBQUEsS0FBTWlXLENBQUFBLFNBQVMsRUFBRXZrQixDQUFDLEVBQUVDLENBQUMsRUFBRWdWLENBQUMsRUFBRTtNQUN4QixJQUFJLENBQUNzUCxTQUFTLEdBQUdBLFNBQVMsQ0FBQTtNQUMxQixJQUFJLENBQUN2a0IsQ0FBQyxHQUFHbUcsSUFBSSxDQUFDOUQsU0FBUyxDQUFDckMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO01BQzdCLElBQUksQ0FBQ0MsQ0FBQyxHQUFHa0csSUFBSSxDQUFDOUQsU0FBUyxDQUFDcEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO01BQzdCLElBQUksQ0FBQ2dWLENBQUMsR0FBRzlPLElBQUksQ0FBQzlELFNBQVMsQ0FBQzRTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtNQUU3QixJQUFJLENBQUN3WixPQUFPLEdBQUcsRUFBRSxDQUFBO01BQ2pCLElBQUksQ0FBQ0MsVUFBVSxFQUFFLENBQUE7RUFDbkIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQSxNQUhFO0VBQUFqcEIsRUFBQUEsTUFBQSxDQUlBaXBCLFVBQVUsR0FBVixTQUFBQSxhQUFhO01BQ1gsSUFBSTd4QixDQUFDLEVBQUU4eEIsQ0FBQyxDQUFBO0VBQ1IsSUFBQSxJQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDckssU0FBUyxDQUFDcmxCLEtBQUssQ0FBQTtFQUNwQyxJQUFBLElBQU0ydkIsT0FBTyxHQUFHLElBQUksQ0FBQ3RLLFNBQVMsQ0FBQ3BsQixNQUFNLENBQUE7RUFFckMsSUFBQSxLQUFLdEMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHK3hCLE9BQU8sRUFBRS94QixDQUFDLElBQUksSUFBSSxDQUFDb1ksQ0FBQyxFQUFFO0VBQ3BDLE1BQUEsS0FBSzBaLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0UsT0FBTyxFQUFFRixDQUFDLElBQUksSUFBSSxDQUFDMVosQ0FBQyxFQUFFO0VBQ3BDLFFBQUEsSUFBSTlSLEtBQUssR0FBRyxDQUFDLENBQUN3ckIsQ0FBQyxJQUFJLENBQUMsSUFBSUMsT0FBTyxJQUFJL3hCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7RUFFL0MsUUFBQSxJQUFJLElBQUksQ0FBQzBuQixTQUFTLENBQUNwUyxJQUFJLENBQUNoUCxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0VBQ3RDLFVBQUEsSUFBSSxDQUFDc3JCLE9BQU8sQ0FBQ3ByQixJQUFJLENBQUM7RUFBRXJELFlBQUFBLENBQUMsRUFBRW5ELENBQUMsR0FBRyxJQUFJLENBQUNtRCxDQUFDO0VBQUVDLFlBQUFBLENBQUMsRUFBRTB1QixDQUFDLEdBQUcsSUFBSSxDQUFDMXVCLENBQUFBO0VBQUUsV0FBQyxDQUFDLENBQUE7RUFDckQsU0FBQTtFQUNGLE9BQUE7RUFDRixLQUFBO01BRUEsT0FBTyxJQUFJLENBQUN5VyxNQUFNLENBQUE7RUFDcEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFMRTtJQUFBalIsTUFBQSxDQU1BcXBCLFFBQVEsR0FBUixTQUFBQSxTQUFTOXVCLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2IsSUFBQSxJQUFNa0QsS0FBSyxHQUFHLENBQUMsQ0FBQ2xELENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDc2tCLFNBQVMsQ0FBQ3JsQixLQUFLLElBQUljLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7TUFDOUQsT0FBTyxJQUFJLENBQUN1a0IsU0FBUyxDQUFDcFMsSUFBSSxDQUFDaFAsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUMzQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQXNDLEVBQUFBLE1BQUEsQ0FJQW9SLFdBQVcsR0FBWCxTQUFBQSxjQUFjO01BQ1osSUFBTUgsTUFBTSxHQUFHdlEsSUFBSSxDQUFDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDbXJCLE9BQU8sQ0FBQyxDQUFBO0VBQ2xELElBQUEsT0FBTyxJQUFJLENBQUMvWCxNQUFNLENBQUNyTCxJQUFJLENBQUNxTCxNQUFNLENBQUMsQ0FBQTtFQUNqQyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUxFO0lBQUFqUixNQUFBLENBTUFzcEIsUUFBUSxHQUFSLFNBQUFBLFNBQVMvdUIsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7TUFDYkQsQ0FBQyxJQUFJLElBQUksQ0FBQ0EsQ0FBQyxDQUFBO01BQ1hDLENBQUMsSUFBSSxJQUFJLENBQUNBLENBQUMsQ0FBQTtFQUNYLElBQUEsSUFBTXBELENBQUMsR0FBRyxDQUFDLENBQUNvRCxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQ3NrQixTQUFTLENBQUNybEIsS0FBSyxJQUFJYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO01BRTFELE9BQU87UUFDTG9PLENBQUMsRUFBRSxJQUFJLENBQUNtVyxTQUFTLENBQUNwUyxJQUFJLENBQUN0VixDQUFDLENBQUM7UUFDekJ3UixDQUFDLEVBQUUsSUFBSSxDQUFDa1csU0FBUyxDQUFDcFMsSUFBSSxDQUFDdFYsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QmdCLENBQUMsRUFBRSxJQUFJLENBQUMwbUIsU0FBUyxDQUFDcFMsSUFBSSxDQUFDdFYsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QmUsQ0FBQyxFQUFFLElBQUksQ0FBQzJtQixTQUFTLENBQUNwUyxJQUFJLENBQUN0VixDQUFDLEdBQUcsQ0FBQyxDQUFBO09BQzdCLENBQUE7RUFDSCxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBLE1BSEU7RUFBQTRJLEVBQUFBLE1BQUEsQ0FJQXFSLFFBQVEsR0FBUixTQUFBQSxRQUFBQSxDQUFTNUwsUUFBUSxFQUFFO0VBQ2pCLElBQUEsSUFBSSxJQUFJLENBQUN5TCxTQUFTLEtBQUssTUFBTSxFQUFFO1FBQzdCekwsUUFBUSxDQUFDdUgsSUFBSSxHQUFHLElBQUksQ0FBQ3FjLFFBQVEsQ0FBQzVqQixRQUFRLENBQUN0RixDQUFDLENBQUM1RixDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEVBQUVrTCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLENBQUMsQ0FBQTtFQUM3RSxLQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMwVyxTQUFTLEtBQUssT0FBTyxFQUFFO0VBQ3JDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQ21ZLFFBQVEsQ0FBQzVqQixRQUFRLENBQUN0RixDQUFDLENBQUM1RixDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLEVBQUVrTCxRQUFRLENBQUN0RixDQUFDLENBQUMzRixDQUFDLEdBQUcsSUFBSSxDQUFDQSxDQUFDLENBQUMsRUFBRWlMLFFBQVEsQ0FBQ0ksQ0FBQyxDQUFDZ0csTUFBTSxFQUFFLENBQUE7RUFDdkYsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBLE1BRkU7RUFBQTdMLEVBQUFBLE1BQUEsQ0FHQW5CLE9BQU8sR0FBUCxTQUFBQSxVQUFVO0VBQ1IwUyxJQUFBQSxLQUFBLENBQUFyVSxTQUFBLENBQU0yQixPQUFPLENBQUF6QixJQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7TUFDYixJQUFJLENBQUMwaEIsU0FBUyxHQUFHLElBQUksQ0FBQTtLQUN0QixDQUFBO0VBQUEsRUFBQSxPQUFBaUssU0FBQSxDQUFBO0VBQUEsQ0FBQSxDQTdHb0MvWCxJQUFJOztBQ0QzQyxjQUFlO0VBQ2J4TyxFQUFBQSxnQkFBZ0IsRUFBQUEsU0FBQUEsZ0JBQUFBLENBQUN6QixNQUFNLEVBQUV3b0IsSUFBSSxFQUFFO0VBQzdCeG9CLElBQUFBLE1BQU0sQ0FBQ3lCLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFlBQUE7UUFBQSxPQUFNK21CLElBQUksRUFBRSxDQUFBO09BQUMsQ0FBQSxDQUFBO0tBQzdEO0lBRURDLFFBQVEsRUFBQSxTQUFBQSxRQUFDOW1CLENBQUFBLEtBQUssRUFBYztFQUFBLElBQUEsSUFBbkJBLEtBQUssS0FBQSxLQUFBLENBQUEsRUFBQTtFQUFMQSxNQUFBQSxLQUFLLEdBQUcsU0FBUyxDQUFBO0VBQUEsS0FBQTtFQUN4QixJQUFBLElBQU1pSyxHQUFHLEdBQUcySSxTQUFTLENBQUN0SCxRQUFRLENBQUN0TCxLQUFLLENBQUMsQ0FBQTtNQUNyQyxPQUFlaUssT0FBQUEsR0FBQUEsR0FBRyxDQUFDaEUsQ0FBQyxHQUFLZ0UsSUFBQUEsR0FBQUEsR0FBRyxDQUFDL0QsQ0FBQyxHQUFBLElBQUEsR0FBSytELEdBQUcsQ0FBQ3ZVLENBQUMsR0FBQSxRQUFBLENBQUE7S0FDekM7SUFFRHF4QixRQUFRLEVBQUEsU0FBQUEsU0FBQzFvQixNQUFNLEVBQUV0RSxNQUFNLEVBQUVrVixJQUFJLEVBQUUzTCxLQUFLLEVBQUU7RUFDcEMsSUFBQSxJQUFNeEssT0FBTyxHQUFHaUIsTUFBTSxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDdkMsSUFBQSxJQUFNNUMsS0FBSyxHQUFHLElBQUksQ0FBQ3l2QixRQUFRLEVBQUUsQ0FBQTtFQUU3QixJQUFBLElBQUksQ0FBQ2huQixnQkFBZ0IsQ0FBQ3pCLE1BQU0sRUFBRSxZQUFNO0VBQ2xDLE1BQUEsSUFBSWlGLEtBQUssRUFBRXhLLE9BQU8sQ0FBQ0ssU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVZLE1BQU0sQ0FBQ2hELEtBQUssRUFBRWdELE1BQU0sQ0FBQy9DLE1BQU0sQ0FBQyxDQUFBO1FBRS9ELElBQUlpWSxJQUFJLFlBQVlMLFNBQVMsRUFBRTtVQUM3QjlWLE9BQU8sQ0FBQ29oQixTQUFTLEVBQUUsQ0FBQTtVQUNuQnBoQixPQUFPLENBQUMrZ0IsU0FBUyxHQUFHeGlCLEtBQUssQ0FBQTtVQUN6QnlCLE9BQU8sQ0FBQ3FoQixHQUFHLENBQUNsTCxJQUFJLENBQUNwWCxDQUFDLEVBQUVvWCxJQUFJLENBQUNuWCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTdDLElBQUksQ0FBQ2lNLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7VUFDckRwSSxPQUFPLENBQUN5aEIsSUFBSSxFQUFFLENBQUE7VUFDZHpoQixPQUFPLENBQUN3aEIsU0FBUyxFQUFFLENBQUE7RUFDckIsT0FBQyxNQUFNLElBQUlyTCxJQUFJLFlBQVkwVixRQUFRLEVBQUU7VUFDbkM3ckIsT0FBTyxDQUFDb2hCLFNBQVMsRUFBRSxDQUFBO1VBQ25CcGhCLE9BQU8sQ0FBQ3NoQixXQUFXLEdBQUcvaUIsS0FBSyxDQUFBO1VBQzNCeUIsT0FBTyxDQUFDa3VCLE1BQU0sQ0FBQy9YLElBQUksQ0FBQzJWLEVBQUUsRUFBRTNWLElBQUksQ0FBQzRWLEVBQUUsQ0FBQyxDQUFBO1VBQ2hDL3JCLE9BQU8sQ0FBQ211QixNQUFNLENBQUNoWSxJQUFJLENBQUM2VixFQUFFLEVBQUU3VixJQUFJLENBQUM4VixFQUFFLENBQUMsQ0FBQTtVQUNoQ2pzQixPQUFPLENBQUNpZixNQUFNLEVBQUUsQ0FBQTtVQUNoQmpmLE9BQU8sQ0FBQ3doQixTQUFTLEVBQUUsQ0FBQTtFQUNyQixPQUFDLE1BQU0sSUFBSXJMLElBQUksWUFBWW1YLFFBQVEsRUFBRTtVQUNuQ3R0QixPQUFPLENBQUNvaEIsU0FBUyxFQUFFLENBQUE7VUFDbkJwaEIsT0FBTyxDQUFDc2hCLFdBQVcsR0FBRy9pQixLQUFLLENBQUE7RUFDM0J5QixRQUFBQSxPQUFPLENBQUNvdUIsUUFBUSxDQUFDalksSUFBSSxDQUFDcFgsQ0FBQyxFQUFFb1gsSUFBSSxDQUFDblgsQ0FBQyxFQUFFbVgsSUFBSSxDQUFDbFksS0FBSyxFQUFFa1ksSUFBSSxDQUFDalksTUFBTSxDQUFDLENBQUE7VUFDekQ4QixPQUFPLENBQUNpZixNQUFNLEVBQUUsQ0FBQTtVQUNoQmpmLE9BQU8sQ0FBQ3doQixTQUFTLEVBQUUsQ0FBQTtFQUNyQixPQUFDLE1BQU0sSUFBSXJMLElBQUksWUFBWWdYLFVBQVUsRUFBRTtVQUNyQ250QixPQUFPLENBQUNvaEIsU0FBUyxFQUFFLENBQUE7VUFDbkJwaEIsT0FBTyxDQUFDc2hCLFdBQVcsR0FBRy9pQixLQUFLLENBQUE7VUFDM0J5QixPQUFPLENBQUNxaEIsR0FBRyxDQUFDbEwsSUFBSSxDQUFDcFgsQ0FBQyxFQUFFb1gsSUFBSSxDQUFDblgsQ0FBQyxFQUFFbVgsSUFBSSxDQUFDeEUsTUFBTSxFQUFFLENBQUMsRUFBRXhWLElBQUksQ0FBQ2lNLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7VUFDOURwSSxPQUFPLENBQUNpZixNQUFNLEVBQUUsQ0FBQTtVQUNoQmpmLE9BQU8sQ0FBQ3doQixTQUFTLEVBQUUsQ0FBQTtFQUNyQixPQUFBO0VBQ0YsS0FBQyxDQUFDLENBQUE7S0FDSDtJQUVENk0sV0FBVyxFQUFBLFNBQUFBLFlBQUM5b0IsTUFBTSxFQUFFdEUsTUFBTSxFQUFFNkUsT0FBTyxFQUFFMEUsS0FBSyxFQUFFO0VBQzFDLElBQUEsSUFBTXhLLE9BQU8sR0FBR2lCLE1BQU0sQ0FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ3ZDLElBQUEsSUFBTTVDLEtBQUssR0FBRyxJQUFJLENBQUN5dkIsUUFBUSxFQUFFLENBQUE7RUFFN0IsSUFBQSxJQUFJLENBQUNobkIsZ0JBQWdCLENBQUN6QixNQUFNLEVBQUUsWUFBTTtFQUNsQyxNQUFBLElBQUlpRixLQUFLLEVBQUV4SyxPQUFPLENBQUNLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFWSxNQUFNLENBQUNoRCxLQUFLLEVBQUVnRCxNQUFNLENBQUMvQyxNQUFNLENBQUMsQ0FBQTtRQUUvRDhCLE9BQU8sQ0FBQ29oQixTQUFTLEVBQUUsQ0FBQTtRQUNuQnBoQixPQUFPLENBQUMrZ0IsU0FBUyxHQUFHeGlCLEtBQUssQ0FBQTtRQUN6QnlCLE9BQU8sQ0FBQ3FoQixHQUFHLENBQUN2YixPQUFPLENBQUNuQixDQUFDLENBQUM1RixDQUFDLEVBQUUrRyxPQUFPLENBQUNuQixDQUFDLENBQUMzRixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTdDLElBQUksQ0FBQ2lNLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDL0RwSSxPQUFPLENBQUN5aEIsSUFBSSxFQUFFLENBQUE7UUFDZHpoQixPQUFPLENBQUN3aEIsU0FBUyxFQUFFLENBQUE7RUFDckIsS0FBQyxDQUFDLENBQUE7RUFDSixHQUFBO0VBQ0YsQ0FBQzs7RUNORDtFQUNBL1csTUFBTSxDQUFDd0csUUFBUSxHQUFHQSxRQUFRLENBQUE7RUFDMUJ4RyxNQUFNLENBQUNyRyxJQUFJLEdBQUdBLElBQUksQ0FBQTtFQUVsQnFHLE1BQU0sQ0FBQ3ZGLElBQUksR0FBR0EsSUFBSSxDQUFBO0VBQ2xCdUYsTUFBTSxDQUFDcVAsU0FBUyxHQUFHQSxTQUFTLENBQUE7RUFDNUJyUCxNQUFNLENBQUNsQyxRQUFRLEdBQUdBLFFBQVEsQ0FBQTtFQUMxQmtDLE1BQU0sQ0FBQ2lGLFFBQVEsR0FBR2pGLE1BQU0sQ0FBQzZqQixNQUFNLEdBQUc1ZSxRQUFRLENBQUE7RUFDMUNqRixNQUFNLENBQUN3SSxPQUFPLEdBQUd4SSxNQUFNLENBQUM4akIsS0FBSyxHQUFHdGIsT0FBTyxDQUFBO0VBQ3ZDeEksTUFBTSxDQUFDMkosU0FBUyxHQUFHQSxTQUFTLENBQUE7RUFDNUIzSixNQUFNLENBQUNnSyxTQUFTLEdBQUdBLFNBQVMsQ0FBQTtFQUM1QmhLLE1BQU0sQ0FBQ29LLElBQUksR0FBR0EsSUFBSSxDQUFBO0VBQ2xCcEssTUFBTSxDQUFDZ0YsSUFBSSxHQUFHQSxJQUFJLENBQUE7RUFDbEJoRixNQUFNLENBQUM2QyxJQUFJLEdBQUdBLElBQUksQ0FBQTtFQUNsQjdDLE1BQU0sQ0FBQytJLElBQUksR0FBR0EsSUFBSSxDQUFBO0VBQ2xCL0ksTUFBTSxDQUFDK2pCLE9BQU8sR0FBRyxVQUFDN3hCLENBQUMsRUFBRUMsQ0FBQyxFQUFFb00sTUFBTSxFQUFBO0lBQUEsT0FBSyxJQUFJc0UsSUFBSSxDQUFDM1EsQ0FBQyxFQUFFQyxDQUFDLEVBQUVvTSxNQUFNLENBQUMsQ0FBQTtFQUFBLENBQUEsQ0FBQTtFQUN6RHlCLE1BQU0sQ0FBQytKLGVBQWUsR0FBR0osU0FBUyxDQUFDSSxlQUFlLENBQUE7RUFFbEQvSixNQUFNLENBQUMySyxVQUFVLEdBQUczSyxNQUFNLENBQUNna0IsSUFBSSxHQUFHclosVUFBVSxDQUFBO0VBQzVDM0ssTUFBTSxDQUFDNEssSUFBSSxHQUFHNUssTUFBTSxDQUFDaWtCLENBQUMsR0FBR3JaLElBQUksQ0FBQTtFQUM3QjVLLE1BQU0sQ0FBQ3lMLFFBQVEsR0FBR3pMLE1BQU0sQ0FBQ2trQixDQUFDLEdBQUd6WSxRQUFRLENBQUE7RUFDckN6TCxNQUFNLENBQUMyTCxRQUFRLEdBQUczTCxNQUFNLENBQUNta0IsQ0FBQyxHQUFHeFksUUFBUSxDQUFBO0VBQ3JDM0wsTUFBTSxDQUFDbU0sSUFBSSxHQUFHbk0sTUFBTSxDQUFDb2tCLENBQUMsR0FBR2pZLElBQUksQ0FBQTtFQUM3Qm5NLE1BQU0sQ0FBQ3FNLE1BQU0sR0FBR3JNLE1BQU0sQ0FBQ3FrQixDQUFDLEdBQUdoWSxNQUFNLENBQUE7RUFDakNyTSxNQUFNLENBQUN1TSxJQUFJLEdBQUd2TSxNQUFNLENBQUM0YixDQUFDLEdBQUdyUCxJQUFJLENBQUE7RUFFN0J2TSxNQUFNLENBQUMwTSxTQUFTLEdBQUdBLFNBQVMsQ0FBQTtFQUM1QjFNLE1BQU0sQ0FBQzhNLEtBQUssR0FBRzlNLE1BQU0sQ0FBQ3NrQixDQUFDLEdBQUd4WCxLQUFLLENBQUE7RUFDL0I5TSxNQUFNLENBQUNrTixVQUFVLEdBQUdsTixNQUFNLENBQUMyYixDQUFDLEdBQUd6TyxVQUFVLENBQUE7RUFDekNsTixNQUFNLENBQUNzTixXQUFXLEdBQUd0TixNQUFNLENBQUN1a0IsRUFBRSxHQUFHalgsV0FBVyxDQUFBO0VBQzVDdE4sTUFBTSxDQUFDMk4sT0FBTyxHQUFHM04sTUFBTSxDQUFDd2tCLENBQUMsR0FBRzdXLE9BQU8sQ0FBQTtFQUNuQzNOLE1BQU0sQ0FBQzZOLFNBQVMsR0FBR0EsU0FBUyxDQUFBO0VBQzVCN04sTUFBTSxDQUFDdU8sU0FBUyxHQUFHQSxTQUFTLENBQUE7RUFDNUJ2TyxNQUFNLENBQUN3TyxLQUFLLEdBQUdBLEtBQUssQ0FBQTtFQUNwQnhPLE1BQU0sQ0FBQzRPLEtBQUssR0FBRzVPLE1BQU0sQ0FBQ3lrQixDQUFDLEdBQUc3VixLQUFLLENBQUE7RUFDL0I1TyxNQUFNLENBQUMrTyxNQUFNLEdBQUdBLE1BQU0sQ0FBQTtFQUN0Qi9PLE1BQU0sQ0FBQ21QLEtBQUssR0FBR0EsS0FBSyxDQUFBO0VBQ3BCblAsTUFBTSxDQUFDaVEsU0FBUyxHQUFHQSxTQUFTLENBQUE7RUFDNUJqUSxNQUFNLENBQUN3UCxPQUFPLEdBQUdBLE9BQU8sQ0FBQTtFQUN4QnhQLE1BQU0sQ0FBQ21RLFdBQVcsR0FBR0EsV0FBVyxDQUFBO0VBRWhDblEsTUFBTSxDQUFDeVEsT0FBTyxHQUFHQSxPQUFPLENBQUE7RUFDeEJ6USxNQUFNLENBQUM0UyxnQkFBZ0IsR0FBR0EsZ0JBQWdCLENBQUE7RUFDMUM1UyxNQUFNLENBQUNpVCxhQUFhLEdBQUdBLGFBQWEsQ0FBQTtFQUVwQ2pULE1BQU0sQ0FBQytLLElBQUksR0FBR0EsSUFBSSxDQUFBO0VBQ2xCL0ssTUFBTSxDQUFDb2hCLFFBQVEsR0FBR0EsUUFBUSxDQUFBO0VBQzFCcGhCLE1BQU0sQ0FBQzBpQixVQUFVLEdBQUdBLFVBQVUsQ0FBQTtFQUM5QjFpQixNQUFNLENBQUNxTCxTQUFTLEdBQUdBLFNBQVMsQ0FBQTtFQUM1QnJMLE1BQU0sQ0FBQzZpQixRQUFRLEdBQUdBLFFBQVEsQ0FBQTtFQUMxQjdpQixNQUFNLENBQUM4aUIsU0FBUyxHQUFHQSxTQUFTLENBQUE7RUFFNUI5aUIsTUFBTSxDQUFDMlYsY0FBYyxHQUFHQSxjQUFjLENBQUE7RUFDdEMzVixNQUFNLENBQUNrWCxXQUFXLEdBQUdBLFdBQVcsQ0FBQTtFQUNoQ2xYLE1BQU0sQ0FBQzhYLGFBQWEsR0FBR0EsYUFBYSxDQUFBO0VBQ3BDOVgsTUFBTSxDQUFDa1osWUFBWSxHQUFHQSxZQUFZLENBQUE7RUFDbENsWixNQUFNLENBQUMyWSxhQUFhLEdBQUdBLGFBQWEsQ0FBQTtFQUNwQzNZLE1BQU0sQ0FBQ2lhLGFBQWEsR0FBR2phLE1BQU0sQ0FBQzBrQixhQUFhLEdBQUd6SyxhQUFhLENBQUE7RUFDM0RqYSxNQUFNLENBQUNtaEIsY0FBYyxHQUFHQSxjQUFjLENBQUE7RUFFdENuaEIsTUFBTSxDQUFDMmtCLEtBQUssR0FBR0EsS0FBSyxDQUFBO0VBQ3BCbHFCLElBQUksQ0FBQzVCLE1BQU0sQ0FBQ21ILE1BQU0sRUFBRWdGLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ== +//# sourceMappingURL=proton.js.map diff --git a/build/proton.js.map b/build/proton.js.map new file mode 100644 index 0000000..0537163 --- /dev/null +++ b/build/proton.js.map @@ -0,0 +1 @@ +{"version":3,"file":"proton.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/math/Span.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/emitter/BehaviourEmitter.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/render/PixiRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js","../src/index.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number | undefined} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n /**\n * Sets the frames per second (FPS) for the Proton system.\n * @param {number|string} fps - The desired FPS. Use \"auto\" for default behavior, or a number for a specific FPS.\n */\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n /**\n * Gets the current frames per second (FPS) setting.\n * @returns {number|string} The current FPS setting. Returns \"auto\" if set to default, or a number representing the specific FPS.\n */\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a span of values or an array.\n */\nexport default class Span {\n /**\n * @type {boolean}\n * @private\n */\n isArray;\n\n /**\n * @type {number|number[]}\n * @private\n */\n a;\n\n /**\n * @type {number}\n * @private\n */\n b;\n\n /**\n * @type {boolean}\n * @private\n */\n center;\n\n /**\n * Creates a new Span instance.\n * @param {number|number[]} a - The first value or an array of values.\n * @param {number} [b] - The second value (if a is not an array).\n * @param {boolean} [center=false] - Whether to use center-based calculation.\n */\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n /**\n * Gets a value from the span.\n * @param {boolean} [isInt=false] - Whether to return an integer value.\n * @returns {number} A random value from the span.\n */\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object.\n * @param {*|Span} a - The first value or a Span object.\n * @param {*} [b] - The second value.\n * @param {*} [c] - The third value.\n * @returns {Span} A new Span instance.\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter.\n * @param {*|Span} pan - The value or Span to get the value from.\n * @returns {*} The value of Span OR the parameter if it is not a Span.\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"../math/Span\";\n\nexport default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n /** @type {number} */\n x;\n\n /** @type {number} */\n y;\n\n /**\n * Creates a new Vector2D instance.\n * @param {number} [x=0] - The x coordinate.\n * @param {number} [y=0] - The y coordinate.\n */\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n /**\n * Sets the x and y components of this vector.\n * @param {number} x - The x coordinate.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets the x component of this vector.\n * @param {number} x - The x coordinate.\n * @returns {Vector2D} This vector.\n */\n setX(x) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets the y component of this vector.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n\n /**\n * Calculates the gradient (angle) of this vector.\n * @returns {number} The gradient in radians.\n */\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n /**\n * Copies the values of another vector to this one.\n * @param {Vector2D} v - The vector to copy from.\n * @returns {Vector2D} This vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n /**\n * Adds another vector to this one.\n * @param {Vector2D} v - The vector to add.\n * @param {Vector2D} [w] - An optional second vector to add.\n * @returns {Vector2D} This vector.\n */\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n /**\n * Adds scalar values to this vector's components.\n * @param {number} a - Value to add to x.\n * @param {number} b - Value to add to y.\n * @returns {Vector2D} This vector.\n */\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n /**\n * Adds two vectors and sets the result to this vector.\n * @param {Vector2D} a - The first vector to add.\n * @param {Vector2D} b - The second vector to add.\n * @returns {Vector2D} This vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n /**\n * Subtracts another vector from this one.\n * @param {Vector2D} v - The vector to subtract.\n * @param {Vector2D} [w] - An optional second vector to subtract.\n * @returns {Vector2D} This vector.\n */\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n /**\n * Subtracts one vector from another and sets the result to this vector.\n * @param {Vector2D} a - The vector to subtract from.\n * @param {Vector2D} b - The vector to subtract.\n * @returns {Vector2D} This vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n /**\n * Divides this vector by a scalar.\n * @param {number} s - The scalar to divide by.\n * @returns {Vector2D} This vector.\n */\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n /**\n * Multiplies this vector by a scalar.\n * @param {number} s - The scalar to multiply by.\n * @returns {Vector2D} This vector.\n */\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n /**\n * Negates this vector (inverts its direction).\n * @returns {Vector2D} This vector.\n */\n negate() {\n return this.multiplyScalar(-1);\n }\n\n /**\n * Calculates the dot product of this vector with another.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n /**\n * Calculates the squared length of this vector.\n * @returns {number} The squared length.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n /**\n * Calculates the length of this vector.\n * @returns {number} The length.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n /**\n * Normalizes this vector (makes it unit length).\n * @returns {Vector2D} This vector.\n */\n normalize() {\n return this.divideScalar(this.length());\n }\n\n /**\n * Calculates the distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n /**\n * Rotates this vector by an angle.\n * @param {number} tha - The angle to rotate by (in radians).\n * @returns {Vector2D} This vector.\n */\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n /**\n * Calculates the squared distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n /**\n * Linearly interpolates this vector toward another vector.\n * @param {Vector2D} v - The target vector.\n * @param {number} alpha - The interpolation factor (0-1).\n * @returns {Vector2D} This vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n /**\n * Checks if this vector is equal to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {boolean} True if the vectors are equal, false otherwise.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n /**\n * Sets this vector to zero.\n * @returns {Vector2D} This vector.\n */\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n /**\n * Creates a new vector with the same x and y values as this one.\n * @returns {Vector2D} A new Vector2D instance.\n */\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","import Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a particle in a particle system.\n * @class Particle\n */\nexport default class Particle {\n /** @type {string} The unique identifier of the particle */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */\n old = null;\n\n /** @type {object} Custom data associated with the particle */\n data = null;\n\n /** @type {Behaviour[]} Array of behaviours applied to the particle */\n behaviours = null;\n\n /** @type {Vector2D} Current position of the particle */\n p = null;\n\n /** @type {Vector2D} Current velocity of the particle */\n v = null;\n\n /** @type {Vector2D} Current acceleration of the particle */\n a = null;\n\n /** @type {Rgb} Color of the particle */\n rgb = null;\n\n /**\n * Creates a new Particle instance.\n * @param {Object} [conf] Configuration object for the particle\n */\n constructor(conf) {\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n /**\n * Gets the direction of the particle's movement in degrees.\n * @returns {number} The direction in degrees\n */\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n /**\n * Resets the particle to its initial state.\n * @returns {Particle} The particle instance\n */\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n /**\n * Updates the particle's state.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n /**\n * Applies all behaviours attached to the particle.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * Adds a behaviour to the particle.\n * @param {Behaviour} behaviour The behaviour to add\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * Adds multiple behaviours to the particle.\n * @param {Behaviour[]} behaviours An array of behaviours to add\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n /**\n * Removes a specific behaviour from the particle.\n * @param {Behaviour} behaviour The behaviour to remove\n */\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n /**\n * Removes all behaviours from the particle.\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destroys the particle, removing all behaviours and setting it as dead.\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\n/**\n * Represents an ArraySpan, a subclass of Span that works with arrays.\n * @extends Span\n */\nexport default class ArraySpan extends Span {\n /**\n * Creates an instance of ArraySpan.\n * @param {Array|*|any} arr - The array or value to be converted to an array.\n */\n constructor(arr) {\n super();\n this._arr = Util.toArray(arr);\n }\n\n /**\n * Gets a random value from the array.\n * If the value is \"random\" or \"Random\", it returns a random color.\n * @returns {*} A random value from the array or a random color.\n */\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Creates an ArraySpan instance from the given array.\n * If the input is already an ArraySpan instance, it returns the input.\n * @static\n * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance.\n * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy.\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\n/**\n * Rate class for controlling particle emission rate.\n */\nexport default class Rate {\n /**\n * @type {Span}\n * @private\n */\n numPan;\n\n /**\n * @type {Span}\n * @private\n */\n timePan;\n\n /**\n * @type {number}\n * @private\n */\n startTime;\n\n /**\n * @type {number}\n * @private\n */\n nextTime;\n\n /**\n * Creates a new Rate instance.\n * The number of particles per second emission (a [particle]/b [s]).\n * @param {Array|number|Span} [numpan=1] - The number of particles for each emission.\n * @param {Array|number|Span} [timepan=1] - The time interval between each emission.\n * @example\n * // Create a rate of 10-20 particles every 0.1-0.25 seconds\n * new Rate(new Span(10, 20), new Span(0.1, 0.25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n /**\n * Initializes the rate.\n * @private\n */\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n /**\n * Gets the number of particles to emit based on the elapsed time.\n * @param {number} time - The elapsed time since the last update.\n * @returns {number} The number of particles to emit.\n */\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Life class for initializing particle lifetime.\n * @extends Initialize\n */\nexport default class Life extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n lifePan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Life instance.\n * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range.\n * @param {number} [b] - The upper bound of the lifetime range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n /**\n * Initializes the lifetime of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a point zone in a 2D space.\n * @extends Zone\n */\nexport default class PointZone extends Zone {\n /**\n * Creates a new PointZone.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n */\n constructor(x, y) {\n super();\n\n /**\n * The x-coordinate of the point.\n * @type {number}\n */\n this.x = x;\n\n /**\n * The y-coordinate of the point.\n * @type {number}\n */\n this.y = y;\n }\n\n /**\n * Gets the position of the point.\n * @returns {Object} An object representing the position vector.\n */\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n /**\n * This method is not supported for PointZone.\n * @param {Object} particle - The particle object (unused).\n */\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Position class for initializing particle positions.\n * @extends Initialize\n */\nexport default class Position extends Initialize {\n /**\n * @type {PointZone|any}\n * @private\n */\n zone;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Position instance.\n * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n /**\n * Initializes the particle's position.\n * @param {object} target - The particle to initialize.\n * @param {object} target.p - The particle's position object.\n * @param {number} target.p.x - The particle's x coordinate.\n * @param {number} target.p.y - The particle's y coordinate.\n */\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Velocity class for initializing particle velocities.\n * @extends Initialize\n */\nexport default class Velocity extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n rPan;\n\n /**\n * @type {Span}\n * @private\n */\n thaPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Velocity instance.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n /**\n * Resets the velocity parameters.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n /**\n * Normalizes the velocity value.\n * @param {number} vr - The velocity value to normalize.\n * @returns {number} The normalized velocity value.\n * @private\n */\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n /**\n * Initializes the particle's velocity.\n * @param {object} target - The particle to initialize.\n */\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Mass class for initializing particle mass.\n * @extends Initialize\n */\nexport default class Mass extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n massPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Mass instance.\n * @param {number|Span} a - The mass value or the lower bound of the mass range.\n * @param {number} [b] - The upper bound of the mass range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n /**\n * Initializes the mass of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Radius class for initializing particle radius.\n * @extends Initialize\n */\nexport default class Radius extends Initialize {\n /**\n * @type {Span}\n */\n radius;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Radius instance.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n this.name = \"Radius\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n /**\n * Initializes the particle's radius.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Body class for initializing particle bodies.\n * @extends Initialize\n */\nexport default class Body extends Initialize {\n /**\n * @type {ArraySpan}\n * @private\n */\n image;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Body instance.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body.\n * @param {number} [w=20] - The width of the particle body.\n * @param {number} [h] - The height of the particle body. Defaults to the width if not provided.\n */\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n /**\n * Initializes the particle's body.\n * @param {object} particle - The particle to initialize.\n */\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n /**\n * Sets the span value for the image.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value.\n * @returns {ArraySpan} The ArraySpan instance.\n * @private\n */\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\n/**\n * The Behaviour class is the base for the other Behaviour\n * @class\n */\nexport default class Behaviour {\n static id = 0;\n\n /**\n * Create a new Behaviour instance\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's decaying trend, for example ease.easeOutQuart\n */\n constructor(life, easing) {\n /**\n * The behaviour's life\n * @type {number}\n */\n this.life = Util.initValue(life, Infinity);\n\n /**\n * The behaviour's easing function\n * @type {function}\n */\n this.easing = ease.getEasing(easing);\n\n /**\n * The behaviour's current age\n * @type {number}\n */\n this.age = 0;\n\n /**\n * The behaviour's current energy\n * @type {number}\n */\n this.energy = 1;\n\n /**\n * Whether the behaviour is dead\n * @type {boolean}\n */\n this.dead = false;\n\n /**\n * The behaviour's parent emitters\n * @type {Array}\n */\n this.parents = [];\n\n /**\n * The behaviour's unique id\n * @type {string}\n */\n this.id = `Behaviour_${Behaviour.id++}`;\n\n /**\n * The behaviour's name\n * @type {string}\n */\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n * @param {number} [life=Infinity] - This behaviour's new life\n * @param {string} [easing='easeLinear'] - This behaviour's new easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100\n * @param {Proton.Vector2D} force - The force to normalize\n * @returns {Proton.Vector2D} The normalized force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100\n * @param {number} value - The value to normalize\n * @returns {number} The normalized value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for a particle\n * @param {Proton.Particle} particle - The particle to initialize\n */\n initialize(particle) {}\n\n /**\n * Compute the behaviour's life cycle\n * @param {Proton.Particle} particle - The particle to calculate for\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour to a particle\n * @param {Proton.Particle} particle - The particle to apply the behaviour to\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destroy this behaviour\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Attraction behavior for particles.\n * This behaviour makes particles follow a specific target position.\n * @extends Behaviour\n */\nexport default class Attraction extends Behaviour {\n /**\n * Creates an instance of Attraction.\n * @param {Vector2D} targetPosition - The attraction point coordinates.\n * @param {number} [force=100] - The strength of the attraction force.\n * @param {number} [radius=1000] - The radius of influence for the attraction.\n * @param {number} [life=Infinity] - The life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The easing function for this behaviour.\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n /**\n * The target position for attraction.\n * @type {Vector2D}\n */\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n\n /**\n * The radius of influence for the attraction.\n * @type {number}\n */\n this.radius = Util.initValue(radius, 1000);\n\n /**\n * The strength of the attraction force.\n * @type {number}\n */\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n /**\n * The squared radius (for optimization).\n * @type {number}\n */\n this.radiusSq = this.radius * this.radius;\n\n /**\n * The attraction force vector.\n * @type {Vector2D}\n */\n this.attractionForce = new Vector2D();\n\n /**\n * The squared length of the attraction force.\n * @type {number}\n */\n this.lengthSq = 0;\n\n /**\n * The name of the behaviour.\n * @type {string}\n */\n this.name = \"Attraction\";\n }\n\n /**\n * Resets the behaviour's parameters.\n * @param {Vector2D} targetPosition - The new attraction point coordinates.\n * @param {number} [force=100] - The new strength of the attraction force.\n * @param {number} [radius=1000] - The new radius of influence for the attraction.\n * @param {number} [life=Infinity] - The new life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour.\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Alpha behaviour for controlling particle opacity over time.\n * @extends Behaviour\n */\nexport default class Alpha extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Alpha instance.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's alpha values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * Applies the alpha behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Scale behaviour for controlling particle size over time.\n * @extends Behaviour\n */\nexport default class Scale extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Scale instance.\n * @param {number|Span} [a=1] - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} a - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's scale values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Applies the scale behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Rotate behaviour for controlling particle rotation.\n * @extends Behaviour\n */\nexport default class Rotate extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n * @private\n */\n style;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Rotate instance.\n * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {string|number|Span} [a='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the behaviour's parameters for a particle.\n * @param {object} particle - The particle to initialize.\n * @param {number} particle.rotation - The particle's rotation.\n * @param {object} particle.data - The particle's data object.\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {object} particle - The particle to apply the behaviour to.\n * @param {number} time - The integrate time (1/ms).\n * @param {number} index - The particle index.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} [a] the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} [b] the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\n/**\n * The opposite of Attraction - turns the force\n *\n * @class\n * @extends Proton.Attraction\n * @memberof! Proton#\n * @alias Proton.Repulsion\n */\nexport default class Repulsion extends Attraction {\n /**\n * Creates a new Repulsion behaviour instance\n *\n * @constructor\n * @param {Proton.Vector2D} targetPosition - The repulsion point coordinates\n * @param {number} [force=100] - The strength of the repulsion force\n * @param {number} [radius=1000] - The radius of influence for the repulsion\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's easing function\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n /**\n * The strength of the repulsion force\n * @type {number}\n */\n this.force *= -1;\n\n /**\n * The name of the behaviour\n * @type {string}\n */\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @param {Proton.Vector2D} targetPosition - The new repulsion point coordinates\n * @param {number} [force=100] - The new strength of the repulsion force\n * @param {number} [radius=1000] - The new radius of influence for the repulsion\n * @param {number} [life=Infinity] - The new behaviour's life\n * @param {string} [easing='easeLinear'] - The new behaviour's easing function\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number | String} [totalTime] begin emit time;\n * @param {String | boolean} [life] the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n const particles = this.particles;\n const len = particles.length;\n \n // Just mark all as dead in a tight loop\n for (let i = 0; i < len; i++) {\n particles[i].dead = true;\n }\n \n // Don't actually remove from array here - that will happen in next integrate() call\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) {\n this.destroy();\n return;\n }\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n // Optimization for 500k particles: Use fast iteration with minimal GC impact\n const particles = this.particles;\n const length = particles.length;\n const parent = this.parent;\n const pool = parent.pool;\n const integrator = parent.integrator;\n const shouldDispatchUpdates = Boolean(this.parent || this.bindEvent);\n \n // Optimization: Use swap-and-pop method for removing dead particles\n // This is much faster than splice for large arrays\n let aliveCount = length;\n let i = 0;\n\n // Single-pass particle update with efficient removal\n while (i < aliveCount) {\n const particle = particles[i];\n \n // Fast update and check for dead particles\n particle.update(time, i);\n integrator.calculate(particle, time, damping);\n \n // Dispatch update events only if needed and not too many particles\n // Skip event dispatching for extremely large particle counts\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n }\n \n // Check if particle is dead\n if (particle.dead) {\n // Dispatch death events only when needed and not too many particles\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n }\n \n // Fast removal: swap with the last alive particle and decrement counter\n // This avoids expensive array splicing\n aliveCount--;\n if (i < aliveCount) {\n // Only swap if this isn't already the last particle\n particles[i] = particles[aliveCount];\n particles[aliveCount] = particle;\n \n // Return to pool\n pool.expire(particle);\n continue; // Don't increment i, process the swapped particle\n } else {\n // Last particle case\n pool.expire(particle);\n }\n }\n i++;\n }\n \n // If we have dead particles at the end, remove them all at once\n if (aliveCount < length) {\n particles.length = aliveCount; // Truncate the array (much faster than multiple splices)\n }\n }\n\n dispatch(event, target) {\n // Optimize by skipping work if no listeners\n if (!this.parent && !this.bindEvent) return;\n \n // For performance with many particles, only dispatch certain events\n if (this.particles && this.particles.length > 50000) {\n // With very large particle counts, only dispatch critical events\n if (event !== \"PARTICLE_CREATED\" && event !== \"PARTICLE_DEAD\") {\n return;\n }\n }\n \n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.stoped) return;\n\n // Maximum particles to emit in a single frame to prevent lag spikes\n const MAX_EMIT_PER_FRAME = 10000;\n\n // Direct property access for performance\n let emitTime = this.emitTime;\n const totalTime = this.totalTime;\n \n if (totalTime === \"none\") {\n this.emitTime = emitTime + time;\n return;\n } \n \n if (totalTime === \"once\") {\n // Fast path for \"once\" emission\n let numToEmit = this.rate.getValue(99999);\n \n // Cap emission count to prevent frame drops\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n // Log warning only in development if trying to emit too many at once\n if (process && process.env && process.env.NODE_ENV === 'development') {\n console.warn(`Attempting to emit ${numToEmit} particles at once, capped to ${MAX_EMIT_PER_FRAME}`);\n }\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n if (numToEmit <= 0) return;\n \n // Cache emission speed and emit particles\n this.emitSpeed = numToEmit;\n \n // Use the optimized method for bulk creation\n this._fastCreateParticles(numToEmit);\n \n // Mark as completed\n this.totalTime = \"none\";\n return;\n }\n \n // Regular emission logic - extreme optimization\n emitTime += time;\n this.emitTime = emitTime;\n \n if (emitTime < totalTime) {\n // Get particle count using rate\n let numToEmit = this.rate.getValue(time);\n \n if (numToEmit <= 0) return;\n \n // Cap emission to prevent lag spikes\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n this.emitSpeed = numToEmit;\n \n // Use fastest particle creation method\n this._fastCreateParticles(numToEmit);\n }\n }\n\n /**\n * Ultra-fast particle creation - no optional parameters, minimal overhead\n * @param {Number} count - Number of particles to create\n * @private\n */\n _fastCreateParticles(count) {\n // Early exit for zero count\n if (count <= 0 || !this.parent) return;\n \n // Direct property access - avoid repeated lookups\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n const initializes = this.initializes;\n const behaviours = this.behaviours;\n \n // Emergency circuit breaker - prevent memory issues when too many particles\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + count > MAX_SAFE_PARTICLES) {\n count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (count <= 0) return; // Already at max capacity\n }\n \n // Use faster bulk retrieval if available\n let particles;\n if (pool.getBulk) {\n // Get multiple particles at once from pool\n particles = pool.getBulk(Particle, count);\n \n // Fast-path batch initialization\n this._initializeParticlesBulk(particles, initializes, behaviours);\n } else {\n // Fast path direct initialization - optimized for huge particle counts\n this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours);\n }\n }\n \n /**\n * High-speed loop for creating many particles\n * @private\n */\n _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) {\n // Pre-calculate array growth to avoid resizing\n const newLength = particlesArr.length + count;\n \n // Handle array growth efficiently for large particle counts\n if (particlesArr.length === 0 && count > 10000) {\n try {\n // Try to preallocate the array with correct capacity\n particlesArr.length = count;\n particlesArr.length = 0; // Reset but keep capacity\n } catch (e) {\n // Ignore if this optimization isn't supported\n }\n }\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // Minimal particle creation loop - optimized for speed\n let i = 0;\n let particle;\n \n // Using while loop (faster than for loop in many JS engines)\n while (i < count) {\n // Get from pool\n particle = pool.get(Particle);\n \n // Fastest possible reset\n particle.reset();\n \n // Direct initialize call with cached values\n InitializeUtil.initialize(this, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = this;\n \n // Push to array\n particlesArr.push(particle);\n \n // Only dispatch if absolutely necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n \n /**\n * Bulk initialization for particles - more efficient for large batches\n * @private\n */\n _initializeParticlesBulk(particles, initializes, behaviours) {\n const count = particles.length;\n const particlesArr = this.particles;\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // One-time binding of this context for the loop\n const emitter = this;\n \n // Bulk initialize particles\n for (let i = 0; i < count; i++) {\n const particle = particles[i];\n \n // Initialize the particle directly\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Set properties\n particle.parent = emitter;\n \n // Add behaviors - use direct array if possible for better performance\n particle.addBehaviours(behaviours);\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Only dispatch if necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n }\n }\n\n /**\n * High-performance batch particle creation for large quantities\n * @param {Number} length - Number of particles to create\n * @param {Object|Array} [initialize] - Initialization parameters\n * @param {Object|Array} [behaviour] - Behavior parameters\n */\n createParticlesBatch(length, initialize, behaviour) {\n // Immediate redirect to fast creation when no custom initializers/behaviors\n if (!initialize && !behaviour) {\n this._fastCreateParticles(length);\n return;\n }\n \n // For huge batches, split into smaller chunks\n const BATCH_SIZE = 5000;\n \n if (length > BATCH_SIZE && length > 10000) {\n // Process in chunks for very large particle counts\n for (let i = 0; i < length; i += BATCH_SIZE) {\n const chunkSize = Math.min(BATCH_SIZE, length - i);\n this._createParticleChunk(chunkSize, initialize, behaviour);\n }\n } else {\n // Process all at once for smaller batches\n this._createParticleChunk(length, initialize, behaviour);\n }\n }\n \n /**\n * Internal method to create a chunk of particles\n * @private\n */\n _createParticleChunk(length, initialize, behaviour) {\n // Early exit for zero particles\n if (length <= 0) return;\n \n // Cache values for reuse\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n \n // Check if we'd exceed max safe count\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + length > MAX_SAFE_PARTICLES) {\n length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (length <= 0) return;\n }\n \n // Only calculate this once outside the loop\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Pre-bind functions and cache properties for the loop\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n const emitter = this;\n \n // Pre-allocate capacity if possible\n if (Array.prototype.reserve) {\n const newCapacity = particlesArr.length + length;\n if (particlesArr.capacity < newCapacity) {\n particlesArr.reserve(newCapacity);\n }\n }\n \n // Creation loop - unrolled for performance\n let i = 0;\n let particle;\n \n // Fast loop with minimal overhead\n while (i < length) {\n particle = pool.get(Particle);\n \n // Fastest reset possible\n particle.reset();\n \n // Initialize using cached values\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = emitter;\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Dispatch only if needed\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n\n /**\n * Creates a single particle - now optimized for performance\n * but batch methods should be preferred for multiple particles\n */\n createParticle(initialize, behaviour) {\n // Fast path when we have a parent\n if (!this.parent) return null;\n \n const particle = this.parent.pool.get(Particle);\n \n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize and add behaviors\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array - directly push to avoid function call\n this.particles.push(particle);\n \n // Only dispatch if needed and not too many particles\n if ((this.parent || this.bindEvent) && this.particles.length < 10000) {\n this.dispatch(\"PARTICLE_CREATED\", particle);\n }\n\n return particle;\n }\n\n /**\n * Sets up a particle with initialization and behavior.\n * @deprecated Use direct methods instead for better performance\n */\n setupParticle(particle, initialize, behaviour) {\n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array\n this.particles.push(particle);\n }\n\n /**\n * Removes all particles and stops the emitter.\n */\n remove() {\n this.stop();\n \n // More efficient particle cleanup\n const particles = this.particles;\n const len = particles.length;\n \n // Return all particles to pool\n if (this.parent && this.parent.pool) {\n const pool = this.parent.pool;\n for (let i = 0; i < len; i++) {\n pool.expire(particles[i]);\n }\n }\n \n // Clear array in one operation\n particles.length = 0;\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * CanvasRenderer class for rendering particles on a canvas element.\n * @extends BaseRenderer\n */\nexport default class CanvasRenderer extends BaseRenderer {\n /**\n * @type {object|null}\n * @private\n */\n stroke;\n\n /**\n * @type {CanvasRenderingContext2D}\n * @private\n */\n context;\n\n /**\n * @type {object}\n * @private\n */\n bufferCache;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new CanvasRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render on.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n /**\n * Resizes the canvas element.\n * @param {number} width - The new width of the canvas.\n * @param {number} height - The new height of the canvas.\n */\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n /**\n * Clears the canvas on Proton update.\n */\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n /**\n * Handles particle creation.\n * @param {object} particle - The created particle.\n */\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n /**\n * Handles particle updates.\n * @param {object} particle - The updated particle.\n */\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n /**\n * Handles particle destruction.\n * @param {object} particle - The destroyed particle.\n */\n onParticleDead(particle) {\n particle.body = null;\n }\n\n /**\n * Adds an image to the particle body.\n * @param {HTMLImageElement} img - The image to add.\n * @param {object} particle - The particle to add the image to.\n * @private\n */\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n /**\n * Draws an image particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n /**\n * Draws a circular particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n /**\n * Creates a buffer for image particles.\n * @param {HTMLImageElement} image - The image to create a buffer for.\n * @returns {HTMLCanvasElement|undefined} The created buffer canvas.\n * @private\n */\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a DOM-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class DomRenderer extends BaseRenderer {\n /**\n * Creates a new DomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(window.createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(window.createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a pixel-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixelRenderer extends BaseRenderer {\n /**\n * Creates a new PixelRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n * @param {Rectangle} [rectangle] - The rectangle defining the rendering area.\n */\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.element.height) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\nimport Pool from \"../core/Pool\";\n\nlet PIXIClass;\n\n// Counter to generate unique IDs for each renderer instance\nlet rendererIdCounter = 0;\n\n/**\n * A specialized pool that ensures particles are never shared between different emitters\n */\nclass EmitterAwarePool extends Pool {\n constructor() {\n super();\n // Store pools by emitter ID to ensure separation\n this.emitterPools = new Map();\n }\n\n /**\n * Get an item from the pool, ensuring it's specific to the emitter\n */\n get(target, params, emitterId) {\n // Ensure we have a valid emitter ID\n emitterId = emitterId || (params && params.parent && params.parent.id) || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n const emitterPool = this.emitterPools.get(emitterId);\n \n // Get from the emitter-specific pool or create new\n let p;\n if (emitterPool.length > 0) {\n p = emitterPool.pop();\n } else {\n p = this.createOrClone(target, params);\n // Tag with emitter ID for tracking\n p.__emitterId = emitterId;\n }\n \n return p;\n }\n\n /**\n * Return an item to its emitter-specific pool\n */\n expire(target, emitterId) {\n if (!emitterId && target.__emitterId) {\n emitterId = target.__emitterId;\n }\n \n // Default to the general pool if no emitter ID is found\n emitterId = emitterId || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n // Return to the emitter-specific pool\n return this.emitterPools.get(emitterId).push(target);\n }\n\n /**\n * Clean up all pools\n */\n destroy() {\n super.destroy();\n \n // Clear all emitter-specific pools\n this.emitterPools.forEach(pool => {\n pool.length = 0;\n });\n \n this.emitterPools.clear();\n this.emitterPools = null;\n }\n}\n\n/**\n * Represents a PIXI-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixiRenderer extends BaseRenderer {\n /**\n * Creates a new PixiRenderer instance.\n * @param {PIXI.Container} element - The PIXI container to render to.\n * @param {string|number} [stroke] - The stroke color for particles.\n */\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n \n // Assign a unique ID to this renderer instance\n this.rendererId = ++rendererIdCounter;\n \n // Create a new emitter-aware pool for this renderer\n this.pixiPool = new EmitterAwarePool();\n this.pixiPool.create = (body, particle) => this.createBody(body, particle);\n \n // Track emitters and their particles\n this.emitterMap = new Map();\n \n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n onEmitterAdded(emitter) {\n // Add emitter to tracking map\n if (!this.emitterMap.has(emitter.id)) {\n this.emitterMap.set(emitter.id, new Set());\n }\n }\n\n onEmitterRemoved(emitter) {\n // Clean up emitter's tracked particles\n if (this.emitterMap.has(emitter.id)) {\n this.emitterMap.delete(emitter.id);\n }\n }\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n // Get the emitter ID for this particle and store it directly on the particle\n const emitterId = particle.parent ? particle.parent.id : 'orphaned';\n \n // Store emitter ID directly on the particle for when parent reference is lost\n particle.__emitterId = emitterId;\n \n if (particle.body) {\n particle.body = this.pixiPool.get(particle.body, particle, emitterId);\n } else {\n particle.body = this.pixiPool.get(this.circleConf, particle, emitterId);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n // Track this particle with its emitter\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).add(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n if (!particle.body) return;\n \n this.element.removeChild(particle.body);\n \n // Use the cached emitter ID instead of accessing parent which might be null\n const emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned');\n \n // Return to the emitter-specific pool\n this.pixiPool.expire(particle.body, emitterId);\n \n // Remove from tracked particles\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).delete(particle);\n }\n \n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n target.rotation = particle.rotation * MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.set(0.5, 0.5);\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n \n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.lineStyle(1, stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n * @param {Array} particles - The particles to clean up.\n */\n destroy(particles) {\n super.destroy();\n\n // Clean up tracking maps\n this.emitterMap.clear();\n this.emitterMap = null;\n\n // Clean up the instance-specific particle pool\n this.pixiPool.destroy();\n this.pixiPool = null;\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n particle.body.destroy({ children: true });\n }\n }\n }\n}","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a WebGL-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class WebGLRenderer extends BaseRenderer {\n /**\n * Creates a new WebGLRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n */\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a custom renderer that extends the BaseRenderer.\n * @extends BaseRenderer\n */\nexport default class CustomRenderer extends BaseRenderer {\n /**\n * Creates a new CustomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n /**\n * The name of the renderer.\n * @type {string}\n */\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\n\n/**\n * Represents a line zone for particle systems.\n * @extends Zone\n */\nexport default class LineZone extends Zone {\n /**\n * Creates a new LineZone.\n * @param {number} x1 - The x-coordinate of the first point.\n * @param {number} y1 - The y-coordinate of the first point.\n * @param {number} [x2] - The x-coordinate of the second point.\n * @param {number} [y2] - The y-coordinate of the second point.\n * @param {string} [direction=\">\"] - The direction of the line.\n */\n constructor(x1, y1, x2, y2, direction = \">\") {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n /**\n * Gets a random position on the line.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n /**\n * Determines which side of the line a point is on.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} True if the point is on the positive side of the line, false otherwise.\n */\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n /**\n * Calculates the distance of a point from the line.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {number} The distance from the point to the line.\n */\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n /**\n * Calculates the symmetric vector of a given vector with respect to the line.\n * @param {Vector2D} v - The vector to reflect.\n * @returns {Vector2D} The reflected vector.\n */\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n /**\n * Gets the gradient (angle) of the line.\n * @returns {number} The gradient of the line in radians.\n */\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n /**\n * Checks if a particle is outside the range of the line.\n * @param {Particle} particle - The particle to check.\n * @returns {boolean} True if the particle is within range, false otherwise.\n */\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n /**\n * Gets the length of the line.\n * @returns {number} The length of the line.\n */\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a circular zone in a 2D space.\n * @extends Zone\n */\nexport default class CircleZone extends Zone {\n /**\n * Creates a new CircleZone.\n * @param {number} x - The x-coordinate of the circle's center.\n * @param {number} y - The y-coordinate of the circle's center.\n * @param {number} [radius] - The radius of the circle.\n */\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n /**\n * Gets a random position within the circle.\n * @returns {Object} An object with x and y coordinates.\n */\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n /**\n * Sets the center of the circle.\n * @param {number} x - The new x-coordinate of the center.\n * @param {number} y - The new y-coordinate of the center.\n */\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n /**\n * Calculates the symmetric position of a particle.\n * @param {Object} particle - The particle to calculate symmetry for.\n */\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n /**\n * Calculates the gradient for a particle.\n * @param {Object} particle - The particle to calculate the gradient for.\n * @returns {number} The calculated gradient.\n */\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a rectangular zone for particle systems.\n * @extends Zone\n */\nexport default class RectZone extends Zone {\n /**\n * Creates a new RectZone.\n * @param {number} x - The x-coordinate of the top-left corner of the rectangle.\n * @param {number} y - The y-coordinate of the top-left corner of the rectangle.\n * @param {number} [width] - The width of the rectangle.\n * @param {number} [height] - The height of the rectangle.\n */\n constructor(x, y, width = 200, height = 200) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Gets a random position within the rectangular zone.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n return this.vector;\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\n/**\n * Represents a zone based on image data.\n * @extends Zone\n */\nexport default class ImageZone extends Zone {\n /**\n * Creates an ImageZone.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n /**\n * Resets the ImageZone with new parameters.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n /**\n * Sets up vectors based on the image data.\n * @returns {Object} The vector object.\n */\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n /**\n * Checks if a point is within the bounds of the image.\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @returns {boolean} True if the point is within bounds, false otherwise.\n */\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n return this.imageData.data[index + 3] > 0;\n }\n\n /**\n * Gets a random position within the image zone.\n * @returns {Object} A vector representing the position.\n */\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n /**\n * Gets the color at a specific point in the image.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} An object containing r, g, b, and a values.\n */\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n particle.dead = this.getBound(particle.p.x - this.x, particle.p.y - this.y);\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n /**\n * Destroys the ImageZone and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n","import Proton from \"./core/Proton\";\nimport Particle from \"./core/Particle\";\nimport Pool from \"./core/Pool\";\n\nimport Util from \"./utils/Util\";\nimport ColorUtil from \"./utils/ColorUtil\";\nimport MathUtil from \"./math/MathUtil\";\nimport Vector2D from \"./math/Vector2D\";\nimport Polar2D from \"./math/Polar2D\";\nimport Mat3 from \"./math/Mat3\";\nimport Span from \"./math/Span\";\nimport ArraySpan from \"./math/ArraySpan\";\nimport Rectangle from \"./math/Rectangle\";\nimport ease from \"./math/ease\";\n\nimport Rate from \"./initialize/Rate\";\nimport Initialize from \"./initialize/Initialize\";\nimport Life from \"./initialize/Life\";\nimport Position from \"./initialize/Position\";\nimport Velocity from \"./initialize/Velocity\";\nimport Mass from \"./initialize/Mass\";\nimport Radius from \"./initialize/Radius\";\nimport Body from \"./initialize/Body\";\n\nimport Behaviour from \"./behaviour/Behaviour\";\nimport Force from \"./behaviour/Force\";\nimport Attraction from \"./behaviour/Attraction\";\nimport RandomDrift from \"./behaviour/RandomDrift\";\nimport Gravity from \"./behaviour/Gravity\";\nimport Collision from \"./behaviour/Collision\";\nimport CrossZone from \"./behaviour/CrossZone\";\nimport Alpha from \"./behaviour/Alpha\";\nimport Scale from \"./behaviour/Scale\";\nimport Rotate from \"./behaviour/Rotate\";\nimport Color from \"./behaviour/Color\";\nimport Cyclone from \"./behaviour/Cyclone\";\nimport Repulsion from \"./behaviour/Repulsion\";\nimport GravityWell from \"./behaviour/GravityWell\";\n\nimport Emitter from \"./emitter/Emitter\";\nimport BehaviourEmitter from \"./emitter/BehaviourEmitter\";\nimport FollowEmitter from \"./emitter/FollowEmitter\";\n\nimport CanvasRenderer from \"./render/CanvasRenderer\";\nimport DomRenderer from \"./render/DomRenderer\";\nimport EaselRenderer from \"./render/EaselRenderer\";\nimport PixelRenderer from \"./render/PixelRenderer\";\nimport PixiRenderer from \"./render/PixiRenderer\";\nimport WebGLRenderer from \"./render/WebGLRenderer\";\nimport CustomRenderer from \"./render/CustomRenderer\";\n\nimport Zone from \"./zone/Zone\";\nimport LineZone from \"./zone/LineZone\";\nimport CircleZone from \"./zone/CircleZone\";\nimport PointZone from \"./zone/PointZone\";\nimport RectZone from \"./zone/RectZone\";\nimport ImageZone from \"./zone/ImageZone\";\n\nimport Debug from \"./debug/Debug\";\n\n// namespace\nProton.Particle = Particle;\nProton.Pool = Pool;\n\nProton.Util = Util;\nProton.ColorUtil = ColorUtil;\nProton.MathUtil = MathUtil;\nProton.Vector2D = Proton.Vector = Vector2D;\nProton.Polar2D = Proton.Polar = Polar2D;\nProton.ArraySpan = ArraySpan;\nProton.Rectangle = Rectangle;\nProton.Rate = Rate;\nProton.ease = ease;\nProton.Span = Span;\nProton.Mat3 = Mat3;\nProton.getSpan = (a, b, center) => new Span(a, b, center);\nProton.createArraySpan = ArraySpan.createArraySpan;\n\nProton.Initialize = Proton.Init = Initialize;\nProton.Life = Proton.L = Life;\nProton.Position = Proton.P = Position;\nProton.Velocity = Proton.V = Velocity;\nProton.Mass = Proton.M = Mass;\nProton.Radius = Proton.R = Radius;\nProton.Body = Proton.B = Body;\n\nProton.Behaviour = Behaviour;\nProton.Force = Proton.F = Force;\nProton.Attraction = Proton.A = Attraction;\nProton.RandomDrift = Proton.RD = RandomDrift;\nProton.Gravity = Proton.G = Gravity;\nProton.Collision = Collision;\nProton.CrossZone = CrossZone;\nProton.Alpha = Alpha;\nProton.Scale = Proton.S = Scale;\nProton.Rotate = Rotate;\nProton.Color = Color;\nProton.Repulsion = Repulsion;\nProton.Cyclone = Cyclone;\nProton.GravityWell = GravityWell;\n\nProton.Emitter = Emitter;\nProton.BehaviourEmitter = BehaviourEmitter;\nProton.FollowEmitter = FollowEmitter;\n\nProton.Zone = Zone;\nProton.LineZone = LineZone;\nProton.CircleZone = CircleZone;\nProton.PointZone = PointZone;\nProton.RectZone = RectZone;\nProton.ImageZone = ImageZone;\n\nProton.CanvasRenderer = CanvasRenderer;\nProton.DomRenderer = DomRenderer;\nProton.EaselRenderer = EaselRenderer;\nProton.PixiRenderer = PixiRenderer;\nProton.PixelRenderer = PixelRenderer;\nProton.WebGLRenderer = Proton.WebGlRenderer = WebGLRenderer;\nProton.CustomRenderer = CustomRenderer;\n\nProton.Debug = Debug;\nUtil.assign(Proton, ease);\n\n// export\nexport default Proton;\nexport {\n Particle,\n Pool,\n Util,\n ColorUtil,\n MathUtil,\n Vector2D,\n Polar2D,\n Mat3,\n Span,\n ArraySpan,\n Rectangle,\n ease,\n Rate,\n Initialize,\n Life,\n Position,\n Velocity,\n Mass,\n Radius,\n Body,\n Behaviour,\n Force,\n Attraction,\n RandomDrift,\n Gravity,\n Collision,\n CrossZone,\n Alpha,\n Scale,\n Rotate,\n Color,\n Cyclone,\n Repulsion,\n GravityWell,\n Emitter,\n BehaviourEmitter,\n FollowEmitter,\n CanvasRenderer,\n DomRenderer,\n EaselRenderer,\n PixelRenderer,\n PixiRenderer,\n WebGLRenderer,\n CustomRenderer,\n Zone,\n LineZone,\n CircleZone,\n PointZone,\n RectZone,\n ImageZone,\n Debug\n};\n"],"names":["ipot","length","nhpot","i","makeTranslation","tx","ty","makeRotation","angleInRadians","c","Math","cos","s","sin","makeScale","sx","sy","matrixMultiply","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","getImageData","context","image","rect","drawImage","imagedata","clearRect","getImgFromCache","img","callback","param","src","Image","onload","e","target","getCanvasFromCache","WebGLUtil","canvas","DomUtil","getContext","initValue","value","defaults","undefined","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","FactoryFunc","bind","apply","concat","ImgUtil","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","_proto","get","params","p","__puid","pop","createOrClone","expire","getCache","create","Util","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","cssText","join","addEventListener","bg","color","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","INFINITY","Infinity","MathUtil","PIx2","PI_2","PI_180","N180_PI","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","_createClass","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","Span","getValue","setSpanValue","getSpanValue","pan","hasProp","setProp","props","prop","setVectorVal","conf","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","ease","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","PropUtil","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","d","multiplyVec2","m","vec","ArraySpan","_Span","_arr","_inheritsLoose","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","_Behaviour","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","ColorUtil","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","_Attraction","GravityWell","centerPoint","distanceVec","distanceSq","factor","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","len","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","shouldDispatchUpdates","Boolean","bindEvent","aliveCount","dispatch","event","MAX_EMIT_PER_FRAME","numToEmit","process","env","NODE_ENV","warn","_fastCreateParticles","particlesArr","MAX_SAFE_PARTICLES","getBulk","_initializeParticlesBulk","_createParticlesLoop","shouldDispatch","dispatchFn","InitializeUtil","createParticlesBatch","BATCH_SIZE","chunkSize","min","_createParticleChunk","reserve","newCapacity","capacity","createParticle","setupParticle","BehaviourEmitter","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","isImage","__isImage","tagName","nodeName","isString","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","Types","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","PIXIClass","rendererIdCounter","EmitterAwarePool","_Pool","emitterPools","Map","emitterId","has","emitterPool","__emitterId","forEach","PixiRenderer","setColor","blendMode","rendererId","pixiPool","emitterMap","setPIXI","PIXI","_proto2","Sprite","createFromImage","from","Set","delete","tint","anchor","lineStyle","endFill","children","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","vsSource","getFragmentShader","fsSource","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","vs","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","miny","maxx","maxy","xxyy","getLength","C","D","getDistance","getSymmetric","tha2","tha1","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter","Vector","Polar","getSpan","Init","L","P","V","M","R","F","RD","G","S","WebGlRenderer","Debug"],"mappings":"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"} \ No newline at end of file diff --git a/build/proton.min.js b/build/proton.min.js index abcae8b..96d747d 100644 --- a/build/proton.min.js +++ b/build/proton.min.js @@ -1,5 +1,5 @@ /*! -* Proton v7.1.3 +* Proton v7.2.0 * https://github.com/drawcall/Proton * * Copyright 2013-2025, drawcall @@ -7,5 +7,5 @@ * http://www.opensource.org/licenses/mit-license * */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Proton={})}(this,(function(t){"use strict";function e(t,e){for(var i=0;i>e;return t+1},s=function(t,e){return[1,0,0,0,1,0,t,e,1]},o=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},h=function(t,e){return[t,0,0,0,e,0,0,0,1]},l=function(t,e){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+n*f+r*m,i*d+n*g+r*v,i*p+n*y+r*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},c={createCanvas:function(t,e,i,n){void 0===n&&(n="absolute");var r=document.createElement("canvas");return r.id=t,r.width=e,r.height=i,r.style.opacity=0,r.style.position=n,this.transform(r,-500,-500,0,0),r},createDiv:function(t,e,i){var n=document.createElement("div");return n.id=t,n.style.position="absolute",this.resize(n,e,i),n},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,n,r){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+n+") rotate("+r+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,n,r){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+n+") rotate("+r+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var n=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+n]=i,t.style["Moz"+n]=i,t.style["O"+n]=i,t.style["ms"+n]=i,t.style[""+e]=i}},u={},d={},p=0,f=function(t,e,i){t.drawImage(e,i.x,i.y);var n=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),n},g=function(t,e,i){var n="string"==typeof t?t:t.src;if(u[n])e(u[n],i);else{var r=new Image;r.onload=function(t){u[n]=t.target,e(u[n],i)},r.src=n}},y=function(t,e,i){var n=t.src;if(!d[n]){var r=a(t.width),s=a(t.height),o=c.createCanvas("proton_canvas_cache_"+ ++p,r,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),d[n]=o}return e&&e(d[n],i),d[n]},m={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},sliceArray:function(t,e,i){this.emptyArray(i);for(var n=e;n-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return f(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},v={},b={_index:0,_cache:{},id:function(t){return void 0!==v[t]&&null!==v[t]||(v[t]=0),t+"_"+v[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},x=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var n;return i=i||t.__puid||b.getId(t),(n=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,n},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?m.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),E=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),n=this.getRenderer(),r="";switch(this.type){case 2:r+="emitter:"+this.proton.emitters.length+"
",i&&(r+="em speed:"+i.emitSpeed+"
"),i&&(r+="pos:"+this.getEmitterPos(i));break;case 3:i&&(r+="initializes:"+i.initializes.length+"
"),i&&(r+=''+this.concatArr(i.initializes)+"
"),i&&(r+="behaviours:"+i.behaviours.length+"
"),i&&(r+=''+this.concatArr(i.behaviours)+"
");break;case 4:n&&(r+=n.name+"
"),n&&(r+="body:"+this.getCreatedNumber(n)+"
");break;default:r+="particles:"+this.proton.getCount()+"
",r+="pool:"+this.proton.pool.getCount()+"
",r+="total:"+this.proton.pool.total}this.container.innerHTML=r},e.add=function(t,e){var i=this;if(!this.container){var n,r;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:n="#201",r="#f08";break;case 3:n="#020",r="#0f0";break;default:n="#002",r="#0ff"}this.container.style["background-color"]=n,this.container.style.color=r}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(t.DEFAULT_INTERVAL),this.dispatchEvent(t.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(t.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(t.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){t.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){m.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),m.destroyAll(e.emitters),m.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=t,(n=[{key:"fps",get:function(){return this._fps},set:function(e){this._fps=e,this._interval="auto"===e?t.DEFAULT_INTERVAL:R.floor(1/e,7)}}])&&e(i.prototype,n),r&&e(i,r),t}();w.USE_CLOCK=!1,w.MEASURE=100,w.EULER="euler",w.RK2="runge-kutta2",w.PARTICLE_CREATED="PARTICLE_CREATED",w.PARTICLE_UPDATE="PARTICLE_UPDATE",w.PARTICLE_SLEEP="PARTICLE_SLEEP",w.PARTICLE_DEAD="PARTICLE_DEAD",w.EMITTER_ADDED="EMITTER_ADDED",w.EMITTER_REMOVED="EMITTER_REMOVED",w.PROTON_UPDATE="PROTON_UPDATE",w.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",w.DEFAULT_INTERVAL=.0167,w.amendChangeTabsBug=!0,P.bind(w);var C=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),I=function(){function t(t,e,i){this.isArray=void 0,this.a=void 0,this.b=void 0,this.center=void 0,m.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=m.initValue(t,1),this.b=m.initValue(e,this.a),this.center=m.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?m.getRandFromArray(this.a):this.center?R.randomFloating(this.a,this.b,t):R.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,n){return e instanceof t?e:void 0===i?new t(e):void 0===n?new t(e,i):new t(e,i,n)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),S={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=I.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},D={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*R.PI_2)},easeOutSine:function(t){return Math.sin(t*R.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},V=function(){function t(t,e){this.x=void 0,this.y=void 0,this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?R.PI_2:this.y<0?-R.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),M=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=b.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new V,this.v=new V,this.a=new V,this.old.p=new V,this.old.v=new V,this.old.a=new V,this.rgb=new C,this.reset(),t&&S.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*R.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=D.easeLinear,this.rgb.reset(),m.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){m.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),B={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},L=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new V(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),U={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*n+u*s,i[1]=c*r+u*o,i[2]=a*d,i[3]=p*n+f*s,i[4]=p*r+f*o,i[6]=g*n+y*s+h,i[7]=g*r+y*o+l,i},inverse:function(t,e){var i,n=t[0],r=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(n*l+r*c),e[0]=l*i,e[1]=-r*i,e[3]=c*i,e[4]=n*i,e[6]=u*i,e[7]=(-h*n+r*o)*i,e},multiplyVec2:function(t,e,i){var n=e[0],r=e[1];return i[0]=n*t[0]+r*t[3]+t[6],i[1]=n*t[1]+r*t[4]+t[7],i}},F=function(t){function e(e){var i;return(i=t.call(this)||this)._arr=m.toArray(e),i}return i(e,t),e.prototype.getValue=function(){var t=m.getRandFromArray(this._arr);return"random"===t||"Random"===t?R.randomColor():t},e.createArraySpan=function(t){return t?t instanceof e?t:new e(t):null},e}(I),z=function(){function t(t,e,i,n){this.x=t,this.y=e,this.width=i,this.height=n,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),O=function(){function t(t,e){this.numPan=void 0,this.timePan=void 0,this.startTime=void 0,this.nextTime=void 0,this.numPan=I.setSpanValue(m.initValue(t,1)),this.timePan=I.setSpanValue(m.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),k=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),N=function(t){function e(e,i,n){var r;return(r=t.call(this)||this).lifePan=void 0,r.name=void 0,r.lifePan=I.setSpanValue(e,i,n),r.name="Life",r}return i(e,t),e.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},e}(k),H=function(){function t(){this.vector=new V(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),G=function(t){function e(e,i){var n;return(n=t.call(this)||this).x=e,n.y=i,n}i(e,t);var n=e.prototype;return n.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},n.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},e}(H),q=function(t){function e(e){var i;return(i=t.call(this)||this).zone=void 0,i.name=void 0,i.zone=m.initValue(e,new G),i.name="Position",i}i(e,t);var n=e.prototype;return n.reset=function(t){this.zone=m.initValue(t,new G)},n.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},e}(k),X=function(t){function e(e,i,n){var r;return(r=t.call(this)||this).rPan=void 0,r.thaPan=void 0,r.name=void 0,r.rPan=I.setSpanValue(e),r.thaPan=I.setSpanValue(i),r.type=m.initValue(n,"vector"),r.name="Velocity",r}i(e,t);var n=e.prototype;return n.reset=function(t,e,i){this.rPan=I.setSpanValue(t),this.thaPan=I.setSpanValue(e),this.type=m.initValue(i,"vector")},n.normalizeVelocity=function(t){return t*w.MEASURE},n.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new L(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*R.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},e}(k),Y=function(t){function e(e,i,n){var r;return(r=t.call(this)||this).massPan=void 0,r.name=void 0,r.massPan=I.setSpanValue(e,i,n),r.name="Mass",r}return i(e,t),e.prototype.initialize=function(t){t.mass=this.massPan.getValue()},e}(k),j=function(t){function e(e,i,n){var r;return(r=t.call(this)||this).radius=void 0,r.name=void 0,r.radius=I.setSpanValue(e,i,n),r.name="Radius",r}i(e,t);var n=e.prototype;return n.reset=function(t,e,i){this.radius=I.setSpanValue(t,e,i)},n.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},e}(k),Z=function(t){function e(e,i,n){var r;return(r=t.call(this)||this).image=void 0,r.name=void 0,r.image=r.setSpanValue(e),r.w=m.initValue(i,20),r.h=m.initValue(n,r.w),r.name="Body",r}i(e,t);var n=e.prototype;return n.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},n.setSpanValue=function(t){return t instanceof F?t:new F(t)},e}(k),W=function(){function t(e,i){this.life=m.initValue(e,1/0),this.easing=D.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=m.initValue(t,1/0),this.easing=D.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(w.MEASURE)},e.normalizeValue=function(t){return t*w.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var n=this.easing(t.age/t.life);this.energy=Math.max(1-n,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();W.id=0;var Q=function(t){function e(e,i,n,r){var a;return(a=t.call(this,n,r)||this).force=a.normalizeForce(new V(e,i)),a.name="Force",a}i(e,t);var n=e.prototype;return n.reset=function(e,i,n,r){this.force=this.normalizeForce(new V(e,i)),n&&t.prototype.reset.call(this,n,r)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},e}(W),K=function(t){function e(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).targetPosition=m.initValue(e,new V),s.radius=m.initValue(n,1e3),s.force=m.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new V,s.lengthSq=0,s.name="Attraction",s}i(e,t);var n=e.prototype;return n.reset=function(e,i,n,r,a){this.targetPosition=m.initValue(e,new V),this.radius=m.initValue(n,1e3),this.force=m.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new V,this.lengthSq=0,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq=this.delay&&(t.a.addXY(R.randomAToB(-this.panFoce.x,this.panFoce.x),R.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},e}(W),$=function(t){function e(e,i,n){var r;return(r=t.call(this,0,e,i,n)||this).name="Gravity",r}return i(e,t),e.prototype.reset=function(e,i,n){t.prototype.reset.call(this,0,e,i,n)},e}(Q),tt=function(t){function e(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).reset(e,i,n),s.newPool=[],s.pool=[],s.name="Collision",s}i(e,t);var n=e.prototype;return n.reset=function(e,i,n,r,a){this.emitter=m.initValue(e,null),this.mass=m.initValue(i,!0),this.callback=m.initValue(n,null),this.collisionPool=[],this.delta=new V,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.emitter?m.sliceArray(this.emitter.particles,i,this.newPool):m.sliceArray(this.pool,i,this.newPool);var n,r,a,s,o,h,l,c=this.newPool.length;for(l=0;lr;)t-=r,this.update(r);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=n},n.removeAllParticles=function(){for(var t=this.particles.length;t--;)this.particles[t].dead=!0},n.addSelfInitialize=function(t){t.init&&t.init(this)},n.addInitialize=function(){for(var t=arguments.length,e=new Array(t),i=0;i-1&&this.initializes.splice(e,1)},n.removeAllInitializers=function(){m.emptyArray(this.initializes)},n.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i=this.life||this.dead)&&this.destroy(),this.emitting(t),this.integrate(t)},n.integrate=function(t){if(this.parent){var e,i,n=1-this.damping;for(this.parent.integrator.calculate(this,t,n),e=this.particles.length-1;e>=0;e--)(i=this.particles[e]).update(t,e),this.parent.integrator.calculate(i,t,n),this.dispatch("PARTICLE_UPDATE",i),i.dead&&(this.dispatch("PARTICLE_DEAD",i),this.parent.pool.expire(i),this.particles.splice(e,1))}},n.dispatch=function(t,e){this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)},n.emitting=function(t){if(!this.stoped)if("none"===this.totalTime)this.emitTime+=t;else if("once"===this.totalTime){var e,i=this.rate.getValue(99999);for(i>0&&(this.emitSpeed=i),e=0;e0&&(this.emitSpeed=r),n=0;n-1&&this.selfBehaviours.splice(e,1)},n.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,n=this.selfBehaviours.length;for(i=0;ithis.element.width||i<0||i>this.element.height)){var a=4*((i|0)*t.width+(e|0));t.data[a]=r.r,t.data[a+1]=r.g,t.data[a+2]=r.b,t.data[a+3]=255*n.alpha}},n.onParticleDead=function(t){},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},e}(mt),Pt=function(t){function e(e,i){var n;return(n=t.call(this,e)||this).stroke=i,n.color=!1,n.setColor=!1,n.blendMode=null,n.pool.create=function(t,e){return n.createBody(t,e)},n.setPIXI(window.PIXI),n.name="PixiRenderer",n}i(e,t);var n=e.prototype;return n.setPIXI=function(t){try{dt=t||{Sprite:{}},this.createFromImage=dt.Sprite.from||dt.Sprite.fromImage}catch(t){}},n.onProtonUpdate=function(){},n.onParticleCreated=function(t){t.body?t.body=this.pool.get(t.body,t):t.body=this.pool.get(this.circleConf,t),this.blendMode&&(t.body.blendMode=this.blendMode),this.element.addChild(t.body)},n.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=B.getHex16FromParticle(t))},n.onParticleDead=function(t){this.element.removeChild(t.body),this.pool.expire(t.body),t.body=null},n.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*R.PI_180},n.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},n.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new dt.Sprite(t);return e.anchor.x=.5,e.anchor.y=.5,e},n.createCircle=function(t){var e=new dt.Graphics;if(this.stroke){var i=yt(this.stroke)?this.stroke:0;e.beginStroke(i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},n.destroy=function(e){t.prototype.destroy.call(this);for(var i=e.length;i--;){var n=e[i];n.body&&this.element.removeChild(n.body)}},e}(mt),At=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(U.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?U.set(t,this.mats[0]):U.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?U.set(t,this.mats[0]):U.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),Tt=function(t){function e(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(r(i)),i.name="WebGLRenderer",i}i(e,t);var n=e.prototype;return n.init=function(e){t.prototype.init.call(this,e),this.resize(this.element.width,this.element.height)},n.resize=function(t,e){this.umat[4]=-2,this.umat[7]=1,this.smat[0]=1/t,this.smat[4]=1/e,this.mstack.set(this.umat,0),this.mstack.set(this.smat,1),this.gl.viewport(0,0,t,e),this.element.width=t,this.element.height=e},n.setMaxRadius=function(t){this.circleCanvasURL=this.createCircle(t)},n.getVertexShader=function(){return["uniform vec2 viewport;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 tMat;","varying vec2 vTextureCoord;","varying float alpha;","void main() {","vec3 v = tMat * vec3(aVertexPosition, 1.0);","gl_Position = vec4(v.x, v.y, 0, 1);","vTextureCoord = aTextureCoord;","alpha = tMat[0][2];","}"].join("\n")},n.getFragmentShader=function(){return["precision mediump float;","varying vec2 vTextureCoord;","varying float alpha;","uniform sampler2D uSampler;","uniform vec4 color;","uniform bool useTexture;","uniform vec3 uColor;","void main() {","vec4 textureColor = texture2D(uSampler, vTextureCoord);","gl_FragColor = textureColor * vec4(uColor, 1.0);","gl_FragColor.w *= alpha;","}"].join("\n")},n.initVar=function(){this.mstack=new At,this.umat=U.create([2,0,1,0,-2,0,-1,1,1]),this.smat=U.create([.01,0,1,0,.01,0,0,0,1]),this.texturebuffers={}},n.blendEquation=function(t){this.gl.blendEquation(this.gl[t])},n.blendFunc=function(t,e){this.gl.blendFunc(this.gl[t],this.gl[e])},n.getShader=function(t,e,i){var n=i?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);return t.shaderSource(n,e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)},n.initShaders=function(){var t=this.getShader(this.gl,this.getFragmentShader(),!0),e=this.getShader(this.gl,this.getVertexShader(),!1);this.sprogram=this.gl.createProgram(),this.gl.attachShader(this.sprogram,e),this.gl.attachShader(this.sprogram,t),this.gl.linkProgram(this.sprogram),this.gl.getProgramParameter(this.sprogram,this.gl.LINK_STATUS)||alert("Could not initialise shaders"),this.gl.useProgram(this.sprogram),this.sprogram.vpa=this.gl.getAttribLocation(this.sprogram,"aVertexPosition"),this.sprogram.tca=this.gl.getAttribLocation(this.sprogram,"aTextureCoord"),this.gl.enableVertexAttribArray(this.sprogram.tca),this.gl.enableVertexAttribArray(this.sprogram.vpa),this.sprogram.tMatUniform=this.gl.getUniformLocation(this.sprogram,"tMat"),this.sprogram.samplerUniform=this.gl.getUniformLocation(this.sprogram,"uSampler"),this.sprogram.useTex=this.gl.getUniformLocation(this.sprogram,"useTexture"),this.sprogram.color=this.gl.getUniformLocation(this.sprogram,"uColor"),this.gl.uniform1i(this.sprogram.useTex,1)},n.initBuffers=function(){var t,e;this.unitIBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,3,1,0,2,3]),this.gl.STATIC_DRAW);var i=[];for(e=0;e<100;e++)i.push(e);for(t=new Uint16Array(i),this.unitI33=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitI33),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW),i=[],e=0;e<100;e++)i.push(e,e+1,e+2);t=new Uint16Array(i),this.stripBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.stripBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW)},n.createCircle=function(t){this.circleCanvasRadius=a(m.initValue(t,32));var e=c.createCanvas("circle_canvas",2*this.circleCanvasRadius,2*this.circleCanvasRadius),i=e.getContext("2d");return i.beginPath(),i.arc(this.circleCanvasRadius,this.circleCanvasRadius,this.circleCanvasRadius,0,2*Math.PI,!0),i.closePath(),i.fillStyle="#FFF",i.fill(),e.toDataURL()},n.drawImg2Canvas=function(t){var e=t.body.width,i=t.body.height,n=a(t.body.width),r=a(t.body.height),s=t.body.width/n,o=t.body.height/r;this.texturebuffers[t.data.src]||(this.texturebuffers[t.data.src]=[this.gl.createTexture(),this.gl.createBuffer(),this.gl.createBuffer()]),t.data.texture=this.texturebuffers[t.data.src][0],t.data.vcBuffer=this.texturebuffers[t.data.src][1],t.data.tcBuffer=this.texturebuffers[t.data.src][2],this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,s,0,0,o,o,o]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,e,0,0,i,e,i]),this.gl.STATIC_DRAW);var h=t.data.canvas.getContext("2d").getImageData(0,0,n,r);this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,h),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_NEAREST),this.gl.generateMipmap(this.gl.TEXTURE_2D),t.data.textureLoaded=!0,t.data.textureWidth=e,t.data.textureHeight=i},n.onProtonUpdate=function(){},n.onParticleCreated=function(t){t.data.textureLoaded=!1,t.data.tmat=U.create(),t.data.tmat[8]=1,t.data.imat=U.create(),t.data.imat[8]=1,t.body?g(t.body,this.addImg2Body,t):(g(this.circleCanvasURL,this.addImg2Body,t),t.data.oldScale=t.radius/this.circleCanvasRadius)},n.addImg2Body=function(t,e){e.dead||(e.body=t,e.data.src=t.src,e.data.canvas=y(t),e.data.oldScale=1,this.drawImg2Canvas(e))},n.onParticleUpdate=function(t){t.data.textureLoaded&&(this.updateMatrix(t),this.gl.uniform3f(this.sprogram.color,t.rgb.r/255,t.rgb.g/255,t.rgb.b/255),this.gl.uniformMatrix3fv(this.sprogram.tMatUniform,!1,this.mstack.top()),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.vertexAttribPointer(this.sprogram.vpa,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.vertexAttribPointer(this.sprogram.tca,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.uniform1i(this.sprogram.samplerUniform,0),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0),this.mstack.pop())},n.onParticleDead=function(t){},n.updateMatrix=function(t){var e=s(-t.data.textureWidth/2,-t.data.textureHeight/2),i=s(t.p.x,t.p.y),n=t.rotation*R.PI_180,r=o(n),a=t.scale*t.data.oldScale,c=h(a,a),u=l(e,c);u=l(u,r),u=l(u,i),U.inverse(u,t.data.imat),u[2]=t.alpha,this.mstack.push(u)},n.destroy=function(){t.prototype.destroy.call(this),this.gl=null,this.mstack=null,this.umat=null,this.smat=null,this.texturebuffers=null},e}(mt),Rt=function(t){function e(e){var i;return(i=t.call(this,e)||this).name="CustomRenderer",i}return i(e,t),e}(mt),_t=function(t){function e(e,i,n,r,a){var s;return void 0===a&&(a=">"),s=t.call(this)||this,n-e>=0?(s.x1=e,s.y1=i,s.x2=n,s.y2=r):(s.x1=n,s.y1=r,s.x2=e,s.y2=i),s.dx=s.x2-s.x1,s.dy=s.y2-s.y1,s.minx=Math.min(s.x1,s.x2),s.miny=Math.min(s.y1,s.y2),s.maxx=Math.max(s.x1,s.x2),s.maxy=Math.max(s.y1,s.y2),s.dot=s.x2*s.y1-s.x1*s.y2,s.xxyy=s.dx*s.dx+s.dy*s.dy,s.gradient=s.getGradient(),s.length=s.getLength(),s.direction=m.initValue(a,">"),s}i(e,t);var n=e.prototype;return n.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*this.length*Math.cos(this.gradient),this.vector.y=this.y1+this.random*this.length*Math.sin(this.gradient),this.vector},n.getDirection=function(t,e){var i=this.dy,n=-this.dx;return(i*t+n*e+this.dot)*(0===n?1:n)>0},n.getDistance=function(t,e){return(this.dy*t+-this.dx*e+this.dot)/Math.sqrt(this.xxyy)},n.getSymmetric=function(t){var e=t.getGradient(),i=2*(this.getGradient()-e),n=t.x,r=t.y;return t.x=n*Math.cos(i)-r*Math.sin(i),t.y=n*Math.sin(i)+r*Math.cos(i),t},n.getGradient=function(){return Math.atan2(this.dy,this.dx)},n.rangeOut=function(t){if(Math.abs(this.getGradient())<=R.PI/4){if(t.p.x<=this.maxx&&t.p.x>=this.minx)return!0}else if(t.p.y<=this.maxy&&t.p.y>=this.miny)return!0;return!1},n.getLength=function(){return Math.sqrt(this.dx*this.dx+this.dy*this.dy)},n.crossing=function(t){if("dead"===this.crossType)if(">"===this.direction||"R"===this.direction||"right"===this.direction||"down"===this.direction){if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)&&(t.dead=!0)}else{if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)||(t.dead=!0)}else if("bound"===this.crossType){if(!this.rangeOut(t))return;this.getDistance(t.p.x,t.p.y)<=t.radius&&(0===this.dx?t.v.x*=-1:0===this.dy?t.v.y*=-1:this.getSymmetric(t.v))}else"cross"===this.crossType&&this.alert&&(console.error("Sorry, LineZone does not support cross method!"),this.alert=!1)},e}(H),wt=function(t){function e(e,i,n){var r;return(r=t.call(this)||this).x=e,r.y=i,r.radius=n,r.angle=0,r.center={x:e,y:i},r}i(e,t);var n=e.prototype;return n.getPosition=function(){return this.angle=R.PIx2*Math.random(),this.randomRadius=Math.random()*this.radius,this.vector.x=this.x+this.randomRadius*Math.cos(this.angle),this.vector.y=this.y+this.randomRadius*Math.sin(this.angle),this.vector},n.setCenter=function(t,e){this.center.x=t,this.center.y=e},n.crossing=function(t){var e=t.p.distanceTo(this.center);"dead"===this.crossType?e-t.radius>this.radius&&(t.dead=!0):"bound"===this.crossType?e+t.radius>=this.radius&&this.getSymmetric(t):"cross"===this.crossType&&this.alert&&(console.error("Sorry, CircleZone does not support cross method!"),this.alert=!1)},n.getSymmetric=function(t){var e=t.v.getGradient(),i=2*(this.getGradient(t)-e),n=t.v.x,r=t.v.y;t.v.x=n*Math.cos(i)-r*Math.sin(i),t.v.y=n*Math.sin(i)+r*Math.cos(i)},n.getGradient=function(t){return-R.PI_2+Math.atan2(t.p.y-this.center.y,t.p.x-this.center.x)},e}(H),Ct=function(t){function e(e,i,n,r){var a;return void 0===n&&(n=200),void 0===r&&(r=200),(a=t.call(this)||this).x=e,a.y=i,a.width=n,a.height=r,a}i(e,t);var n=e.prototype;return n.getPosition=function(){return this.vector.x=this.x+Math.random()*this.width,this.vector.y=this.y+Math.random()*this.height,this.vector},n.crossing=function(t){"dead"===this.crossType?((t.p.x+t.radiusthis.x+this.width)&&(t.dead=!0),(t.p.y+t.radiusthis.y+this.height)&&(t.dead=!0)):"bound"===this.crossType?(t.p.x-t.radiusthis.x+this.width&&(t.p.x=this.x+this.width-t.radius,t.v.x*=-1),t.p.y-t.radiusthis.y+this.height&&(t.p.y=this.y+this.height-t.radius,t.v.y*=-1)):"cross"===this.crossType&&(t.p.x+t.radiusthis.x+this.width&&t.v.x>=0&&(t.p.x=this.x-t.radius),t.p.y+t.radiusthis.y+this.height&&t.v.y>=0&&(t.p.y=this.y-t.radius))},e}(H),It=function(t){function e(e,i,n,r){var a;return(a=t.call(this)||this).reset(e,i,n,r),a}i(e,t);var n=e.prototype;return n.reset=function(t,e,i,n){this.imageData=t,this.x=m.initValue(e,0),this.y=m.initValue(i,0),this.d=m.initValue(n,2),this.vectors=[],this.setVectors()},n.setVectors=function(){var t,e,i=this.imageData.width,n=this.imageData.height;for(t=0;t0&&this.vectors.push({x:t+this.x,y:e+this.y})}return this.vector},n.getBound=function(t,e){var i=4*((e|0)*this.imageData.width+(t|0));return this.imageData.data[i+3]>0},n.getPosition=function(){var t=m.getRandFromArray(this.vectors);return this.vector.copy(t)},n.getColor=function(t,e){t-=this.x;var i=4*(((e-=this.y)|0)*this.imageData.width+(t|0));return{r:this.imageData.data[i],g:this.imageData.data[i+1],b:this.imageData.data[i+2],a:this.imageData.data[i+3]}},n.crossing=function(t){"dead"===this.crossType?t.dead=this.getBound(t.p.x-this.x,t.p.y-this.y):"bound"===this.crossType&&(this.getBound(t.p.x-this.x,t.p.y-this.y)||t.v.negate())},n.destroy=function(){t.prototype.destroy.call(this),this.imageData=null},e}(H),St={addEventListener:function(t,e){t.addEventListener("PROTON_UPDATE_AFTER",(function(){return e()}))},getStyle:function(t){void 0===t&&(t="#ff0000");var e=B.hexToRgb(t);return"rgba("+e.r+", "+e.g+", "+e.b+", 0.5)"},drawZone:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),i instanceof G?(r.beginPath(),r.fillStyle=a,r.arc(i.x,i.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()):i instanceof _t?(r.beginPath(),r.strokeStyle=a,r.moveTo(i.x1,i.y1),r.lineTo(i.x2,i.y2),r.stroke(),r.closePath()):i instanceof Ct?(r.beginPath(),r.strokeStyle=a,r.drawRect(i.x,i.y,i.width,i.height),r.stroke(),r.closePath()):i instanceof wt&&(r.beginPath(),r.strokeStyle=a,r.arc(i.x,i.y,i.radius,0,2*Math.PI,!0),r.stroke(),r.closePath())}))},drawEmitter:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),r.beginPath(),r.fillStyle=a,r.arc(i.p.x,i.p.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()}))}};w.Particle=M,w.Pool=x,w.Util=m,w.ColorUtil=B,w.MathUtil=R,w.Vector2D=w.Vector=V,w.Polar2D=w.Polar=L,w.ArraySpan=F,w.Rectangle=z,w.Rate=O,w.ease=D,w.Span=I,w.Mat3=U,w.getSpan=function(t,e,i){return new I(t,e,i)},w.createArraySpan=F.createArraySpan,w.Initialize=w.Init=k,w.Life=w.L=N,w.Position=w.P=q,w.Velocity=w.V=X,w.Mass=w.M=Y,w.Radius=w.R=j,w.Body=w.B=Z,w.Behaviour=W,w.Force=w.F=Q,w.Attraction=w.A=K,w.RandomDrift=w.RD=J,w.Gravity=w.G=$,w.Collision=tt,w.CrossZone=et,w.Alpha=it,w.Scale=w.S=nt,w.Rotate=rt,w.Color=at,w.Repulsion=ht,w.Cyclone=ot,w.GravityWell=lt,w.Emitter=ut,w.BehaviourEmitter=pt,w.FollowEmitter=ft,w.Zone=H,w.LineZone=_t,w.CircleZone=wt,w.PointZone=G,w.RectZone=Ct,w.ImageZone=It,w.CanvasRenderer=vt,w.DomRenderer=bt,w.EaselRenderer=xt,w.PixiRenderer=Pt,w.PixelRenderer=Et,w.WebGLRenderer=w.WebGlRenderer=Tt,w.CustomRenderer=Rt,w.Debug=St,m.assign(w,D),t.Alpha=it,t.ArraySpan=F,t.Attraction=K,t.Behaviour=W,t.BehaviourEmitter=pt,t.Body=Z,t.CanvasRenderer=vt,t.CircleZone=wt,t.Collision=tt,t.Color=at,t.ColorUtil=B,t.CrossZone=et,t.CustomRenderer=Rt,t.Cyclone=ot,t.Debug=St,t.DomRenderer=bt,t.EaselRenderer=xt,t.Emitter=ut,t.FollowEmitter=ft,t.Force=Q,t.Gravity=$,t.GravityWell=lt,t.ImageZone=It,t.Initialize=k,t.Life=N,t.LineZone=_t,t.Mass=Y,t.Mat3=U,t.MathUtil=R,t.Particle=M,t.PixelRenderer=Et,t.PixiRenderer=Pt,t.PointZone=G,t.Polar2D=L,t.Pool=x,t.Position=q,t.Radius=j,t.RandomDrift=J,t.Rate=O,t.RectZone=Ct,t.Rectangle=z,t.Repulsion=ht,t.Rotate=rt,t.Scale=nt,t.Span=I,t.Util=m,t.Vector2D=V,t.Velocity=X,t.WebGLRenderer=Tt,t.Zone=H,t.default=w,t.ease=D,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Proton={})}(this,(function(t){"use strict";function e(t,e){for(var i=0;i>e;return t+1},s=function(t,e){return[1,0,0,0,1,0,t,e,1]},o=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},h=function(t,e){return[t,0,0,0,e,0,0,0,1]},l=function(t,e){var i=t[0],r=t[1],n=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+r*f+n*m,i*d+r*g+n*v,i*p+r*y+n*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},c={createCanvas:function(t,e,i,r){void 0===r&&(r="absolute");var n=document.createElement("canvas");return n.id=t,n.width=e,n.height=i,n.style.opacity=0,n.style.position=r,this.transform(n,-500,-500,0,0),n},createDiv:function(t,e,i){var r=document.createElement("div");return r.id=t,r.style.position="absolute",this.resize(r,e,i),r},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,r,n){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+r+") rotate("+n+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,r,n){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+r+") rotate("+n+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var r=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+r]=i,t.style["Moz"+r]=i,t.style["O"+r]=i,t.style["ms"+r]=i,t.style[""+e]=i}},u={},d={},p=0,f=function(t,e,i){t.drawImage(e,i.x,i.y);var r=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),r},g=function(t,e,i){var r="string"==typeof t?t:t.src;if(u[r])e(u[r],i);else{var n=new Image;n.onload=function(t){u[r]=t.target,e(u[r],i)},n.src=r}},y=function(t,e,i){var r=t.src;if(!d[r]){var n=a(t.width),s=a(t.height),o=c.createCanvas("proton_canvas_cache_"+ ++p,n,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),d[r]=o}return e&&e(d[r],i),d[r]},m={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},sliceArray:function(t,e,i){this.emptyArray(i);for(var r=e;r-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return f(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},v={},b={_index:0,_cache:{},id:function(t){return void 0!==v[t]&&null!==v[t]||(v[t]=0),t+"_"+v[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},x=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var r;return i=i||t.__puid||b.getId(t),(r=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,r},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?m.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),E=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),r=this.getRenderer(),n="";switch(this.type){case 2:n+="emitter:"+this.proton.emitters.length+"
",i&&(n+="em speed:"+i.emitSpeed+"
"),i&&(n+="pos:"+this.getEmitterPos(i));break;case 3:i&&(n+="initializes:"+i.initializes.length+"
"),i&&(n+=''+this.concatArr(i.initializes)+"
"),i&&(n+="behaviours:"+i.behaviours.length+"
"),i&&(n+=''+this.concatArr(i.behaviours)+"
");break;case 4:r&&(n+=r.name+"
"),r&&(n+="body:"+this.getCreatedNumber(r)+"
");break;default:n+="particles:"+this.proton.getCount()+"
",n+="pool:"+this.proton.pool.getCount()+"
",n+="total:"+this.proton.pool.total}this.container.innerHTML=n},e.add=function(t,e){var i=this;if(!this.container){var r,n;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:r="#201",n="#f08";break;case 3:r="#020",n="#0f0";break;default:r="#002",n="#0ff"}this.container.style["background-color"]=r,this.container.style.color=n}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(t.DEFAULT_INTERVAL),this.dispatchEvent(t.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(t.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(t.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){t.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){m.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),m.destroyAll(e.emitters),m.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=t,(r=[{key:"fps",get:function(){return this._fps},set:function(e){this._fps=e,this._interval="auto"===e?t.DEFAULT_INTERVAL:R.floor(1/e,7)}}])&&e(i.prototype,r),n&&e(i,n),Object.defineProperty(i,"prototype",{writable:!1}),i}();C.USE_CLOCK=!1,C.MEASURE=100,C.EULER="euler",C.RK2="runge-kutta2",C.PARTICLE_CREATED="PARTICLE_CREATED",C.PARTICLE_UPDATE="PARTICLE_UPDATE",C.PARTICLE_SLEEP="PARTICLE_SLEEP",C.PARTICLE_DEAD="PARTICLE_DEAD",C.EMITTER_ADDED="EMITTER_ADDED",C.EMITTER_REMOVED="EMITTER_REMOVED",C.PROTON_UPDATE="PROTON_UPDATE",C.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",C.DEFAULT_INTERVAL=.0167,C.amendChangeTabsBug=!0,P.bind(C);var w=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),I=function(){function t(t,e,i){this.isArray=void 0,this.a=void 0,this.b=void 0,this.center=void 0,m.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=m.initValue(t,1),this.b=m.initValue(e,this.a),this.center=m.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?m.getRandFromArray(this.a):this.center?R.randomFloating(this.a,this.b,t):R.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,r){return e instanceof t?e:void 0===i?new t(e):void 0===r?new t(e,i):new t(e,i,r)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),S={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=I.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},M={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*R.PI_2)},easeOutSine:function(t){return Math.sin(t*R.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},D=function(){function t(t,e){this.x=void 0,this.y=void 0,this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?R.PI_2:this.y<0?-R.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),B=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=b.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new D,this.v=new D,this.a=new D,this.old.p=new D,this.old.v=new D,this.old.a=new D,this.rgb=new w,this.reset(),t&&S.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*R.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=M.easeLinear,this.rgb.reset(),m.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){m.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),V={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},L=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new D(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),U={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var r=t[0],n=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*r+u*s,i[1]=c*n+u*o,i[2]=a*d,i[3]=p*r+f*s,i[4]=p*n+f*o,i[6]=g*r+y*s+h,i[7]=g*n+y*o+l,i},inverse:function(t,e){var i,r=t[0],n=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(r*l+n*c),e[0]=l*i,e[1]=-n*i,e[3]=c*i,e[4]=r*i,e[6]=u*i,e[7]=(-h*r+n*o)*i,e},multiplyVec2:function(t,e,i){var r=e[0],n=e[1];return i[0]=r*t[0]+n*t[3]+t[6],i[1]=r*t[1]+n*t[4]+t[7],i}},F=function(t){function e(e){var i;return(i=t.call(this)||this)._arr=m.toArray(e),i}return i(e,t),e.prototype.getValue=function(){var t=m.getRandFromArray(this._arr);return"random"===t||"Random"===t?R.randomColor():t},e.createArraySpan=function(t){return t?t instanceof e?t:new e(t):null},e}(I),z=function(){function t(t,e,i,r){this.x=t,this.y=e,this.width=i,this.height=r,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),O=function(){function t(t,e){this.numPan=void 0,this.timePan=void 0,this.startTime=void 0,this.nextTime=void 0,this.numPan=I.setSpanValue(m.initValue(t,1)),this.timePan=I.setSpanValue(m.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),k=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),N=function(t){function e(e,i,r){var n;return(n=t.call(this)||this).lifePan=void 0,n.name=void 0,n.lifePan=I.setSpanValue(e,i,r),n.name="Life",n}return i(e,t),e.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},e}(k),H=function(){function t(){this.vector=new D(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),G=function(t){function e(e,i){var r;return(r=t.call(this)||this).x=e,r.y=i,r}i(e,t);var r=e.prototype;return r.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},r.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},e}(H),q=function(t){function e(e){var i;return(i=t.call(this)||this).zone=void 0,i.name=void 0,i.zone=m.initValue(e,new G),i.name="Position",i}i(e,t);var r=e.prototype;return r.reset=function(t){this.zone=m.initValue(t,new G)},r.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},e}(k),X=function(t){function e(e,i,r){var n;return(n=t.call(this)||this).rPan=void 0,n.thaPan=void 0,n.name=void 0,n.rPan=I.setSpanValue(e),n.thaPan=I.setSpanValue(i),n.type=m.initValue(r,"vector"),n.name="Velocity",n}i(e,t);var r=e.prototype;return r.reset=function(t,e,i){this.rPan=I.setSpanValue(t),this.thaPan=I.setSpanValue(e),this.type=m.initValue(i,"vector")},r.normalizeVelocity=function(t){return t*C.MEASURE},r.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new L(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*R.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},e}(k),j=function(t){function e(e,i,r){var n;return(n=t.call(this)||this).massPan=void 0,n.name=void 0,n.massPan=I.setSpanValue(e,i,r),n.name="Mass",n}return i(e,t),e.prototype.initialize=function(t){t.mass=this.massPan.getValue()},e}(k),Y=function(t){function e(e,i,r){var n;return(n=t.call(this)||this).radius=void 0,n.name=void 0,n.radius=I.setSpanValue(e,i,r),n.name="Radius",n}i(e,t);var r=e.prototype;return r.reset=function(t,e,i){this.radius=I.setSpanValue(t,e,i)},r.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},e}(k),Z=function(t){function e(e,i,r){var n;return(n=t.call(this)||this).image=void 0,n.name=void 0,n.image=n.setSpanValue(e),n.w=m.initValue(i,20),n.h=m.initValue(r,n.w),n.name="Body",n}i(e,t);var r=e.prototype;return r.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},r.setSpanValue=function(t){return t instanceof F?t:new F(t)},e}(k),W=function(){function t(e,i){this.life=m.initValue(e,1/0),this.easing=M.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=m.initValue(t,1/0),this.easing=M.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(C.MEASURE)},e.normalizeValue=function(t){return t*C.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var r=this.easing(t.age/t.life);this.energy=Math.max(1-r,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();W.id=0;var Q=function(t){function e(e,i,r,n){var a;return(a=t.call(this,r,n)||this).force=a.normalizeForce(new D(e,i)),a.name="Force",a}i(e,t);var r=e.prototype;return r.reset=function(e,i,r,n){this.force=this.normalizeForce(new D(e,i)),r&&t.prototype.reset.call(this,r,n)},r.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},e}(W),K=function(t){function e(e,i,r,n,a){var s;return(s=t.call(this,n,a)||this).targetPosition=m.initValue(e,new D),s.radius=m.initValue(r,1e3),s.force=m.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new D,s.lengthSq=0,s.name="Attraction",s}i(e,t);var r=e.prototype;return r.reset=function(e,i,r,n,a){this.targetPosition=m.initValue(e,new D),this.radius=m.initValue(r,1e3),this.force=m.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new D,this.lengthSq=0,n&&t.prototype.reset.call(this,n,a)},r.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq=this.delay&&(t.a.addXY(R.randomAToB(-this.panFoce.x,this.panFoce.x),R.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},e}(W),$=function(t){function e(e,i,r){var n;return(n=t.call(this,0,e,i,r)||this).name="Gravity",n}return i(e,t),e.prototype.reset=function(e,i,r){t.prototype.reset.call(this,0,e,i,r)},e}(Q),tt=function(t){function e(e,i,r,n,a){var s;return(s=t.call(this,n,a)||this).reset(e,i,r),s.newPool=[],s.pool=[],s.name="Collision",s}i(e,t);var r=e.prototype;return r.reset=function(e,i,r,n,a){this.emitter=m.initValue(e,null),this.mass=m.initValue(i,!0),this.callback=m.initValue(r,null),this.collisionPool=[],this.delta=new D,n&&t.prototype.reset.call(this,n,a)},r.applyBehaviour=function(t,e,i){this.emitter?m.sliceArray(this.emitter.particles,i,this.newPool):m.sliceArray(this.pool,i,this.newPool);var r,n,a,s,o,h,l,c=this.newPool.length;for(l=0;ln;)t-=n,this.update(n);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=r},r.removeAllParticles=function(){for(var t=this.particles,e=t.length,i=0;i-1&&this.initializes.splice(e,1)},r.removeAllInitializers=function(){m.emptyArray(this.initializes)},r.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i=this.life||this.dead?this.destroy():(this.emitting(t),this.integrate(t))},r.integrate=function(t){if(this.parent){var e=1-this.damping;this.parent.integrator.calculate(this,t,e);for(var i=this.particles,r=i.length,n=this.parent,a=n.pool,s=n.integrator,o=Boolean(this.parent||this.bindEvent),h=r,l=0;l5e4&&"PARTICLE_CREATED"!==t&&"PARTICLE_DEAD"!==t||(this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)))},r.emitting=function(t){if(!this.stoped){var e=1e4,i=this.emitTime,r=this.totalTime;if("none"!==r){if("once"===r){var n=this.rate.getValue(99999);if(n>e&&(process&&process.env&&"development"===process.env.NODE_ENV&&console.warn("Attempting to emit "+n+" particles at once, capped to "+e),n=e),n<=0)return;return this.emitSpeed=n,this._fastCreateParticles(n),void(this.totalTime="none")}if(i+=t,this.emitTime=i,ie&&(a=e),this.emitSpeed=a,this._fastCreateParticles(a)}}else this.emitTime=i+t}},r._fastCreateParticles=function(t){if(!(t<=0)&&this.parent){var e,i=this.parent.pool,r=this.particles,n=this.initializes,a=this.behaviours,s=1e6;if(!(r.length+t>s&&(t=Math.max(0,s-r.length))<=0))i.getBulk?(e=i.getBulk(B,t),this._initializeParticlesBulk(e,n,a)):this._createParticlesLoop(t,i,r,n,a)}},r._createParticlesLoop=function(t,e,i,r,n){if(i.length,0===i.length&&t>1e4)try{i.length=t,i.length=0}catch(t){}for(var a,s=(this.parent||this.bindEvent)&&i.length<1e4?this.dispatch.bind(this):null,o=0;or&&t>1e4)for(var n=0;na&&(t=Math.max(0,a-n.length))<=0)){var s=(this.parent||this.bindEvent)&&n.length<1e4,o=e?m.toArray(e):this.initializes,h=i?m.toArray(i):this.behaviours,l=s?this.dispatch.bind(this):null;if(Array.prototype.reserve){var c=n.length+t;n.capacity-1&&this.selfBehaviours.splice(e,1)},r.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,r=this.selfBehaviours.length;for(i=0;ithis.element.width||i<0||i>this.element.height)){var a=4*((i|0)*t.width+(e|0));t.data[a]=n.r,t.data[a+1]=n.g,t.data[a+2]=n.b,t.data[a+3]=255*r.alpha}},r.onParticleDead=function(t){},r.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},e}(mt),Pt=0,At=function(t){function e(){var e;return(e=t.call(this)||this).emitterPools=new Map,e}i(e,t);var r=e.prototype;return r.get=function(t,e,i){i=i||e&&e.parent&&e.parent.id||"default",this.emitterPools.has(i)||this.emitterPools.set(i,[]);var r,n=this.emitterPools.get(i);return n.length>0?r=n.pop():(r=this.createOrClone(t,e)).__emitterId=i,r},r.expire=function(t,e){return!e&&t.__emitterId&&(e=t.__emitterId),e=e||"default",this.emitterPools.has(e)||this.emitterPools.set(e,[]),this.emitterPools.get(e).push(t)},r.destroy=function(){t.prototype.destroy.call(this),this.emitterPools.forEach((function(t){t.length=0})),this.emitterPools.clear(),this.emitterPools=null},e}(x),Tt=function(t){function e(e,i){var r;return(r=t.call(this,e)||this).stroke=i,r.color=!1,r.setColor=!1,r.blendMode=null,r.rendererId=++Pt,r.pixiPool=new At,r.pixiPool.create=function(t,e){return r.createBody(t,e)},r.emitterMap=new Map,r.setPIXI(window.PIXI),r.name="PixiRenderer",r}i(e,t);var r=e.prototype;return r.setPIXI=function(t){try{dt=t||{Sprite:{}},this.createFromImage=dt.Sprite.from}catch(t){}},r.onProtonUpdate=function(){},r.onEmitterAdded=function(t){this.emitterMap.has(t.id)||this.emitterMap.set(t.id,new Set)},r.onEmitterRemoved=function(t){this.emitterMap.has(t.id)&&this.emitterMap.delete(t.id)},r.onParticleCreated=function(t){var e=t.parent?t.parent.id:"orphaned";t.__emitterId=e,t.body?t.body=this.pixiPool.get(t.body,t,e):t.body=this.pixiPool.get(this.circleConf,t,e),this.blendMode&&(t.body.blendMode=this.blendMode),this.emitterMap.has(e)&&this.emitterMap.get(e).add(t),this.element.addChild(t.body)},r.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=V.getHex16FromParticle(t))},r.onParticleDead=function(t){if(t.body){this.element.removeChild(t.body);var e=t.__emitterId||(t.parent?t.parent.id:"orphaned");this.pixiPool.expire(t.body,e),this.emitterMap.has(e)&&this.emitterMap.get(e).delete(t),t.body=null}},r.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*R.PI_180},r.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},r.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new dt.Sprite(t);return e.anchor.set(.5,.5),e},r.createCircle=function(t){var e=new dt.Graphics;if(this.stroke){var i=yt(this.stroke)?this.stroke:0;e.lineStyle(1,i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},r.destroy=function(e){t.prototype.destroy.call(this),this.emitterMap.clear(),this.emitterMap=null,this.pixiPool.destroy(),this.pixiPool=null;for(var i=e.length;i--;){var r=e[i];r.body&&(this.element.removeChild(r.body),r.body.destroy({children:!0}))}},e}(mt),Rt=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(U.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?U.set(t,this.mats[0]):U.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?U.set(t,this.mats[0]):U.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),_t=function(t){function e(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(i),i.name="WebGLRenderer",i}i(e,t);var r=e.prototype;return r.init=function(e){t.prototype.init.call(this,e),this.resize(this.element.width,this.element.height)},r.resize=function(t,e){this.umat[4]=-2,this.umat[7]=1,this.smat[0]=1/t,this.smat[4]=1/e,this.mstack.set(this.umat,0),this.mstack.set(this.smat,1),this.gl.viewport(0,0,t,e),this.element.width=t,this.element.height=e},r.setMaxRadius=function(t){this.circleCanvasURL=this.createCircle(t)},r.getVertexShader=function(){return["uniform vec2 viewport;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 tMat;","varying vec2 vTextureCoord;","varying float alpha;","void main() {","vec3 v = tMat * vec3(aVertexPosition, 1.0);","gl_Position = vec4(v.x, v.y, 0, 1);","vTextureCoord = aTextureCoord;","alpha = tMat[0][2];","}"].join("\n")},r.getFragmentShader=function(){return["precision mediump float;","varying vec2 vTextureCoord;","varying float alpha;","uniform sampler2D uSampler;","uniform vec4 color;","uniform bool useTexture;","uniform vec3 uColor;","void main() {","vec4 textureColor = texture2D(uSampler, vTextureCoord);","gl_FragColor = textureColor * vec4(uColor, 1.0);","gl_FragColor.w *= alpha;","}"].join("\n")},r.initVar=function(){this.mstack=new Rt,this.umat=U.create([2,0,1,0,-2,0,-1,1,1]),this.smat=U.create([.01,0,1,0,.01,0,0,0,1]),this.texturebuffers={}},r.blendEquation=function(t){this.gl.blendEquation(this.gl[t])},r.blendFunc=function(t,e){this.gl.blendFunc(this.gl[t],this.gl[e])},r.getShader=function(t,e,i){var r=i?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);return t.shaderSource(r,e),t.compileShader(r),t.getShaderParameter(r,t.COMPILE_STATUS)?r:(alert(t.getShaderInfoLog(r)),null)},r.initShaders=function(){var t=this.getShader(this.gl,this.getFragmentShader(),!0),e=this.getShader(this.gl,this.getVertexShader(),!1);this.sprogram=this.gl.createProgram(),this.gl.attachShader(this.sprogram,e),this.gl.attachShader(this.sprogram,t),this.gl.linkProgram(this.sprogram),this.gl.getProgramParameter(this.sprogram,this.gl.LINK_STATUS)||alert("Could not initialise shaders"),this.gl.useProgram(this.sprogram),this.sprogram.vpa=this.gl.getAttribLocation(this.sprogram,"aVertexPosition"),this.sprogram.tca=this.gl.getAttribLocation(this.sprogram,"aTextureCoord"),this.gl.enableVertexAttribArray(this.sprogram.tca),this.gl.enableVertexAttribArray(this.sprogram.vpa),this.sprogram.tMatUniform=this.gl.getUniformLocation(this.sprogram,"tMat"),this.sprogram.samplerUniform=this.gl.getUniformLocation(this.sprogram,"uSampler"),this.sprogram.useTex=this.gl.getUniformLocation(this.sprogram,"useTexture"),this.sprogram.color=this.gl.getUniformLocation(this.sprogram,"uColor"),this.gl.uniform1i(this.sprogram.useTex,1)},r.initBuffers=function(){var t,e;this.unitIBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,3,1,0,2,3]),this.gl.STATIC_DRAW);var i=[];for(e=0;e<100;e++)i.push(e);for(t=new Uint16Array(i),this.unitI33=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitI33),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW),i=[],e=0;e<100;e++)i.push(e,e+1,e+2);t=new Uint16Array(i),this.stripBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.stripBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW)},r.createCircle=function(t){this.circleCanvasRadius=a(m.initValue(t,32));var e=c.createCanvas("circle_canvas",2*this.circleCanvasRadius,2*this.circleCanvasRadius),i=e.getContext("2d");return i.beginPath(),i.arc(this.circleCanvasRadius,this.circleCanvasRadius,this.circleCanvasRadius,0,2*Math.PI,!0),i.closePath(),i.fillStyle="#FFF",i.fill(),e.toDataURL()},r.drawImg2Canvas=function(t){var e=t.body.width,i=t.body.height,r=a(t.body.width),n=a(t.body.height),s=t.body.width/r,o=t.body.height/n;this.texturebuffers[t.data.src]||(this.texturebuffers[t.data.src]=[this.gl.createTexture(),this.gl.createBuffer(),this.gl.createBuffer()]),t.data.texture=this.texturebuffers[t.data.src][0],t.data.vcBuffer=this.texturebuffers[t.data.src][1],t.data.tcBuffer=this.texturebuffers[t.data.src][2],this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,s,0,0,o,o,o]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,e,0,0,i,e,i]),this.gl.STATIC_DRAW);var h=t.data.canvas.getContext("2d").getImageData(0,0,r,n);this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,h),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_NEAREST),this.gl.generateMipmap(this.gl.TEXTURE_2D),t.data.textureLoaded=!0,t.data.textureWidth=e,t.data.textureHeight=i},r.onProtonUpdate=function(){},r.onParticleCreated=function(t){t.data.textureLoaded=!1,t.data.tmat=U.create(),t.data.tmat[8]=1,t.data.imat=U.create(),t.data.imat[8]=1,t.body?g(t.body,this.addImg2Body,t):(g(this.circleCanvasURL,this.addImg2Body,t),t.data.oldScale=t.radius/this.circleCanvasRadius)},r.addImg2Body=function(t,e){e.dead||(e.body=t,e.data.src=t.src,e.data.canvas=y(t),e.data.oldScale=1,this.drawImg2Canvas(e))},r.onParticleUpdate=function(t){t.data.textureLoaded&&(this.updateMatrix(t),this.gl.uniform3f(this.sprogram.color,t.rgb.r/255,t.rgb.g/255,t.rgb.b/255),this.gl.uniformMatrix3fv(this.sprogram.tMatUniform,!1,this.mstack.top()),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.vertexAttribPointer(this.sprogram.vpa,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.vertexAttribPointer(this.sprogram.tca,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.uniform1i(this.sprogram.samplerUniform,0),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0),this.mstack.pop())},r.onParticleDead=function(t){},r.updateMatrix=function(t){var e=s(-t.data.textureWidth/2,-t.data.textureHeight/2),i=s(t.p.x,t.p.y),r=t.rotation*R.PI_180,n=o(r),a=t.scale*t.data.oldScale,c=h(a,a),u=l(e,c);u=l(u,n),u=l(u,i),U.inverse(u,t.data.imat),u[2]=t.alpha,this.mstack.push(u)},r.destroy=function(){t.prototype.destroy.call(this),this.gl=null,this.mstack=null,this.umat=null,this.smat=null,this.texturebuffers=null},e}(mt),Ct=function(t){function e(e){var i;return(i=t.call(this,e)||this).name="CustomRenderer",i}return i(e,t),e}(mt),wt=function(t){function e(e,i,r,n,a){var s;return void 0===a&&(a=">"),s=t.call(this)||this,r-e>=0?(s.x1=e,s.y1=i,s.x2=r,s.y2=n):(s.x1=r,s.y1=n,s.x2=e,s.y2=i),s.dx=s.x2-s.x1,s.dy=s.y2-s.y1,s.minx=Math.min(s.x1,s.x2),s.miny=Math.min(s.y1,s.y2),s.maxx=Math.max(s.x1,s.x2),s.maxy=Math.max(s.y1,s.y2),s.dot=s.x2*s.y1-s.x1*s.y2,s.xxyy=s.dx*s.dx+s.dy*s.dy,s.gradient=s.getGradient(),s.length=s.getLength(),s.direction=m.initValue(a,">"),s}i(e,t);var r=e.prototype;return r.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*this.length*Math.cos(this.gradient),this.vector.y=this.y1+this.random*this.length*Math.sin(this.gradient),this.vector},r.getDirection=function(t,e){var i=this.dy,r=-this.dx;return(i*t+r*e+this.dot)*(0===r?1:r)>0},r.getDistance=function(t,e){return(this.dy*t+-this.dx*e+this.dot)/Math.sqrt(this.xxyy)},r.getSymmetric=function(t){var e=t.getGradient(),i=2*(this.getGradient()-e),r=t.x,n=t.y;return t.x=r*Math.cos(i)-n*Math.sin(i),t.y=r*Math.sin(i)+n*Math.cos(i),t},r.getGradient=function(){return Math.atan2(this.dy,this.dx)},r.rangeOut=function(t){if(Math.abs(this.getGradient())<=R.PI/4){if(t.p.x<=this.maxx&&t.p.x>=this.minx)return!0}else if(t.p.y<=this.maxy&&t.p.y>=this.miny)return!0;return!1},r.getLength=function(){return Math.sqrt(this.dx*this.dx+this.dy*this.dy)},r.crossing=function(t){if("dead"===this.crossType)if(">"===this.direction||"R"===this.direction||"right"===this.direction||"down"===this.direction){if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)&&(t.dead=!0)}else{if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)||(t.dead=!0)}else if("bound"===this.crossType){if(!this.rangeOut(t))return;this.getDistance(t.p.x,t.p.y)<=t.radius&&(0===this.dx?t.v.x*=-1:0===this.dy?t.v.y*=-1:this.getSymmetric(t.v))}else"cross"===this.crossType&&this.alert&&(console.error("Sorry, LineZone does not support cross method!"),this.alert=!1)},e}(H),It=function(t){function e(e,i,r){var n;return(n=t.call(this)||this).x=e,n.y=i,n.radius=r,n.angle=0,n.center={x:e,y:i},n}i(e,t);var r=e.prototype;return r.getPosition=function(){return this.angle=R.PIx2*Math.random(),this.randomRadius=Math.random()*this.radius,this.vector.x=this.x+this.randomRadius*Math.cos(this.angle),this.vector.y=this.y+this.randomRadius*Math.sin(this.angle),this.vector},r.setCenter=function(t,e){this.center.x=t,this.center.y=e},r.crossing=function(t){var e=t.p.distanceTo(this.center);"dead"===this.crossType?e-t.radius>this.radius&&(t.dead=!0):"bound"===this.crossType?e+t.radius>=this.radius&&this.getSymmetric(t):"cross"===this.crossType&&this.alert&&(console.error("Sorry, CircleZone does not support cross method!"),this.alert=!1)},r.getSymmetric=function(t){var e=t.v.getGradient(),i=2*(this.getGradient(t)-e),r=t.v.x,n=t.v.y;t.v.x=r*Math.cos(i)-n*Math.sin(i),t.v.y=r*Math.sin(i)+n*Math.cos(i)},r.getGradient=function(t){return-R.PI_2+Math.atan2(t.p.y-this.center.y,t.p.x-this.center.x)},e}(H),St=function(t){function e(e,i,r,n){var a;return void 0===r&&(r=200),void 0===n&&(n=200),(a=t.call(this)||this).x=e,a.y=i,a.width=r,a.height=n,a}i(e,t);var r=e.prototype;return r.getPosition=function(){return this.vector.x=this.x+Math.random()*this.width,this.vector.y=this.y+Math.random()*this.height,this.vector},r.crossing=function(t){"dead"===this.crossType?((t.p.x+t.radiusthis.x+this.width)&&(t.dead=!0),(t.p.y+t.radiusthis.y+this.height)&&(t.dead=!0)):"bound"===this.crossType?(t.p.x-t.radiusthis.x+this.width&&(t.p.x=this.x+this.width-t.radius,t.v.x*=-1),t.p.y-t.radiusthis.y+this.height&&(t.p.y=this.y+this.height-t.radius,t.v.y*=-1)):"cross"===this.crossType&&(t.p.x+t.radiusthis.x+this.width&&t.v.x>=0&&(t.p.x=this.x-t.radius),t.p.y+t.radiusthis.y+this.height&&t.v.y>=0&&(t.p.y=this.y-t.radius))},e}(H),Mt=function(t){function e(e,i,r,n){var a;return(a=t.call(this)||this).reset(e,i,r,n),a}i(e,t);var r=e.prototype;return r.reset=function(t,e,i,r){this.imageData=t,this.x=m.initValue(e,0),this.y=m.initValue(i,0),this.d=m.initValue(r,2),this.vectors=[],this.setVectors()},r.setVectors=function(){var t,e,i=this.imageData.width,r=this.imageData.height;for(t=0;t0&&this.vectors.push({x:t+this.x,y:e+this.y})}return this.vector},r.getBound=function(t,e){var i=4*((e|0)*this.imageData.width+(t|0));return this.imageData.data[i+3]>0},r.getPosition=function(){var t=m.getRandFromArray(this.vectors);return this.vector.copy(t)},r.getColor=function(t,e){t-=this.x;var i=4*(((e-=this.y)|0)*this.imageData.width+(t|0));return{r:this.imageData.data[i],g:this.imageData.data[i+1],b:this.imageData.data[i+2],a:this.imageData.data[i+3]}},r.crossing=function(t){"dead"===this.crossType?t.dead=this.getBound(t.p.x-this.x,t.p.y-this.y):"bound"===this.crossType&&(this.getBound(t.p.x-this.x,t.p.y-this.y)||t.v.negate())},r.destroy=function(){t.prototype.destroy.call(this),this.imageData=null},e}(H),Dt={addEventListener:function(t,e){t.addEventListener("PROTON_UPDATE_AFTER",(function(){return e()}))},getStyle:function(t){void 0===t&&(t="#ff0000");var e=V.hexToRgb(t);return"rgba("+e.r+", "+e.g+", "+e.b+", 0.5)"},drawZone:function(t,e,i,r){var n=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){r&&n.clearRect(0,0,e.width,e.height),i instanceof G?(n.beginPath(),n.fillStyle=a,n.arc(i.x,i.y,10,0,2*Math.PI,!0),n.fill(),n.closePath()):i instanceof wt?(n.beginPath(),n.strokeStyle=a,n.moveTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.stroke(),n.closePath()):i instanceof St?(n.beginPath(),n.strokeStyle=a,n.drawRect(i.x,i.y,i.width,i.height),n.stroke(),n.closePath()):i instanceof It&&(n.beginPath(),n.strokeStyle=a,n.arc(i.x,i.y,i.radius,0,2*Math.PI,!0),n.stroke(),n.closePath())}))},drawEmitter:function(t,e,i,r){var n=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){r&&n.clearRect(0,0,e.width,e.height),n.beginPath(),n.fillStyle=a,n.arc(i.p.x,i.p.y,10,0,2*Math.PI,!0),n.fill(),n.closePath()}))}};C.Particle=B,C.Pool=x,C.Util=m,C.ColorUtil=V,C.MathUtil=R,C.Vector2D=C.Vector=D,C.Polar2D=C.Polar=L,C.ArraySpan=F,C.Rectangle=z,C.Rate=O,C.ease=M,C.Span=I,C.Mat3=U,C.getSpan=function(t,e,i){return new I(t,e,i)},C.createArraySpan=F.createArraySpan,C.Initialize=C.Init=k,C.Life=C.L=N,C.Position=C.P=q,C.Velocity=C.V=X,C.Mass=C.M=j,C.Radius=C.R=Y,C.Body=C.B=Z,C.Behaviour=W,C.Force=C.F=Q,C.Attraction=C.A=K,C.RandomDrift=C.RD=J,C.Gravity=C.G=$,C.Collision=tt,C.CrossZone=et,C.Alpha=it,C.Scale=C.S=rt,C.Rotate=nt,C.Color=at,C.Repulsion=ht,C.Cyclone=ot,C.GravityWell=lt,C.Emitter=ut,C.BehaviourEmitter=pt,C.FollowEmitter=ft,C.Zone=H,C.LineZone=wt,C.CircleZone=It,C.PointZone=G,C.RectZone=St,C.ImageZone=Mt,C.CanvasRenderer=vt,C.DomRenderer=bt,C.EaselRenderer=xt,C.PixiRenderer=Tt,C.PixelRenderer=Et,C.WebGLRenderer=C.WebGlRenderer=_t,C.CustomRenderer=Ct,C.Debug=Dt,m.assign(C,M),t.Alpha=it,t.ArraySpan=F,t.Attraction=K,t.Behaviour=W,t.BehaviourEmitter=pt,t.Body=Z,t.CanvasRenderer=vt,t.CircleZone=It,t.Collision=tt,t.Color=at,t.ColorUtil=V,t.CrossZone=et,t.CustomRenderer=Ct,t.Cyclone=ot,t.Debug=Dt,t.DomRenderer=bt,t.EaselRenderer=xt,t.Emitter=ut,t.FollowEmitter=ft,t.Force=Q,t.Gravity=$,t.GravityWell=lt,t.ImageZone=Mt,t.Initialize=k,t.Life=N,t.LineZone=wt,t.Mass=j,t.Mat3=U,t.MathUtil=R,t.Particle=B,t.PixelRenderer=Et,t.PixiRenderer=Tt,t.PointZone=G,t.Polar2D=L,t.Pool=x,t.Position=q,t.Radius=Y,t.RandomDrift=J,t.Rate=O,t.RectZone=St,t.Rectangle=z,t.Repulsion=ht,t.Rotate=nt,t.Scale=rt,t.Span=I,t.Util=m,t.Vector2D=D,t.Velocity=X,t.WebGLRenderer=_t,t.Zone=H,t.default=C,t.ease=M,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=proton.min.js.map diff --git a/build/proton.min.js.map b/build/proton.min.js.map index 7599d1f..3518713 100644 --- a/build/proton.min.js.map +++ b/build/proton.min.js.map @@ -1 +1 @@ -{"version":3,"file":"proton.min.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/math/Span.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/emitter/BehaviourEmitter.js","../src/render/PixiRenderer.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js","../src/index.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number | undefined} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n /**\n * Sets the frames per second (FPS) for the Proton system.\n * @param {number|string} fps - The desired FPS. Use \"auto\" for default behavior, or a number for a specific FPS.\n */\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n /**\n * Gets the current frames per second (FPS) setting.\n * @returns {number|string} The current FPS setting. Returns \"auto\" if set to default, or a number representing the specific FPS.\n */\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a span of values or an array.\n */\nexport default class Span {\n /**\n * @type {boolean}\n * @private\n */\n isArray;\n\n /**\n * @type {number|number[]}\n * @private\n */\n a;\n\n /**\n * @type {number}\n * @private\n */\n b;\n\n /**\n * @type {boolean}\n * @private\n */\n center;\n\n /**\n * Creates a new Span instance.\n * @param {number|number[]} a - The first value or an array of values.\n * @param {number} [b] - The second value (if a is not an array).\n * @param {boolean} [center=false] - Whether to use center-based calculation.\n */\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n /**\n * Gets a value from the span.\n * @param {boolean} [isInt=false] - Whether to return an integer value.\n * @returns {number} A random value from the span.\n */\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object.\n * @param {*|Span} a - The first value or a Span object.\n * @param {*} [b] - The second value.\n * @param {*} [c] - The third value.\n * @returns {Span} A new Span instance.\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter.\n * @param {*|Span} pan - The value or Span to get the value from.\n * @returns {*} The value of Span OR the parameter if it is not a Span.\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"../math/Span\";\n\nexport default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n /** @type {number} */\n x;\n\n /** @type {number} */\n y;\n\n /**\n * Creates a new Vector2D instance.\n * @param {number} [x=0] - The x coordinate.\n * @param {number} [y=0] - The y coordinate.\n */\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n /**\n * Sets the x and y components of this vector.\n * @param {number} x - The x coordinate.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets the x component of this vector.\n * @param {number} x - The x coordinate.\n * @returns {Vector2D} This vector.\n */\n setX(x) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets the y component of this vector.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n\n /**\n * Calculates the gradient (angle) of this vector.\n * @returns {number} The gradient in radians.\n */\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n /**\n * Copies the values of another vector to this one.\n * @param {Vector2D} v - The vector to copy from.\n * @returns {Vector2D} This vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n /**\n * Adds another vector to this one.\n * @param {Vector2D} v - The vector to add.\n * @param {Vector2D} [w] - An optional second vector to add.\n * @returns {Vector2D} This vector.\n */\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n /**\n * Adds scalar values to this vector's components.\n * @param {number} a - Value to add to x.\n * @param {number} b - Value to add to y.\n * @returns {Vector2D} This vector.\n */\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n /**\n * Adds two vectors and sets the result to this vector.\n * @param {Vector2D} a - The first vector to add.\n * @param {Vector2D} b - The second vector to add.\n * @returns {Vector2D} This vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n /**\n * Subtracts another vector from this one.\n * @param {Vector2D} v - The vector to subtract.\n * @param {Vector2D} [w] - An optional second vector to subtract.\n * @returns {Vector2D} This vector.\n */\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n /**\n * Subtracts one vector from another and sets the result to this vector.\n * @param {Vector2D} a - The vector to subtract from.\n * @param {Vector2D} b - The vector to subtract.\n * @returns {Vector2D} This vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n /**\n * Divides this vector by a scalar.\n * @param {number} s - The scalar to divide by.\n * @returns {Vector2D} This vector.\n */\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n /**\n * Multiplies this vector by a scalar.\n * @param {number} s - The scalar to multiply by.\n * @returns {Vector2D} This vector.\n */\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n /**\n * Negates this vector (inverts its direction).\n * @returns {Vector2D} This vector.\n */\n negate() {\n return this.multiplyScalar(-1);\n }\n\n /**\n * Calculates the dot product of this vector with another.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n /**\n * Calculates the squared length of this vector.\n * @returns {number} The squared length.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n /**\n * Calculates the length of this vector.\n * @returns {number} The length.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n /**\n * Normalizes this vector (makes it unit length).\n * @returns {Vector2D} This vector.\n */\n normalize() {\n return this.divideScalar(this.length());\n }\n\n /**\n * Calculates the distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n /**\n * Rotates this vector by an angle.\n * @param {number} tha - The angle to rotate by (in radians).\n * @returns {Vector2D} This vector.\n */\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n /**\n * Calculates the squared distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n /**\n * Linearly interpolates this vector toward another vector.\n * @param {Vector2D} v - The target vector.\n * @param {number} alpha - The interpolation factor (0-1).\n * @returns {Vector2D} This vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n /**\n * Checks if this vector is equal to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {boolean} True if the vectors are equal, false otherwise.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n /**\n * Sets this vector to zero.\n * @returns {Vector2D} This vector.\n */\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n /**\n * Creates a new vector with the same x and y values as this one.\n * @returns {Vector2D} A new Vector2D instance.\n */\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","import Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a particle in a particle system.\n * @class Particle\n */\nexport default class Particle {\n /** @type {string} The unique identifier of the particle */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */\n old = null;\n\n /** @type {object} Custom data associated with the particle */\n data = null;\n\n /** @type {Behaviour[]} Array of behaviours applied to the particle */\n behaviours = null;\n\n /** @type {Vector2D} Current position of the particle */\n p = null;\n\n /** @type {Vector2D} Current velocity of the particle */\n v = null;\n\n /** @type {Vector2D} Current acceleration of the particle */\n a = null;\n\n /** @type {Rgb} Color of the particle */\n rgb = null;\n\n /**\n * Creates a new Particle instance.\n * @param {Object} [conf] Configuration object for the particle\n */\n constructor(conf) {\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n /**\n * Gets the direction of the particle's movement in degrees.\n * @returns {number} The direction in degrees\n */\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n /**\n * Resets the particle to its initial state.\n * @returns {Particle} The particle instance\n */\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n /**\n * Updates the particle's state.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n /**\n * Applies all behaviours attached to the particle.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * Adds a behaviour to the particle.\n * @param {Behaviour} behaviour The behaviour to add\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * Adds multiple behaviours to the particle.\n * @param {Behaviour[]} behaviours An array of behaviours to add\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n /**\n * Removes a specific behaviour from the particle.\n * @param {Behaviour} behaviour The behaviour to remove\n */\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n /**\n * Removes all behaviours from the particle.\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destroys the particle, removing all behaviours and setting it as dead.\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\n/**\n * Represents an ArraySpan, a subclass of Span that works with arrays.\n * @extends Span\n */\nexport default class ArraySpan extends Span {\n /**\n * Creates an instance of ArraySpan.\n * @param {Array|*|any} arr - The array or value to be converted to an array.\n */\n constructor(arr) {\n super();\n this._arr = Util.toArray(arr);\n }\n\n /**\n * Gets a random value from the array.\n * If the value is \"random\" or \"Random\", it returns a random color.\n * @returns {*} A random value from the array or a random color.\n */\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Creates an ArraySpan instance from the given array.\n * If the input is already an ArraySpan instance, it returns the input.\n * @static\n * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance.\n * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy.\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\n/**\n * Rate class for controlling particle emission rate.\n */\nexport default class Rate {\n /**\n * @type {Span}\n * @private\n */\n numPan;\n\n /**\n * @type {Span}\n * @private\n */\n timePan;\n\n /**\n * @type {number}\n * @private\n */\n startTime;\n\n /**\n * @type {number}\n * @private\n */\n nextTime;\n\n /**\n * Creates a new Rate instance.\n * The number of particles per second emission (a [particle]/b [s]).\n * @param {Array|number|Span} [numpan=1] - The number of particles for each emission.\n * @param {Array|number|Span} [timepan=1] - The time interval between each emission.\n * @example\n * // Create a rate of 10-20 particles every 0.1-0.25 seconds\n * new Rate(new Span(10, 20), new Span(0.1, 0.25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n /**\n * Initializes the rate.\n * @private\n */\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n /**\n * Gets the number of particles to emit based on the elapsed time.\n * @param {number} time - The elapsed time since the last update.\n * @returns {number} The number of particles to emit.\n */\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Life class for initializing particle lifetime.\n * @extends Initialize\n */\nexport default class Life extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n lifePan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Life instance.\n * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range.\n * @param {number} [b] - The upper bound of the lifetime range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n /**\n * Initializes the lifetime of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a point zone in a 2D space.\n * @extends Zone\n */\nexport default class PointZone extends Zone {\n /**\n * Creates a new PointZone.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n */\n constructor(x, y) {\n super();\n\n /**\n * The x-coordinate of the point.\n * @type {number}\n */\n this.x = x;\n\n /**\n * The y-coordinate of the point.\n * @type {number}\n */\n this.y = y;\n }\n\n /**\n * Gets the position of the point.\n * @returns {Object} An object representing the position vector.\n */\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n /**\n * This method is not supported for PointZone.\n * @param {Object} particle - The particle object (unused).\n */\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Position class for initializing particle positions.\n * @extends Initialize\n */\nexport default class Position extends Initialize {\n /**\n * @type {PointZone|any}\n * @private\n */\n zone;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Position instance.\n * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n /**\n * Initializes the particle's position.\n * @param {object} target - The particle to initialize.\n * @param {object} target.p - The particle's position object.\n * @param {number} target.p.x - The particle's x coordinate.\n * @param {number} target.p.y - The particle's y coordinate.\n */\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Velocity class for initializing particle velocities.\n * @extends Initialize\n */\nexport default class Velocity extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n rPan;\n\n /**\n * @type {Span}\n * @private\n */\n thaPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Velocity instance.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n /**\n * Resets the velocity parameters.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n /**\n * Normalizes the velocity value.\n * @param {number} vr - The velocity value to normalize.\n * @returns {number} The normalized velocity value.\n * @private\n */\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n /**\n * Initializes the particle's velocity.\n * @param {object} target - The particle to initialize.\n */\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Mass class for initializing particle mass.\n * @extends Initialize\n */\nexport default class Mass extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n massPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Mass instance.\n * @param {number|Span} a - The mass value or the lower bound of the mass range.\n * @param {number} [b] - The upper bound of the mass range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n /**\n * Initializes the mass of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Radius class for initializing particle radius.\n * @extends Initialize\n */\nexport default class Radius extends Initialize {\n /**\n * @type {Span}\n */\n radius;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Radius instance.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n this.name = \"Radius\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n /**\n * Initializes the particle's radius.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Body class for initializing particle bodies.\n * @extends Initialize\n */\nexport default class Body extends Initialize {\n /**\n * @type {ArraySpan}\n * @private\n */\n image;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Body instance.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body.\n * @param {number} [w=20] - The width of the particle body.\n * @param {number} [h] - The height of the particle body. Defaults to the width if not provided.\n */\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n /**\n * Initializes the particle's body.\n * @param {object} particle - The particle to initialize.\n */\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n /**\n * Sets the span value for the image.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value.\n * @returns {ArraySpan} The ArraySpan instance.\n * @private\n */\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\n/**\n * The Behaviour class is the base for the other Behaviour\n * @class\n */\nexport default class Behaviour {\n static id = 0;\n\n /**\n * Create a new Behaviour instance\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's decaying trend, for example ease.easeOutQuart\n */\n constructor(life, easing) {\n /**\n * The behaviour's life\n * @type {number}\n */\n this.life = Util.initValue(life, Infinity);\n\n /**\n * The behaviour's easing function\n * @type {function}\n */\n this.easing = ease.getEasing(easing);\n\n /**\n * The behaviour's current age\n * @type {number}\n */\n this.age = 0;\n\n /**\n * The behaviour's current energy\n * @type {number}\n */\n this.energy = 1;\n\n /**\n * Whether the behaviour is dead\n * @type {boolean}\n */\n this.dead = false;\n\n /**\n * The behaviour's parent emitters\n * @type {Array}\n */\n this.parents = [];\n\n /**\n * The behaviour's unique id\n * @type {string}\n */\n this.id = `Behaviour_${Behaviour.id++}`;\n\n /**\n * The behaviour's name\n * @type {string}\n */\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n * @param {number} [life=Infinity] - This behaviour's new life\n * @param {string} [easing='easeLinear'] - This behaviour's new easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100\n * @param {Proton.Vector2D} force - The force to normalize\n * @returns {Proton.Vector2D} The normalized force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100\n * @param {number} value - The value to normalize\n * @returns {number} The normalized value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for a particle\n * @param {Proton.Particle} particle - The particle to initialize\n */\n initialize(particle) {}\n\n /**\n * Compute the behaviour's life cycle\n * @param {Proton.Particle} particle - The particle to calculate for\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour to a particle\n * @param {Proton.Particle} particle - The particle to apply the behaviour to\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destroy this behaviour\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Attraction behavior for particles.\n * This behaviour makes particles follow a specific target position.\n * @extends Behaviour\n */\nexport default class Attraction extends Behaviour {\n /**\n * Creates an instance of Attraction.\n * @param {Vector2D} targetPosition - The attraction point coordinates.\n * @param {number} [force=100] - The strength of the attraction force.\n * @param {number} [radius=1000] - The radius of influence for the attraction.\n * @param {number} [life=Infinity] - The life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The easing function for this behaviour.\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n /**\n * The target position for attraction.\n * @type {Vector2D}\n */\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n\n /**\n * The radius of influence for the attraction.\n * @type {number}\n */\n this.radius = Util.initValue(radius, 1000);\n\n /**\n * The strength of the attraction force.\n * @type {number}\n */\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n /**\n * The squared radius (for optimization).\n * @type {number}\n */\n this.radiusSq = this.radius * this.radius;\n\n /**\n * The attraction force vector.\n * @type {Vector2D}\n */\n this.attractionForce = new Vector2D();\n\n /**\n * The squared length of the attraction force.\n * @type {number}\n */\n this.lengthSq = 0;\n\n /**\n * The name of the behaviour.\n * @type {string}\n */\n this.name = \"Attraction\";\n }\n\n /**\n * Resets the behaviour's parameters.\n * @param {Vector2D} targetPosition - The new attraction point coordinates.\n * @param {number} [force=100] - The new strength of the attraction force.\n * @param {number} [radius=1000] - The new radius of influence for the attraction.\n * @param {number} [life=Infinity] - The new life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour.\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Alpha behaviour for controlling particle opacity over time.\n * @extends Behaviour\n */\nexport default class Alpha extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Alpha instance.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's alpha values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * Applies the alpha behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Scale behaviour for controlling particle size over time.\n * @extends Behaviour\n */\nexport default class Scale extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Scale instance.\n * @param {number|Span} [a=1] - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} a - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's scale values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Applies the scale behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Rotate behaviour for controlling particle rotation.\n * @extends Behaviour\n */\nexport default class Rotate extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n * @private\n */\n style;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Rotate instance.\n * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {string|number|Span} [a='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the behaviour's parameters for a particle.\n * @param {object} particle - The particle to initialize.\n * @param {number} particle.rotation - The particle's rotation.\n * @param {object} particle.data - The particle's data object.\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {object} particle - The particle to apply the behaviour to.\n * @param {number} time - The integrate time (1/ms).\n * @param {number} index - The particle index.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} [a] the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} [b] the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\n/**\n * The opposite of Attraction - turns the force\n *\n * @class\n * @extends Proton.Attraction\n * @memberof! Proton#\n * @alias Proton.Repulsion\n */\nexport default class Repulsion extends Attraction {\n /**\n * Creates a new Repulsion behaviour instance\n *\n * @constructor\n * @param {Proton.Vector2D} targetPosition - The repulsion point coordinates\n * @param {number} [force=100] - The strength of the repulsion force\n * @param {number} [radius=1000] - The radius of influence for the repulsion\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's easing function\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n /**\n * The strength of the repulsion force\n * @type {number}\n */\n this.force *= -1;\n\n /**\n * The name of the behaviour\n * @type {string}\n */\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @param {Proton.Vector2D} targetPosition - The new repulsion point coordinates\n * @param {number} [force=100] - The new strength of the repulsion force\n * @param {number} [radius=1000] - The new radius of influence for the repulsion\n * @param {number} [life=Infinity] - The new behaviour's life\n * @param {string} [easing='easeLinear'] - The new behaviour's easing function\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number | String} [totalTime] begin emit time;\n * @param {String | boolean} [life] the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n let i = this.particles.length;\n while (i--) this.particles[i].dead = true;\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) this.destroy();\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n const length = this.particles.length;\n let i, particle;\n\n for (i = length - 1; i >= 0; i--) {\n particle = this.particles[i];\n\n // particle update\n particle.update(time, i);\n this.parent.integrator.calculate(particle, time, damping);\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n\n // check dead\n if (particle.dead) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n\n this.parent.pool.expire(particle);\n this.particles.splice(i, 1);\n }\n }\n }\n\n dispatch(event, target) {\n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.stoped) return;\n\n if (this.totalTime === \"none\") {\n this.emitTime += time;\n } else if (this.totalTime === \"once\") {\n let i;\n const length = this.rate.getValue(99999);\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n this.totalTime = \"none\";\n } else {\n this.emitTime += time;\n\n if (this.emitTime < this.totalTime) {\n const length = this.rate.getValue(time);\n let i;\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n }\n }\n }\n\n /**\n * Creates a single particle.\n *\n * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects.\n * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects.\n * @returns {Particle} The created particle.\n *\n */\n createParticle(initialize, behaviour) {\n const particle = this.parent.pool.get(Particle);\n this.setupParticle(particle, initialize, behaviour);\n this.dispatch(\"PARTICLE_CREATED\", particle);\n\n return particle;\n }\n\n /**\n * Sets up a particle with initialization and behavior.\n *\n * @param {Particle} particle - The particle to set up.\n * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects.\n * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects.\n */\n setupParticle(particle, initialize, behaviour) {\n let initializes = this.initializes;\n let behaviours = this.behaviours;\n\n if (initialize) initializes = Util.toArray(initialize);\n if (behaviour) behaviours = Util.toArray(behaviour);\n\n particle.reset();\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n this.particles.push(particle);\n }\n\n /**\n * Removes all particles and stops the emitter.\n */\n remove() {\n this.stop();\n Util.destroyAll(this.particles);\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nlet PIXIClass;\n\n/**\n * Represents a PIXI-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixiRenderer extends BaseRenderer {\n /**\n * Creates a new PixiRenderer instance.\n * @param {PIXI.Container} element - The PIXI container to render to.\n * @param {string|number} [stroke] - The stroke color for particles.\n */\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n if (particle.body) {\n particle.body = this.pool.get(particle.body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n // using cached version of MathUtil.PI_180 for slight performance increase.\n target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n\n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.beginStroke(stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n * @param {Array} particles - The particles to clean up.\n */\n destroy(particles) {\n super.destroy();\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * CanvasRenderer class for rendering particles on a canvas element.\n * @extends BaseRenderer\n */\nexport default class CanvasRenderer extends BaseRenderer {\n /**\n * @type {object|null}\n * @private\n */\n stroke;\n\n /**\n * @type {CanvasRenderingContext2D}\n * @private\n */\n context;\n\n /**\n * @type {object}\n * @private\n */\n bufferCache;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new CanvasRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render on.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n /**\n * Resizes the canvas element.\n * @param {number} width - The new width of the canvas.\n * @param {number} height - The new height of the canvas.\n */\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n /**\n * Clears the canvas on Proton update.\n */\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n /**\n * Handles particle creation.\n * @param {object} particle - The created particle.\n */\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n /**\n * Handles particle updates.\n * @param {object} particle - The updated particle.\n */\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n /**\n * Handles particle destruction.\n * @param {object} particle - The destroyed particle.\n */\n onParticleDead(particle) {\n particle.body = null;\n }\n\n /**\n * Adds an image to the particle body.\n * @param {HTMLImageElement} img - The image to add.\n * @param {object} particle - The particle to add the image to.\n * @private\n */\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n /**\n * Draws an image particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n /**\n * Draws a circular particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n /**\n * Creates a buffer for image particles.\n * @param {HTMLImageElement} image - The image to create a buffer for.\n * @returns {HTMLCanvasElement|undefined} The created buffer canvas.\n * @private\n */\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a DOM-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class DomRenderer extends BaseRenderer {\n /**\n * Creates a new DomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(window.createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(window.createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a pixel-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixelRenderer extends BaseRenderer {\n /**\n * Creates a new PixelRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n * @param {Rectangle} [rectangle] - The rectangle defining the rendering area.\n */\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.element.height) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a WebGL-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class WebGLRenderer extends BaseRenderer {\n /**\n * Creates a new WebGLRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n */\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a custom renderer that extends the BaseRenderer.\n * @extends BaseRenderer\n */\nexport default class CustomRenderer extends BaseRenderer {\n /**\n * Creates a new CustomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n /**\n * The name of the renderer.\n * @type {string}\n */\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\n\n/**\n * Represents a line zone for particle systems.\n * @extends Zone\n */\nexport default class LineZone extends Zone {\n /**\n * Creates a new LineZone.\n * @param {number} x1 - The x-coordinate of the first point.\n * @param {number} y1 - The y-coordinate of the first point.\n * @param {number} [x2] - The x-coordinate of the second point.\n * @param {number} [y2] - The y-coordinate of the second point.\n * @param {string} [direction=\">\"] - The direction of the line.\n */\n constructor(x1, y1, x2, y2, direction = \">\") {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n /**\n * Gets a random position on the line.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n /**\n * Determines which side of the line a point is on.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} True if the point is on the positive side of the line, false otherwise.\n */\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n /**\n * Calculates the distance of a point from the line.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {number} The distance from the point to the line.\n */\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n /**\n * Calculates the symmetric vector of a given vector with respect to the line.\n * @param {Vector2D} v - The vector to reflect.\n * @returns {Vector2D} The reflected vector.\n */\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n /**\n * Gets the gradient (angle) of the line.\n * @returns {number} The gradient of the line in radians.\n */\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n /**\n * Checks if a particle is outside the range of the line.\n * @param {Particle} particle - The particle to check.\n * @returns {boolean} True if the particle is within range, false otherwise.\n */\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n /**\n * Gets the length of the line.\n * @returns {number} The length of the line.\n */\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a circular zone in a 2D space.\n * @extends Zone\n */\nexport default class CircleZone extends Zone {\n /**\n * Creates a new CircleZone.\n * @param {number} x - The x-coordinate of the circle's center.\n * @param {number} y - The y-coordinate of the circle's center.\n * @param {number} [radius] - The radius of the circle.\n */\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n /**\n * Gets a random position within the circle.\n * @returns {Object} An object with x and y coordinates.\n */\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n /**\n * Sets the center of the circle.\n * @param {number} x - The new x-coordinate of the center.\n * @param {number} y - The new y-coordinate of the center.\n */\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n /**\n * Calculates the symmetric position of a particle.\n * @param {Object} particle - The particle to calculate symmetry for.\n */\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n /**\n * Calculates the gradient for a particle.\n * @param {Object} particle - The particle to calculate the gradient for.\n * @returns {number} The calculated gradient.\n */\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a rectangular zone for particle systems.\n * @extends Zone\n */\nexport default class RectZone extends Zone {\n /**\n * Creates a new RectZone.\n * @param {number} x - The x-coordinate of the top-left corner of the rectangle.\n * @param {number} y - The y-coordinate of the top-left corner of the rectangle.\n * @param {number} [width] - The width of the rectangle.\n * @param {number} [height] - The height of the rectangle.\n */\n constructor(x, y, width = 200, height = 200) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Gets a random position within the rectangular zone.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n return this.vector;\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\n/**\n * Represents a zone based on image data.\n * @extends Zone\n */\nexport default class ImageZone extends Zone {\n /**\n * Creates an ImageZone.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n /**\n * Resets the ImageZone with new parameters.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n /**\n * Sets up vectors based on the image data.\n * @returns {Object} The vector object.\n */\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n /**\n * Checks if a point is within the bounds of the image.\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @returns {boolean} True if the point is within bounds, false otherwise.\n */\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n return this.imageData.data[index + 3] > 0;\n }\n\n /**\n * Gets a random position within the image zone.\n * @returns {Object} A vector representing the position.\n */\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n /**\n * Gets the color at a specific point in the image.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} An object containing r, g, b, and a values.\n */\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n particle.dead = this.getBound(particle.p.x - this.x, particle.p.y - this.y);\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n /**\n * Destroys the ImageZone and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n","import Proton from \"./core/Proton\";\nimport Particle from \"./core/Particle\";\nimport Pool from \"./core/Pool\";\n\nimport Util from \"./utils/Util\";\nimport ColorUtil from \"./utils/ColorUtil\";\nimport MathUtil from \"./math/MathUtil\";\nimport Vector2D from \"./math/Vector2D\";\nimport Polar2D from \"./math/Polar2D\";\nimport Mat3 from \"./math/Mat3\";\nimport Span from \"./math/Span\";\nimport ArraySpan from \"./math/ArraySpan\";\nimport Rectangle from \"./math/Rectangle\";\nimport ease from \"./math/ease\";\n\nimport Rate from \"./initialize/Rate\";\nimport Initialize from \"./initialize/Initialize\";\nimport Life from \"./initialize/Life\";\nimport Position from \"./initialize/Position\";\nimport Velocity from \"./initialize/Velocity\";\nimport Mass from \"./initialize/Mass\";\nimport Radius from \"./initialize/Radius\";\nimport Body from \"./initialize/Body\";\n\nimport Behaviour from \"./behaviour/Behaviour\";\nimport Force from \"./behaviour/Force\";\nimport Attraction from \"./behaviour/Attraction\";\nimport RandomDrift from \"./behaviour/RandomDrift\";\nimport Gravity from \"./behaviour/Gravity\";\nimport Collision from \"./behaviour/Collision\";\nimport CrossZone from \"./behaviour/CrossZone\";\nimport Alpha from \"./behaviour/Alpha\";\nimport Scale from \"./behaviour/Scale\";\nimport Rotate from \"./behaviour/Rotate\";\nimport Color from \"./behaviour/Color\";\nimport Cyclone from \"./behaviour/Cyclone\";\nimport Repulsion from \"./behaviour/Repulsion\";\nimport GravityWell from \"./behaviour/GravityWell\";\n\nimport Emitter from \"./emitter/Emitter\";\nimport BehaviourEmitter from \"./emitter/BehaviourEmitter\";\nimport FollowEmitter from \"./emitter/FollowEmitter\";\n\nimport CanvasRenderer from \"./render/CanvasRenderer\";\nimport DomRenderer from \"./render/DomRenderer\";\nimport EaselRenderer from \"./render/EaselRenderer\";\nimport PixelRenderer from \"./render/PixelRenderer\";\nimport PixiRenderer from \"./render/PixiRenderer\";\nimport WebGLRenderer from \"./render/WebGLRenderer\";\nimport CustomRenderer from \"./render/CustomRenderer\";\n\nimport Zone from \"./zone/Zone\";\nimport LineZone from \"./zone/LineZone\";\nimport CircleZone from \"./zone/CircleZone\";\nimport PointZone from \"./zone/PointZone\";\nimport RectZone from \"./zone/RectZone\";\nimport ImageZone from \"./zone/ImageZone\";\n\nimport Debug from \"./debug/Debug\";\n\n// namespace\nProton.Particle = Particle;\nProton.Pool = Pool;\n\nProton.Util = Util;\nProton.ColorUtil = ColorUtil;\nProton.MathUtil = MathUtil;\nProton.Vector2D = Proton.Vector = Vector2D;\nProton.Polar2D = Proton.Polar = Polar2D;\nProton.ArraySpan = ArraySpan;\nProton.Rectangle = Rectangle;\nProton.Rate = Rate;\nProton.ease = ease;\nProton.Span = Span;\nProton.Mat3 = Mat3;\nProton.getSpan = (a, b, center) => new Span(a, b, center);\nProton.createArraySpan = ArraySpan.createArraySpan;\n\nProton.Initialize = Proton.Init = Initialize;\nProton.Life = Proton.L = Life;\nProton.Position = Proton.P = Position;\nProton.Velocity = Proton.V = Velocity;\nProton.Mass = Proton.M = Mass;\nProton.Radius = Proton.R = Radius;\nProton.Body = Proton.B = Body;\n\nProton.Behaviour = Behaviour;\nProton.Force = Proton.F = Force;\nProton.Attraction = Proton.A = Attraction;\nProton.RandomDrift = Proton.RD = RandomDrift;\nProton.Gravity = Proton.G = Gravity;\nProton.Collision = Collision;\nProton.CrossZone = CrossZone;\nProton.Alpha = Alpha;\nProton.Scale = Proton.S = Scale;\nProton.Rotate = Rotate;\nProton.Color = Color;\nProton.Repulsion = Repulsion;\nProton.Cyclone = Cyclone;\nProton.GravityWell = GravityWell;\n\nProton.Emitter = Emitter;\nProton.BehaviourEmitter = BehaviourEmitter;\nProton.FollowEmitter = FollowEmitter;\n\nProton.Zone = Zone;\nProton.LineZone = LineZone;\nProton.CircleZone = CircleZone;\nProton.PointZone = PointZone;\nProton.RectZone = RectZone;\nProton.ImageZone = ImageZone;\n\nProton.CanvasRenderer = CanvasRenderer;\nProton.DomRenderer = DomRenderer;\nProton.EaselRenderer = EaselRenderer;\nProton.PixiRenderer = PixiRenderer;\nProton.PixelRenderer = PixelRenderer;\nProton.WebGLRenderer = Proton.WebGlRenderer = WebGLRenderer;\nProton.CustomRenderer = CustomRenderer;\n\nProton.Debug = Debug;\nUtil.assign(Proton, ease);\n\n// export\nexport default Proton;\nexport {\n Particle,\n Pool,\n Util,\n ColorUtil,\n MathUtil,\n Vector2D,\n Polar2D,\n Mat3,\n Span,\n ArraySpan,\n Rectangle,\n ease,\n Rate,\n Initialize,\n Life,\n Position,\n Velocity,\n Mass,\n Radius,\n Body,\n Behaviour,\n Force,\n Attraction,\n RandomDrift,\n Gravity,\n Collision,\n CrossZone,\n Alpha,\n Scale,\n Rotate,\n Color,\n Cyclone,\n Repulsion,\n GravityWell,\n Emitter,\n BehaviourEmitter,\n FollowEmitter,\n CanvasRenderer,\n DomRenderer,\n EaselRenderer,\n PixelRenderer,\n PixiRenderer,\n WebGLRenderer,\n CustomRenderer,\n Zone,\n LineZone,\n CircleZone,\n PointZone,\n RectZone,\n ImageZone,\n Debug\n};\n"],"names":["WebGLUtil","length","i","makeTranslation","tx","ty","angleInRadians","c","Math","cos","s","sin","makeScale","sx","sy","matrixMultiply","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","DomUtil","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","this","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","ImgUtil","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","getContext","Util","initValue","value","defaults","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","bind","apply","concat","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","undefined","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","_proto","get","params","p","__puid","pop","createOrClone","expire","getCache","create","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","bg","color","cssText","join","addEventListener","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","INFINITY","Infinity","MathUtil","PIx2","PI_2","PI_180","N180_PI","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","Span","getValue","setSpanValue","getSpanValue","pan","PropUtil","hasProp","setProp","props","prop","setVectorVal","conf","ease","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","ColorUtil","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","multiplyVec2","m","vec","ArraySpan","_Span","_arr","_inheritsLoose","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","_Behaviour","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","_Attraction","GravityWell","centerPoint","distanceVec","distanceSq","factor","InitializeUtil","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","dispatch","event","bindEvent","createParticle","setupParticle","BehaviourEmitter","PIXIClass","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","Types","__isImage","tagName","nodeName","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","_assertThisInitialized","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","PixiRenderer","setColor","blendMode","setPIXI","PIXI","Sprite","createFromImage","from","fromImage","tint","anchor","endFill","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","getFragmentShader","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","min","miny","maxx","maxy","xxyy","getLength","getDistance","getSymmetric","tha2","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","d","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","Debug","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter","Vector","Polar","getSpan","Init","L","P","V","M","R","F","RD","G","S","WebGlRenderer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"proton.min.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/math/Span.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/emitter/BehaviourEmitter.js","../src/render/PixiRenderer.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js","../src/index.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number | undefined} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n /**\n * Sets the frames per second (FPS) for the Proton system.\n * @param {number|string} fps - The desired FPS. Use \"auto\" for default behavior, or a number for a specific FPS.\n */\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n /**\n * Gets the current frames per second (FPS) setting.\n * @returns {number|string} The current FPS setting. Returns \"auto\" if set to default, or a number representing the specific FPS.\n */\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a span of values or an array.\n */\nexport default class Span {\n /**\n * @type {boolean}\n * @private\n */\n isArray;\n\n /**\n * @type {number|number[]}\n * @private\n */\n a;\n\n /**\n * @type {number}\n * @private\n */\n b;\n\n /**\n * @type {boolean}\n * @private\n */\n center;\n\n /**\n * Creates a new Span instance.\n * @param {number|number[]} a - The first value or an array of values.\n * @param {number} [b] - The second value (if a is not an array).\n * @param {boolean} [center=false] - Whether to use center-based calculation.\n */\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n /**\n * Gets a value from the span.\n * @param {boolean} [isInt=false] - Whether to return an integer value.\n * @returns {number} A random value from the span.\n */\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object.\n * @param {*|Span} a - The first value or a Span object.\n * @param {*} [b] - The second value.\n * @param {*} [c] - The third value.\n * @returns {Span} A new Span instance.\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter.\n * @param {*|Span} pan - The value or Span to get the value from.\n * @returns {*} The value of Span OR the parameter if it is not a Span.\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"../math/Span\";\n\nexport default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n /** @type {number} */\n x;\n\n /** @type {number} */\n y;\n\n /**\n * Creates a new Vector2D instance.\n * @param {number} [x=0] - The x coordinate.\n * @param {number} [y=0] - The y coordinate.\n */\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n /**\n * Sets the x and y components of this vector.\n * @param {number} x - The x coordinate.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets the x component of this vector.\n * @param {number} x - The x coordinate.\n * @returns {Vector2D} This vector.\n */\n setX(x) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets the y component of this vector.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n\n /**\n * Calculates the gradient (angle) of this vector.\n * @returns {number} The gradient in radians.\n */\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n /**\n * Copies the values of another vector to this one.\n * @param {Vector2D} v - The vector to copy from.\n * @returns {Vector2D} This vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n /**\n * Adds another vector to this one.\n * @param {Vector2D} v - The vector to add.\n * @param {Vector2D} [w] - An optional second vector to add.\n * @returns {Vector2D} This vector.\n */\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n /**\n * Adds scalar values to this vector's components.\n * @param {number} a - Value to add to x.\n * @param {number} b - Value to add to y.\n * @returns {Vector2D} This vector.\n */\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n /**\n * Adds two vectors and sets the result to this vector.\n * @param {Vector2D} a - The first vector to add.\n * @param {Vector2D} b - The second vector to add.\n * @returns {Vector2D} This vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n /**\n * Subtracts another vector from this one.\n * @param {Vector2D} v - The vector to subtract.\n * @param {Vector2D} [w] - An optional second vector to subtract.\n * @returns {Vector2D} This vector.\n */\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n /**\n * Subtracts one vector from another and sets the result to this vector.\n * @param {Vector2D} a - The vector to subtract from.\n * @param {Vector2D} b - The vector to subtract.\n * @returns {Vector2D} This vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n /**\n * Divides this vector by a scalar.\n * @param {number} s - The scalar to divide by.\n * @returns {Vector2D} This vector.\n */\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n /**\n * Multiplies this vector by a scalar.\n * @param {number} s - The scalar to multiply by.\n * @returns {Vector2D} This vector.\n */\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n /**\n * Negates this vector (inverts its direction).\n * @returns {Vector2D} This vector.\n */\n negate() {\n return this.multiplyScalar(-1);\n }\n\n /**\n * Calculates the dot product of this vector with another.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n /**\n * Calculates the squared length of this vector.\n * @returns {number} The squared length.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n /**\n * Calculates the length of this vector.\n * @returns {number} The length.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n /**\n * Normalizes this vector (makes it unit length).\n * @returns {Vector2D} This vector.\n */\n normalize() {\n return this.divideScalar(this.length());\n }\n\n /**\n * Calculates the distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n /**\n * Rotates this vector by an angle.\n * @param {number} tha - The angle to rotate by (in radians).\n * @returns {Vector2D} This vector.\n */\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n /**\n * Calculates the squared distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n /**\n * Linearly interpolates this vector toward another vector.\n * @param {Vector2D} v - The target vector.\n * @param {number} alpha - The interpolation factor (0-1).\n * @returns {Vector2D} This vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n /**\n * Checks if this vector is equal to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {boolean} True if the vectors are equal, false otherwise.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n /**\n * Sets this vector to zero.\n * @returns {Vector2D} This vector.\n */\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n /**\n * Creates a new vector with the same x and y values as this one.\n * @returns {Vector2D} A new Vector2D instance.\n */\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","import Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a particle in a particle system.\n * @class Particle\n */\nexport default class Particle {\n /** @type {string} The unique identifier of the particle */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */\n old = null;\n\n /** @type {object} Custom data associated with the particle */\n data = null;\n\n /** @type {Behaviour[]} Array of behaviours applied to the particle */\n behaviours = null;\n\n /** @type {Vector2D} Current position of the particle */\n p = null;\n\n /** @type {Vector2D} Current velocity of the particle */\n v = null;\n\n /** @type {Vector2D} Current acceleration of the particle */\n a = null;\n\n /** @type {Rgb} Color of the particle */\n rgb = null;\n\n /**\n * Creates a new Particle instance.\n * @param {Object} [conf] Configuration object for the particle\n */\n constructor(conf) {\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n /**\n * Gets the direction of the particle's movement in degrees.\n * @returns {number} The direction in degrees\n */\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n /**\n * Resets the particle to its initial state.\n * @returns {Particle} The particle instance\n */\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n /**\n * Updates the particle's state.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n /**\n * Applies all behaviours attached to the particle.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * Adds a behaviour to the particle.\n * @param {Behaviour} behaviour The behaviour to add\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * Adds multiple behaviours to the particle.\n * @param {Behaviour[]} behaviours An array of behaviours to add\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n /**\n * Removes a specific behaviour from the particle.\n * @param {Behaviour} behaviour The behaviour to remove\n */\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n /**\n * Removes all behaviours from the particle.\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destroys the particle, removing all behaviours and setting it as dead.\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\n/**\n * Represents an ArraySpan, a subclass of Span that works with arrays.\n * @extends Span\n */\nexport default class ArraySpan extends Span {\n /**\n * Creates an instance of ArraySpan.\n * @param {Array|*|any} arr - The array or value to be converted to an array.\n */\n constructor(arr) {\n super();\n this._arr = Util.toArray(arr);\n }\n\n /**\n * Gets a random value from the array.\n * If the value is \"random\" or \"Random\", it returns a random color.\n * @returns {*} A random value from the array or a random color.\n */\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Creates an ArraySpan instance from the given array.\n * If the input is already an ArraySpan instance, it returns the input.\n * @static\n * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance.\n * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy.\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\n/**\n * Rate class for controlling particle emission rate.\n */\nexport default class Rate {\n /**\n * @type {Span}\n * @private\n */\n numPan;\n\n /**\n * @type {Span}\n * @private\n */\n timePan;\n\n /**\n * @type {number}\n * @private\n */\n startTime;\n\n /**\n * @type {number}\n * @private\n */\n nextTime;\n\n /**\n * Creates a new Rate instance.\n * The number of particles per second emission (a [particle]/b [s]).\n * @param {Array|number|Span} [numpan=1] - The number of particles for each emission.\n * @param {Array|number|Span} [timepan=1] - The time interval between each emission.\n * @example\n * // Create a rate of 10-20 particles every 0.1-0.25 seconds\n * new Rate(new Span(10, 20), new Span(0.1, 0.25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n /**\n * Initializes the rate.\n * @private\n */\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n /**\n * Gets the number of particles to emit based on the elapsed time.\n * @param {number} time - The elapsed time since the last update.\n * @returns {number} The number of particles to emit.\n */\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Life class for initializing particle lifetime.\n * @extends Initialize\n */\nexport default class Life extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n lifePan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Life instance.\n * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range.\n * @param {number} [b] - The upper bound of the lifetime range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n /**\n * Initializes the lifetime of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a point zone in a 2D space.\n * @extends Zone\n */\nexport default class PointZone extends Zone {\n /**\n * Creates a new PointZone.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n */\n constructor(x, y) {\n super();\n\n /**\n * The x-coordinate of the point.\n * @type {number}\n */\n this.x = x;\n\n /**\n * The y-coordinate of the point.\n * @type {number}\n */\n this.y = y;\n }\n\n /**\n * Gets the position of the point.\n * @returns {Object} An object representing the position vector.\n */\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n /**\n * This method is not supported for PointZone.\n * @param {Object} particle - The particle object (unused).\n */\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Position class for initializing particle positions.\n * @extends Initialize\n */\nexport default class Position extends Initialize {\n /**\n * @type {PointZone|any}\n * @private\n */\n zone;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Position instance.\n * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n /**\n * Initializes the particle's position.\n * @param {object} target - The particle to initialize.\n * @param {object} target.p - The particle's position object.\n * @param {number} target.p.x - The particle's x coordinate.\n * @param {number} target.p.y - The particle's y coordinate.\n */\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Velocity class for initializing particle velocities.\n * @extends Initialize\n */\nexport default class Velocity extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n rPan;\n\n /**\n * @type {Span}\n * @private\n */\n thaPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Velocity instance.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n /**\n * Resets the velocity parameters.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n /**\n * Normalizes the velocity value.\n * @param {number} vr - The velocity value to normalize.\n * @returns {number} The normalized velocity value.\n * @private\n */\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n /**\n * Initializes the particle's velocity.\n * @param {object} target - The particle to initialize.\n */\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Mass class for initializing particle mass.\n * @extends Initialize\n */\nexport default class Mass extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n massPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Mass instance.\n * @param {number|Span} a - The mass value or the lower bound of the mass range.\n * @param {number} [b] - The upper bound of the mass range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n /**\n * Initializes the mass of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Radius class for initializing particle radius.\n * @extends Initialize\n */\nexport default class Radius extends Initialize {\n /**\n * @type {Span}\n */\n radius;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Radius instance.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n this.name = \"Radius\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n /**\n * Initializes the particle's radius.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Body class for initializing particle bodies.\n * @extends Initialize\n */\nexport default class Body extends Initialize {\n /**\n * @type {ArraySpan}\n * @private\n */\n image;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Body instance.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body.\n * @param {number} [w=20] - The width of the particle body.\n * @param {number} [h] - The height of the particle body. Defaults to the width if not provided.\n */\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n /**\n * Initializes the particle's body.\n * @param {object} particle - The particle to initialize.\n */\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n /**\n * Sets the span value for the image.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value.\n * @returns {ArraySpan} The ArraySpan instance.\n * @private\n */\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\n/**\n * The Behaviour class is the base for the other Behaviour\n * @class\n */\nexport default class Behaviour {\n static id = 0;\n\n /**\n * Create a new Behaviour instance\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's decaying trend, for example ease.easeOutQuart\n */\n constructor(life, easing) {\n /**\n * The behaviour's life\n * @type {number}\n */\n this.life = Util.initValue(life, Infinity);\n\n /**\n * The behaviour's easing function\n * @type {function}\n */\n this.easing = ease.getEasing(easing);\n\n /**\n * The behaviour's current age\n * @type {number}\n */\n this.age = 0;\n\n /**\n * The behaviour's current energy\n * @type {number}\n */\n this.energy = 1;\n\n /**\n * Whether the behaviour is dead\n * @type {boolean}\n */\n this.dead = false;\n\n /**\n * The behaviour's parent emitters\n * @type {Array}\n */\n this.parents = [];\n\n /**\n * The behaviour's unique id\n * @type {string}\n */\n this.id = `Behaviour_${Behaviour.id++}`;\n\n /**\n * The behaviour's name\n * @type {string}\n */\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n * @param {number} [life=Infinity] - This behaviour's new life\n * @param {string} [easing='easeLinear'] - This behaviour's new easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100\n * @param {Proton.Vector2D} force - The force to normalize\n * @returns {Proton.Vector2D} The normalized force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100\n * @param {number} value - The value to normalize\n * @returns {number} The normalized value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for a particle\n * @param {Proton.Particle} particle - The particle to initialize\n */\n initialize(particle) {}\n\n /**\n * Compute the behaviour's life cycle\n * @param {Proton.Particle} particle - The particle to calculate for\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour to a particle\n * @param {Proton.Particle} particle - The particle to apply the behaviour to\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destroy this behaviour\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Attraction behavior for particles.\n * This behaviour makes particles follow a specific target position.\n * @extends Behaviour\n */\nexport default class Attraction extends Behaviour {\n /**\n * Creates an instance of Attraction.\n * @param {Vector2D} targetPosition - The attraction point coordinates.\n * @param {number} [force=100] - The strength of the attraction force.\n * @param {number} [radius=1000] - The radius of influence for the attraction.\n * @param {number} [life=Infinity] - The life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The easing function for this behaviour.\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n /**\n * The target position for attraction.\n * @type {Vector2D}\n */\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n\n /**\n * The radius of influence for the attraction.\n * @type {number}\n */\n this.radius = Util.initValue(radius, 1000);\n\n /**\n * The strength of the attraction force.\n * @type {number}\n */\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n /**\n * The squared radius (for optimization).\n * @type {number}\n */\n this.radiusSq = this.radius * this.radius;\n\n /**\n * The attraction force vector.\n * @type {Vector2D}\n */\n this.attractionForce = new Vector2D();\n\n /**\n * The squared length of the attraction force.\n * @type {number}\n */\n this.lengthSq = 0;\n\n /**\n * The name of the behaviour.\n * @type {string}\n */\n this.name = \"Attraction\";\n }\n\n /**\n * Resets the behaviour's parameters.\n * @param {Vector2D} targetPosition - The new attraction point coordinates.\n * @param {number} [force=100] - The new strength of the attraction force.\n * @param {number} [radius=1000] - The new radius of influence for the attraction.\n * @param {number} [life=Infinity] - The new life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour.\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Alpha behaviour for controlling particle opacity over time.\n * @extends Behaviour\n */\nexport default class Alpha extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Alpha instance.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's alpha values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * Applies the alpha behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Scale behaviour for controlling particle size over time.\n * @extends Behaviour\n */\nexport default class Scale extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Scale instance.\n * @param {number|Span} [a=1] - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} a - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's scale values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Applies the scale behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Rotate behaviour for controlling particle rotation.\n * @extends Behaviour\n */\nexport default class Rotate extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n * @private\n */\n style;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Rotate instance.\n * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {string|number|Span} [a='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the behaviour's parameters for a particle.\n * @param {object} particle - The particle to initialize.\n * @param {number} particle.rotation - The particle's rotation.\n * @param {object} particle.data - The particle's data object.\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {object} particle - The particle to apply the behaviour to.\n * @param {number} time - The integrate time (1/ms).\n * @param {number} index - The particle index.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} [a] the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} [b] the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\n/**\n * The opposite of Attraction - turns the force\n *\n * @class\n * @extends Proton.Attraction\n * @memberof! Proton#\n * @alias Proton.Repulsion\n */\nexport default class Repulsion extends Attraction {\n /**\n * Creates a new Repulsion behaviour instance\n *\n * @constructor\n * @param {Proton.Vector2D} targetPosition - The repulsion point coordinates\n * @param {number} [force=100] - The strength of the repulsion force\n * @param {number} [radius=1000] - The radius of influence for the repulsion\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's easing function\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n /**\n * The strength of the repulsion force\n * @type {number}\n */\n this.force *= -1;\n\n /**\n * The name of the behaviour\n * @type {string}\n */\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @param {Proton.Vector2D} targetPosition - The new repulsion point coordinates\n * @param {number} [force=100] - The new strength of the repulsion force\n * @param {number} [radius=1000] - The new radius of influence for the repulsion\n * @param {number} [life=Infinity] - The new behaviour's life\n * @param {string} [easing='easeLinear'] - The new behaviour's easing function\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number | String} [totalTime] begin emit time;\n * @param {String | boolean} [life] the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n const particles = this.particles;\n const len = particles.length;\n \n // Just mark all as dead in a tight loop\n for (let i = 0; i < len; i++) {\n particles[i].dead = true;\n }\n \n // Don't actually remove from array here - that will happen in next integrate() call\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) {\n this.destroy();\n return;\n }\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n // Optimization for 500k particles: Use fast iteration with minimal GC impact\n const particles = this.particles;\n const length = particles.length;\n const parent = this.parent;\n const pool = parent.pool;\n const integrator = parent.integrator;\n const shouldDispatchUpdates = Boolean(this.parent || this.bindEvent);\n \n // Optimization: Use swap-and-pop method for removing dead particles\n // This is much faster than splice for large arrays\n let aliveCount = length;\n let i = 0;\n\n // Single-pass particle update with efficient removal\n while (i < aliveCount) {\n const particle = particles[i];\n \n // Fast update and check for dead particles\n particle.update(time, i);\n integrator.calculate(particle, time, damping);\n \n // Dispatch update events only if needed and not too many particles\n // Skip event dispatching for extremely large particle counts\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n }\n \n // Check if particle is dead\n if (particle.dead) {\n // Dispatch death events only when needed and not too many particles\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n }\n \n // Fast removal: swap with the last alive particle and decrement counter\n // This avoids expensive array splicing\n aliveCount--;\n if (i < aliveCount) {\n // Only swap if this isn't already the last particle\n particles[i] = particles[aliveCount];\n particles[aliveCount] = particle;\n \n // Return to pool\n pool.expire(particle);\n continue; // Don't increment i, process the swapped particle\n } else {\n // Last particle case\n pool.expire(particle);\n }\n }\n i++;\n }\n \n // If we have dead particles at the end, remove them all at once\n if (aliveCount < length) {\n particles.length = aliveCount; // Truncate the array (much faster than multiple splices)\n }\n }\n\n dispatch(event, target) {\n // Optimize by skipping work if no listeners\n if (!this.parent && !this.bindEvent) return;\n \n // For performance with many particles, only dispatch certain events\n if (this.particles && this.particles.length > 50000) {\n // With very large particle counts, only dispatch critical events\n if (event !== \"PARTICLE_CREATED\" && event !== \"PARTICLE_DEAD\") {\n return;\n }\n }\n \n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.stoped) return;\n\n // Maximum particles to emit in a single frame to prevent lag spikes\n const MAX_EMIT_PER_FRAME = 10000;\n\n // Direct property access for performance\n let emitTime = this.emitTime;\n const totalTime = this.totalTime;\n \n if (totalTime === \"none\") {\n this.emitTime = emitTime + time;\n return;\n } \n \n if (totalTime === \"once\") {\n // Fast path for \"once\" emission\n let numToEmit = this.rate.getValue(99999);\n \n // Cap emission count to prevent frame drops\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n // Log warning only in development if trying to emit too many at once\n if (process && process.env && process.env.NODE_ENV === 'development') {\n console.warn(`Attempting to emit ${numToEmit} particles at once, capped to ${MAX_EMIT_PER_FRAME}`);\n }\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n if (numToEmit <= 0) return;\n \n // Cache emission speed and emit particles\n this.emitSpeed = numToEmit;\n \n // Use the optimized method for bulk creation\n this._fastCreateParticles(numToEmit);\n \n // Mark as completed\n this.totalTime = \"none\";\n return;\n }\n \n // Regular emission logic - extreme optimization\n emitTime += time;\n this.emitTime = emitTime;\n \n if (emitTime < totalTime) {\n // Get particle count using rate\n let numToEmit = this.rate.getValue(time);\n \n if (numToEmit <= 0) return;\n \n // Cap emission to prevent lag spikes\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n this.emitSpeed = numToEmit;\n \n // Use fastest particle creation method\n this._fastCreateParticles(numToEmit);\n }\n }\n\n /**\n * Ultra-fast particle creation - no optional parameters, minimal overhead\n * @param {Number} count - Number of particles to create\n * @private\n */\n _fastCreateParticles(count) {\n // Early exit for zero count\n if (count <= 0 || !this.parent) return;\n \n // Direct property access - avoid repeated lookups\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n const initializes = this.initializes;\n const behaviours = this.behaviours;\n \n // Emergency circuit breaker - prevent memory issues when too many particles\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + count > MAX_SAFE_PARTICLES) {\n count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (count <= 0) return; // Already at max capacity\n }\n \n // Use faster bulk retrieval if available\n let particles;\n if (pool.getBulk) {\n // Get multiple particles at once from pool\n particles = pool.getBulk(Particle, count);\n \n // Fast-path batch initialization\n this._initializeParticlesBulk(particles, initializes, behaviours);\n } else {\n // Fast path direct initialization - optimized for huge particle counts\n this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours);\n }\n }\n \n /**\n * High-speed loop for creating many particles\n * @private\n */\n _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) {\n // Pre-calculate array growth to avoid resizing\n const newLength = particlesArr.length + count;\n \n // Handle array growth efficiently for large particle counts\n if (particlesArr.length === 0 && count > 10000) {\n try {\n // Try to preallocate the array with correct capacity\n particlesArr.length = count;\n particlesArr.length = 0; // Reset but keep capacity\n } catch (e) {\n // Ignore if this optimization isn't supported\n }\n }\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // Minimal particle creation loop - optimized for speed\n let i = 0;\n let particle;\n \n // Using while loop (faster than for loop in many JS engines)\n while (i < count) {\n // Get from pool\n particle = pool.get(Particle);\n \n // Fastest possible reset\n particle.reset();\n \n // Direct initialize call with cached values\n InitializeUtil.initialize(this, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = this;\n \n // Push to array\n particlesArr.push(particle);\n \n // Only dispatch if absolutely necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n \n /**\n * Bulk initialization for particles - more efficient for large batches\n * @private\n */\n _initializeParticlesBulk(particles, initializes, behaviours) {\n const count = particles.length;\n const particlesArr = this.particles;\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // One-time binding of this context for the loop\n const emitter = this;\n \n // Bulk initialize particles\n for (let i = 0; i < count; i++) {\n const particle = particles[i];\n \n // Initialize the particle directly\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Set properties\n particle.parent = emitter;\n \n // Add behaviors - use direct array if possible for better performance\n particle.addBehaviours(behaviours);\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Only dispatch if necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n }\n }\n\n /**\n * High-performance batch particle creation for large quantities\n * @param {Number} length - Number of particles to create\n * @param {Object|Array} [initialize] - Initialization parameters\n * @param {Object|Array} [behaviour] - Behavior parameters\n */\n createParticlesBatch(length, initialize, behaviour) {\n // Immediate redirect to fast creation when no custom initializers/behaviors\n if (!initialize && !behaviour) {\n this._fastCreateParticles(length);\n return;\n }\n \n // For huge batches, split into smaller chunks\n const BATCH_SIZE = 5000;\n \n if (length > BATCH_SIZE && length > 10000) {\n // Process in chunks for very large particle counts\n for (let i = 0; i < length; i += BATCH_SIZE) {\n const chunkSize = Math.min(BATCH_SIZE, length - i);\n this._createParticleChunk(chunkSize, initialize, behaviour);\n }\n } else {\n // Process all at once for smaller batches\n this._createParticleChunk(length, initialize, behaviour);\n }\n }\n \n /**\n * Internal method to create a chunk of particles\n * @private\n */\n _createParticleChunk(length, initialize, behaviour) {\n // Early exit for zero particles\n if (length <= 0) return;\n \n // Cache values for reuse\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n \n // Check if we'd exceed max safe count\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + length > MAX_SAFE_PARTICLES) {\n length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (length <= 0) return;\n }\n \n // Only calculate this once outside the loop\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Pre-bind functions and cache properties for the loop\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n const emitter = this;\n \n // Pre-allocate capacity if possible\n if (Array.prototype.reserve) {\n const newCapacity = particlesArr.length + length;\n if (particlesArr.capacity < newCapacity) {\n particlesArr.reserve(newCapacity);\n }\n }\n \n // Creation loop - unrolled for performance\n let i = 0;\n let particle;\n \n // Fast loop with minimal overhead\n while (i < length) {\n particle = pool.get(Particle);\n \n // Fastest reset possible\n particle.reset();\n \n // Initialize using cached values\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = emitter;\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Dispatch only if needed\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n\n /**\n * Creates a single particle - now optimized for performance\n * but batch methods should be preferred for multiple particles\n */\n createParticle(initialize, behaviour) {\n // Fast path when we have a parent\n if (!this.parent) return null;\n \n const particle = this.parent.pool.get(Particle);\n \n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize and add behaviors\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array - directly push to avoid function call\n this.particles.push(particle);\n \n // Only dispatch if needed and not too many particles\n if ((this.parent || this.bindEvent) && this.particles.length < 10000) {\n this.dispatch(\"PARTICLE_CREATED\", particle);\n }\n\n return particle;\n }\n\n /**\n * Sets up a particle with initialization and behavior.\n * @deprecated Use direct methods instead for better performance\n */\n setupParticle(particle, initialize, behaviour) {\n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array\n this.particles.push(particle);\n }\n\n /**\n * Removes all particles and stops the emitter.\n */\n remove() {\n this.stop();\n \n // More efficient particle cleanup\n const particles = this.particles;\n const len = particles.length;\n \n // Return all particles to pool\n if (this.parent && this.parent.pool) {\n const pool = this.parent.pool;\n for (let i = 0; i < len; i++) {\n pool.expire(particles[i]);\n }\n }\n \n // Clear array in one operation\n particles.length = 0;\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\nimport Pool from \"../core/Pool\";\n\nlet PIXIClass;\n\n// Counter to generate unique IDs for each renderer instance\nlet rendererIdCounter = 0;\n\n/**\n * A specialized pool that ensures particles are never shared between different emitters\n */\nclass EmitterAwarePool extends Pool {\n constructor() {\n super();\n // Store pools by emitter ID to ensure separation\n this.emitterPools = new Map();\n }\n\n /**\n * Get an item from the pool, ensuring it's specific to the emitter\n */\n get(target, params, emitterId) {\n // Ensure we have a valid emitter ID\n emitterId = emitterId || (params && params.parent && params.parent.id) || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n const emitterPool = this.emitterPools.get(emitterId);\n \n // Get from the emitter-specific pool or create new\n let p;\n if (emitterPool.length > 0) {\n p = emitterPool.pop();\n } else {\n p = this.createOrClone(target, params);\n // Tag with emitter ID for tracking\n p.__emitterId = emitterId;\n }\n \n return p;\n }\n\n /**\n * Return an item to its emitter-specific pool\n */\n expire(target, emitterId) {\n if (!emitterId && target.__emitterId) {\n emitterId = target.__emitterId;\n }\n \n // Default to the general pool if no emitter ID is found\n emitterId = emitterId || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n // Return to the emitter-specific pool\n return this.emitterPools.get(emitterId).push(target);\n }\n\n /**\n * Clean up all pools\n */\n destroy() {\n super.destroy();\n \n // Clear all emitter-specific pools\n this.emitterPools.forEach(pool => {\n pool.length = 0;\n });\n \n this.emitterPools.clear();\n this.emitterPools = null;\n }\n}\n\n/**\n * Represents a PIXI-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixiRenderer extends BaseRenderer {\n /**\n * Creates a new PixiRenderer instance.\n * @param {PIXI.Container} element - The PIXI container to render to.\n * @param {string|number} [stroke] - The stroke color for particles.\n */\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n \n // Assign a unique ID to this renderer instance\n this.rendererId = ++rendererIdCounter;\n \n // Create a new emitter-aware pool for this renderer\n this.pixiPool = new EmitterAwarePool();\n this.pixiPool.create = (body, particle) => this.createBody(body, particle);\n \n // Track emitters and their particles\n this.emitterMap = new Map();\n \n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n onEmitterAdded(emitter) {\n // Add emitter to tracking map\n if (!this.emitterMap.has(emitter.id)) {\n this.emitterMap.set(emitter.id, new Set());\n }\n }\n\n onEmitterRemoved(emitter) {\n // Clean up emitter's tracked particles\n if (this.emitterMap.has(emitter.id)) {\n this.emitterMap.delete(emitter.id);\n }\n }\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n // Get the emitter ID for this particle and store it directly on the particle\n const emitterId = particle.parent ? particle.parent.id : 'orphaned';\n \n // Store emitter ID directly on the particle for when parent reference is lost\n particle.__emitterId = emitterId;\n \n if (particle.body) {\n particle.body = this.pixiPool.get(particle.body, particle, emitterId);\n } else {\n particle.body = this.pixiPool.get(this.circleConf, particle, emitterId);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n // Track this particle with its emitter\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).add(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n if (!particle.body) return;\n \n this.element.removeChild(particle.body);\n \n // Use the cached emitter ID instead of accessing parent which might be null\n const emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned');\n \n // Return to the emitter-specific pool\n this.pixiPool.expire(particle.body, emitterId);\n \n // Remove from tracked particles\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).delete(particle);\n }\n \n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n target.rotation = particle.rotation * MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.set(0.5, 0.5);\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n \n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.lineStyle(1, stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n * @param {Array} particles - The particles to clean up.\n */\n destroy(particles) {\n super.destroy();\n\n // Clean up tracking maps\n this.emitterMap.clear();\n this.emitterMap = null;\n\n // Clean up the instance-specific particle pool\n this.pixiPool.destroy();\n this.pixiPool = null;\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n particle.body.destroy({ children: true });\n }\n }\n }\n}","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * CanvasRenderer class for rendering particles on a canvas element.\n * @extends BaseRenderer\n */\nexport default class CanvasRenderer extends BaseRenderer {\n /**\n * @type {object|null}\n * @private\n */\n stroke;\n\n /**\n * @type {CanvasRenderingContext2D}\n * @private\n */\n context;\n\n /**\n * @type {object}\n * @private\n */\n bufferCache;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new CanvasRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render on.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n /**\n * Resizes the canvas element.\n * @param {number} width - The new width of the canvas.\n * @param {number} height - The new height of the canvas.\n */\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n /**\n * Clears the canvas on Proton update.\n */\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n /**\n * Handles particle creation.\n * @param {object} particle - The created particle.\n */\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n /**\n * Handles particle updates.\n * @param {object} particle - The updated particle.\n */\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n /**\n * Handles particle destruction.\n * @param {object} particle - The destroyed particle.\n */\n onParticleDead(particle) {\n particle.body = null;\n }\n\n /**\n * Adds an image to the particle body.\n * @param {HTMLImageElement} img - The image to add.\n * @param {object} particle - The particle to add the image to.\n * @private\n */\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n /**\n * Draws an image particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n /**\n * Draws a circular particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n /**\n * Creates a buffer for image particles.\n * @param {HTMLImageElement} image - The image to create a buffer for.\n * @returns {HTMLCanvasElement|undefined} The created buffer canvas.\n * @private\n */\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a DOM-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class DomRenderer extends BaseRenderer {\n /**\n * Creates a new DomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(window.createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(window.createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a pixel-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixelRenderer extends BaseRenderer {\n /**\n * Creates a new PixelRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n * @param {Rectangle} [rectangle] - The rectangle defining the rendering area.\n */\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.element.height) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a WebGL-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class WebGLRenderer extends BaseRenderer {\n /**\n * Creates a new WebGLRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n */\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a custom renderer that extends the BaseRenderer.\n * @extends BaseRenderer\n */\nexport default class CustomRenderer extends BaseRenderer {\n /**\n * Creates a new CustomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n /**\n * The name of the renderer.\n * @type {string}\n */\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\n\n/**\n * Represents a line zone for particle systems.\n * @extends Zone\n */\nexport default class LineZone extends Zone {\n /**\n * Creates a new LineZone.\n * @param {number} x1 - The x-coordinate of the first point.\n * @param {number} y1 - The y-coordinate of the first point.\n * @param {number} [x2] - The x-coordinate of the second point.\n * @param {number} [y2] - The y-coordinate of the second point.\n * @param {string} [direction=\">\"] - The direction of the line.\n */\n constructor(x1, y1, x2, y2, direction = \">\") {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n /**\n * Gets a random position on the line.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n /**\n * Determines which side of the line a point is on.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} True if the point is on the positive side of the line, false otherwise.\n */\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n /**\n * Calculates the distance of a point from the line.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {number} The distance from the point to the line.\n */\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n /**\n * Calculates the symmetric vector of a given vector with respect to the line.\n * @param {Vector2D} v - The vector to reflect.\n * @returns {Vector2D} The reflected vector.\n */\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n /**\n * Gets the gradient (angle) of the line.\n * @returns {number} The gradient of the line in radians.\n */\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n /**\n * Checks if a particle is outside the range of the line.\n * @param {Particle} particle - The particle to check.\n * @returns {boolean} True if the particle is within range, false otherwise.\n */\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n /**\n * Gets the length of the line.\n * @returns {number} The length of the line.\n */\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a circular zone in a 2D space.\n * @extends Zone\n */\nexport default class CircleZone extends Zone {\n /**\n * Creates a new CircleZone.\n * @param {number} x - The x-coordinate of the circle's center.\n * @param {number} y - The y-coordinate of the circle's center.\n * @param {number} [radius] - The radius of the circle.\n */\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n /**\n * Gets a random position within the circle.\n * @returns {Object} An object with x and y coordinates.\n */\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n /**\n * Sets the center of the circle.\n * @param {number} x - The new x-coordinate of the center.\n * @param {number} y - The new y-coordinate of the center.\n */\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n /**\n * Calculates the symmetric position of a particle.\n * @param {Object} particle - The particle to calculate symmetry for.\n */\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n /**\n * Calculates the gradient for a particle.\n * @param {Object} particle - The particle to calculate the gradient for.\n * @returns {number} The calculated gradient.\n */\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a rectangular zone for particle systems.\n * @extends Zone\n */\nexport default class RectZone extends Zone {\n /**\n * Creates a new RectZone.\n * @param {number} x - The x-coordinate of the top-left corner of the rectangle.\n * @param {number} y - The y-coordinate of the top-left corner of the rectangle.\n * @param {number} [width] - The width of the rectangle.\n * @param {number} [height] - The height of the rectangle.\n */\n constructor(x, y, width = 200, height = 200) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Gets a random position within the rectangular zone.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n return this.vector;\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\n/**\n * Represents a zone based on image data.\n * @extends Zone\n */\nexport default class ImageZone extends Zone {\n /**\n * Creates an ImageZone.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n /**\n * Resets the ImageZone with new parameters.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n /**\n * Sets up vectors based on the image data.\n * @returns {Object} The vector object.\n */\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n /**\n * Checks if a point is within the bounds of the image.\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @returns {boolean} True if the point is within bounds, false otherwise.\n */\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n return this.imageData.data[index + 3] > 0;\n }\n\n /**\n * Gets a random position within the image zone.\n * @returns {Object} A vector representing the position.\n */\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n /**\n * Gets the color at a specific point in the image.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} An object containing r, g, b, and a values.\n */\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n particle.dead = this.getBound(particle.p.x - this.x, particle.p.y - this.y);\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n /**\n * Destroys the ImageZone and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n","import Proton from \"./core/Proton\";\nimport Particle from \"./core/Particle\";\nimport Pool from \"./core/Pool\";\n\nimport Util from \"./utils/Util\";\nimport ColorUtil from \"./utils/ColorUtil\";\nimport MathUtil from \"./math/MathUtil\";\nimport Vector2D from \"./math/Vector2D\";\nimport Polar2D from \"./math/Polar2D\";\nimport Mat3 from \"./math/Mat3\";\nimport Span from \"./math/Span\";\nimport ArraySpan from \"./math/ArraySpan\";\nimport Rectangle from \"./math/Rectangle\";\nimport ease from \"./math/ease\";\n\nimport Rate from \"./initialize/Rate\";\nimport Initialize from \"./initialize/Initialize\";\nimport Life from \"./initialize/Life\";\nimport Position from \"./initialize/Position\";\nimport Velocity from \"./initialize/Velocity\";\nimport Mass from \"./initialize/Mass\";\nimport Radius from \"./initialize/Radius\";\nimport Body from \"./initialize/Body\";\n\nimport Behaviour from \"./behaviour/Behaviour\";\nimport Force from \"./behaviour/Force\";\nimport Attraction from \"./behaviour/Attraction\";\nimport RandomDrift from \"./behaviour/RandomDrift\";\nimport Gravity from \"./behaviour/Gravity\";\nimport Collision from \"./behaviour/Collision\";\nimport CrossZone from \"./behaviour/CrossZone\";\nimport Alpha from \"./behaviour/Alpha\";\nimport Scale from \"./behaviour/Scale\";\nimport Rotate from \"./behaviour/Rotate\";\nimport Color from \"./behaviour/Color\";\nimport Cyclone from \"./behaviour/Cyclone\";\nimport Repulsion from \"./behaviour/Repulsion\";\nimport GravityWell from \"./behaviour/GravityWell\";\n\nimport Emitter from \"./emitter/Emitter\";\nimport BehaviourEmitter from \"./emitter/BehaviourEmitter\";\nimport FollowEmitter from \"./emitter/FollowEmitter\";\n\nimport CanvasRenderer from \"./render/CanvasRenderer\";\nimport DomRenderer from \"./render/DomRenderer\";\nimport EaselRenderer from \"./render/EaselRenderer\";\nimport PixelRenderer from \"./render/PixelRenderer\";\nimport PixiRenderer from \"./render/PixiRenderer\";\nimport WebGLRenderer from \"./render/WebGLRenderer\";\nimport CustomRenderer from \"./render/CustomRenderer\";\n\nimport Zone from \"./zone/Zone\";\nimport LineZone from \"./zone/LineZone\";\nimport CircleZone from \"./zone/CircleZone\";\nimport PointZone from \"./zone/PointZone\";\nimport RectZone from \"./zone/RectZone\";\nimport ImageZone from \"./zone/ImageZone\";\n\nimport Debug from \"./debug/Debug\";\n\n// namespace\nProton.Particle = Particle;\nProton.Pool = Pool;\n\nProton.Util = Util;\nProton.ColorUtil = ColorUtil;\nProton.MathUtil = MathUtil;\nProton.Vector2D = Proton.Vector = Vector2D;\nProton.Polar2D = Proton.Polar = Polar2D;\nProton.ArraySpan = ArraySpan;\nProton.Rectangle = Rectangle;\nProton.Rate = Rate;\nProton.ease = ease;\nProton.Span = Span;\nProton.Mat3 = Mat3;\nProton.getSpan = (a, b, center) => new Span(a, b, center);\nProton.createArraySpan = ArraySpan.createArraySpan;\n\nProton.Initialize = Proton.Init = Initialize;\nProton.Life = Proton.L = Life;\nProton.Position = Proton.P = Position;\nProton.Velocity = Proton.V = Velocity;\nProton.Mass = Proton.M = Mass;\nProton.Radius = Proton.R = Radius;\nProton.Body = Proton.B = Body;\n\nProton.Behaviour = Behaviour;\nProton.Force = Proton.F = Force;\nProton.Attraction = Proton.A = Attraction;\nProton.RandomDrift = Proton.RD = RandomDrift;\nProton.Gravity = Proton.G = Gravity;\nProton.Collision = Collision;\nProton.CrossZone = CrossZone;\nProton.Alpha = Alpha;\nProton.Scale = Proton.S = Scale;\nProton.Rotate = Rotate;\nProton.Color = Color;\nProton.Repulsion = Repulsion;\nProton.Cyclone = Cyclone;\nProton.GravityWell = GravityWell;\n\nProton.Emitter = Emitter;\nProton.BehaviourEmitter = BehaviourEmitter;\nProton.FollowEmitter = FollowEmitter;\n\nProton.Zone = Zone;\nProton.LineZone = LineZone;\nProton.CircleZone = CircleZone;\nProton.PointZone = PointZone;\nProton.RectZone = RectZone;\nProton.ImageZone = ImageZone;\n\nProton.CanvasRenderer = CanvasRenderer;\nProton.DomRenderer = DomRenderer;\nProton.EaselRenderer = EaselRenderer;\nProton.PixiRenderer = PixiRenderer;\nProton.PixelRenderer = PixelRenderer;\nProton.WebGLRenderer = Proton.WebGlRenderer = WebGLRenderer;\nProton.CustomRenderer = CustomRenderer;\n\nProton.Debug = Debug;\nUtil.assign(Proton, ease);\n\n// export\nexport default Proton;\nexport {\n Particle,\n Pool,\n Util,\n ColorUtil,\n MathUtil,\n Vector2D,\n Polar2D,\n Mat3,\n Span,\n ArraySpan,\n Rectangle,\n ease,\n Rate,\n Initialize,\n Life,\n Position,\n Velocity,\n Mass,\n Radius,\n Body,\n Behaviour,\n Force,\n Attraction,\n RandomDrift,\n Gravity,\n Collision,\n CrossZone,\n Alpha,\n Scale,\n Rotate,\n Color,\n Cyclone,\n Repulsion,\n GravityWell,\n Emitter,\n BehaviourEmitter,\n FollowEmitter,\n CanvasRenderer,\n DomRenderer,\n EaselRenderer,\n PixelRenderer,\n PixiRenderer,\n WebGLRenderer,\n CustomRenderer,\n Zone,\n LineZone,\n CircleZone,\n PointZone,\n RectZone,\n ImageZone,\n Debug\n};\n"],"names":["WebGLUtil","nhpot","length","i","tx","ty","makeRotation","angleInRadians","c","Math","cos","s","sin","sx","sy","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","DomUtil","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","this","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","ImgUtil","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","getContext","Util","initValue","value","defaults","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","bind","apply","concat","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","undefined","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","_proto","get","params","p","__puid","pop","createOrClone","expire","getCache","create","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","bg","color","cssText","join","addEventListener","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","INFINITY","Infinity","MathUtil","PIx2","PI_2","PI_180","N180_PI","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","Span","getValue","setSpanValue","getSpanValue","pan","PropUtil","hasProp","setProp","props","prop","setVectorVal","conf","ease","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","ColorUtil","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","multiplyVec2","m","vec","ArraySpan","_Span","_arr","_inheritsLoose","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","_Behaviour","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","_Attraction","GravityWell","centerPoint","distanceVec","distanceSq","factor","InitializeUtil","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","len","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","shouldDispatchUpdates","Boolean","bindEvent","aliveCount","dispatch","event","MAX_EMIT_PER_FRAME","numToEmit","process","env","NODE_ENV","warn","_fastCreateParticles","particlesArr","MAX_SAFE_PARTICLES","getBulk","_initializeParticlesBulk","_createParticlesLoop","dispatchFn","createParticlesBatch","BATCH_SIZE","chunkSize","min","_createParticleChunk","shouldDispatch","reserve","newCapacity","capacity","createParticle","setupParticle","BehaviourEmitter","PIXIClass","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","Types","isImage","__isImage","tagName","nodeName","isString","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","rendererIdCounter","EmitterAwarePool","_Pool","emitterPools","Map","emitterId","has","emitterPool","__emitterId","forEach","PixiRenderer","setColor","blendMode","rendererId","pixiPool","emitterMap","setPIXI","PIXI","_proto2","Sprite","createFromImage","from","Set","delete","tint","anchor","lineStyle","endFill","children","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","getFragmentShader","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","miny","maxx","maxy","xxyy","getLength","getDistance","getSymmetric","tha2","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","d","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","Debug","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter","Vector","Polar","getSpan","Init","L","P","V","M","R","F","RD","G","S","WebGlRenderer"],"mappings":"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"} \ No newline at end of file diff --git a/build/proton.web.js b/build/proton.web.js index b55f17a..f39ec97 100644 --- a/build/proton.web.js +++ b/build/proton.web.js @@ -1,37 +1,38 @@ this.Proton = (function () { 'use strict'; - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; } - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); + function _inheritsLoose(t, o) { + t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; } var WebGLUtil = { @@ -551,9 +552,7 @@ this.Proton = (function () { */; _proto.getCount = function getCount() { var count = 0; - for (var id in this.cache) { - count += this.cache[id].length; - } + for (var id in this.cache) count += this.cache[id].length; return count++; } @@ -833,10 +832,6 @@ this.Proton = (function () { }(); var Proton = /*#__PURE__*/function () { - // measure 1:100 - - // event name - /** * The constructor to add emitters * @@ -970,9 +965,7 @@ this.Proton = (function () { }; _proto.emittersUpdate = function emittersUpdate(elapsed) { var i = this.emitters.length; - while (i--) { - this.emitters[i].update(elapsed); - } + while (i--) this.emitters[i].update(elapsed); } /** @@ -1000,17 +993,13 @@ this.Proton = (function () { _proto.getCount = function getCount() { var total = 0; var i = this.emitters.length; - while (i--) { - total += this.emitters[i].particles.length; - } + while (i--) total += this.emitters[i].particles.length; return total; }; _proto.getAllParticles = function getAllParticles() { var particles = []; var i = this.emitters.length; - while (i--) { - particles = particles.concat(this.emitters[i].particles); - } + while (i--) particles = particles.concat(this.emitters[i].particles); return particles; }; _proto.destroyAllEmitters = function destroyAllEmitters() { @@ -1048,7 +1037,7 @@ this.Proton = (function () { destroyOther(); } }; - _createClass(Proton, [{ + return _createClass(Proton, [{ key: "fps", get: /** @@ -1063,12 +1052,13 @@ this.Proton = (function () { this._interval = fps === "auto" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7); } }]); - return Proton; }(); Proton.USE_CLOCK = false; + // measure 1:100 Proton.MEASURE = 100; Proton.EULER = "euler"; Proton.RK2 = "runge-kutta2"; + // event name Proton.PARTICLE_CREATED = "PARTICLE_CREATED"; Proton.PARTICLE_UPDATE = "PARTICLE_UPDATE"; Proton.PARTICLE_SLEEP = "PARTICLE_SLEEP"; @@ -1109,26 +1099,6 @@ this.Proton = (function () { * Represents a span of values or an array. */ var Span = /*#__PURE__*/function () { - /** - * @type {boolean} - * @private - */ - - /** - * @type {number|number[]} - * @private - */ - - /** - * @type {number} - * @private - */ - - /** - * @type {boolean} - * @private - */ - /** * Creates a new Span instance. * @param {number|number[]} a - The first value or an array of values. @@ -1136,9 +1106,25 @@ this.Proton = (function () { * @param {boolean} [center=false] - Whether to use center-based calculation. */ function Span(a, b, center) { + /** + * @type {boolean} + * @private + */ this.isArray = void 0; + /** + * @type {number|number[]} + * @private + */ this.a = void 0; + /** + * @type {number} + * @private + */ this.b = void 0; + /** + * @type {boolean} + * @private + */ this.center = void 0; if (Util.isArray(a)) { this.isArray = true; @@ -1345,17 +1331,15 @@ this.Proton = (function () { }; var Vector2D = /*#__PURE__*/function () { - /** @type {number} */ - - /** @type {number} */ - /** * Creates a new Vector2D instance. * @param {number} [x=0] - The x coordinate. * @param {number} [y=0] - The y coordinate. */ function Vector2D(x, y) { + /** @type {number} */ this.x = void 0; + /** @type {number} */ this.y = void 0; this.x = x || 0; this.y = y || 0; @@ -1625,34 +1609,26 @@ this.Proton = (function () { * @class Particle */ var Particle = /*#__PURE__*/function () { - /** @type {string} The unique identifier of the particle */ - - /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */ - - /** @type {object} Custom data associated with the particle */ - - /** @type {Behaviour[]} Array of behaviours applied to the particle */ - - /** @type {Vector2D} Current position of the particle */ - - /** @type {Vector2D} Current velocity of the particle */ - - /** @type {Vector2D} Current acceleration of the particle */ - - /** @type {Rgb} Color of the particle */ - /** * Creates a new Particle instance. * @param {Object} [conf] Configuration object for the particle */ function Particle(conf) { + /** @type {string} The unique identifier of the particle */ this.id = ""; + /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */ this.old = null; + /** @type {object} Custom data associated with the particle */ this.data = null; + /** @type {Behaviour[]} Array of behaviours applied to the particle */ this.behaviours = null; + /** @type {Vector2D} Current position of the particle */ this.p = null; + /** @type {Vector2D} Current velocity of the particle */ this.v = null; + /** @type {Vector2D} Current acceleration of the particle */ this.a = null; + /** @type {Rgb} Color of the particle */ this.rgb = null; this.name = "Particle"; this.id = Puid.id(this.name); @@ -1899,9 +1875,7 @@ this.Proton = (function () { return mat; }, set: function set(mat1, mat2) { - for (var i = 0; i < 9; i++) { - mat2[i] = mat1[i]; - } + for (var i = 0; i < 9; i++) mat2[i] = mat1[i]; return mat2; }, multiply: function multiply(mat, mat2, mat3) { @@ -1958,14 +1932,28 @@ this.Proton = (function () { } }; + /** + * Represents an ArraySpan, a subclass of Span that works with arrays. + * @extends Span + */ var ArraySpan = /*#__PURE__*/function (_Span) { - _inheritsLoose(ArraySpan, _Span); - function ArraySpan(color) { + /** + * Creates an instance of ArraySpan. + * @param {Array|*|any} arr - The array or value to be converted to an array. + */ + function ArraySpan(arr) { var _this; _this = _Span.call(this) || this; - _this._arr = Util.toArray(color); + _this._arr = Util.toArray(arr); return _this; } + + /** + * Gets a random value from the array. + * If the value is "random" or "Random", it returns a random color. + * @returns {*} A random value from the array or a random color. + */ + _inheritsLoose(ArraySpan, _Span); var _proto = ArraySpan.prototype; _proto.getValue = function getValue() { var val = Util.getRandFromArray(this._arr); @@ -1973,15 +1961,11 @@ this.Proton = (function () { } /** - * Make sure that the color is an instance of Proton.ArraySpan, if not it makes a new instance - * - * @method setSpanValue - * @memberof Proton#Proton.Color - * @instance - * - * @param {Proton.Particle} particle - * @param {Number} the integrate time 1/ms - * @param {Int} the particle index + * Creates an ArraySpan instance from the given array. + * If the input is already an ArraySpan instance, it returns the input. + * @static + * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance. + * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy. */; ArraySpan.createArraySpan = function createArraySpan(arr) { if (!arr) return null; @@ -2010,26 +1994,6 @@ this.Proton = (function () { * Rate class for controlling particle emission rate. */ var Rate = /*#__PURE__*/function () { - /** - * @type {Span} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {number} - * @private - */ - - /** - * @type {number} - * @private - */ - /** * Creates a new Rate instance. * The number of particles per second emission (a [particle]/b [s]). @@ -2040,9 +2004,25 @@ this.Proton = (function () { * new Rate(new Span(10, 20), new Span(0.1, 0.25)); */ function Rate(numpan, timepan) { + /** + * @type {Span} + * @private + */ this.numPan = void 0; + /** + * @type {Span} + * @private + */ this.timePan = void 0; + /** + * @type {number} + * @private + */ this.startTime = void 0; + /** + * @type {number} + * @private + */ this.nextTime = void 0; this.numPan = Span.setSpanValue(Util.initValue(numpan, 1)); this.timePan = Span.setSpanValue(Util.initValue(timepan, 1)); @@ -2105,16 +2085,6 @@ this.Proton = (function () { * @extends Initialize */ var Life = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Life, _Initialize); - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Life instance. * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range. @@ -2124,7 +2094,14 @@ this.Proton = (function () { function Life(a, b, c) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + * @private + */ _this.lifePan = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.lifePan = Span.setSpanValue(a, b, c); _this.name = "Life"; @@ -2135,6 +2112,7 @@ this.Proton = (function () { * Initializes the lifetime of a target particle. * @param {object} target - The target particle to initialize. */ + _inheritsLoose(Life, _Initialize); var _proto = Life.prototype; _proto.initialize = function initialize(target) { if (this.lifePan.a === Infinity) target.life = Infinity;else target.life = this.lifePan.getValue(); @@ -2163,7 +2141,6 @@ this.Proton = (function () { * @extends Zone */ var PointZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(PointZone, _Zone); /** * Creates a new PointZone. * @param {number} x - The x-coordinate of the point. @@ -2191,6 +2168,7 @@ this.Proton = (function () { * Gets the position of the point. * @returns {Object} An object representing the position vector. */ + _inheritsLoose(PointZone, _Zone); var _proto = PointZone.prototype; _proto.getPosition = function getPosition() { this.vector.x = this.x; @@ -2216,16 +2194,6 @@ this.Proton = (function () { * @extends Initialize */ var Position = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Position, _Initialize); - /** - * @type {PointZone|any} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Position instance. * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided. @@ -2233,7 +2201,14 @@ this.Proton = (function () { function Position(zone) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {PointZone|any} + * @private + */ _this.zone = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.zone = Util.initValue(zone, new PointZone()); _this.name = "Position"; @@ -2244,6 +2219,7 @@ this.Proton = (function () { * Resets this initializer's parameters. * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided. */ + _inheritsLoose(Position, _Initialize); var _proto = Position.prototype; _proto.reset = function reset(zone) { this.zone = Util.initValue(zone, new PointZone()); @@ -2269,21 +2245,6 @@ this.Proton = (function () { * @extends Initialize */ var Velocity = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Velocity, _Initialize); - /** - * @type {Span} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Velocity instance. * @param {number|Span} [rpan] - The radial component of the velocity or its range. @@ -2293,8 +2254,19 @@ this.Proton = (function () { function Velocity(rpan, thapan, type) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + * @private + */ _this.rPan = void 0; + /** + * @type {Span} + * @private + */ _this.thaPan = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.rPan = Span.setSpanValue(rpan); _this.thaPan = Span.setSpanValue(thapan); @@ -2309,6 +2281,7 @@ this.Proton = (function () { * @param {number|Span} [thapan] - The angular component of the velocity or its range. * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar'). */ + _inheritsLoose(Velocity, _Initialize); var _proto = Velocity.prototype; _proto.reset = function reset(rpan, thapan, type) { this.rPan = Span.setSpanValue(rpan); @@ -2348,16 +2321,6 @@ this.Proton = (function () { * @extends Initialize */ var Mass = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Mass, _Initialize); - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Mass instance. * @param {number|Span} a - The mass value or the lower bound of the mass range. @@ -2367,7 +2330,14 @@ this.Proton = (function () { function Mass(a, b, c) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + * @private + */ _this.massPan = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.massPan = Span.setSpanValue(a, b, c); _this.name = "Mass"; @@ -2378,6 +2348,7 @@ this.Proton = (function () { * Initializes the mass of a target particle. * @param {object} target - The target particle to initialize. */ + _inheritsLoose(Mass, _Initialize); var _proto = Mass.prototype; _proto.initialize = function initialize(target) { target.mass = this.massPan.getValue(); @@ -2390,15 +2361,6 @@ this.Proton = (function () { * @extends Initialize */ var Radius = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Radius, _Initialize); - /** - * @type {Span} - */ - - /** - * @type {string} - */ - /** * Creates a new Radius instance. * @param {number|Span} a - The radius value or the lower bound of the radius range. @@ -2408,7 +2370,13 @@ this.Proton = (function () { function Radius(a, b, c) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {Span} + */ _this.radius = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.radius = Span.setSpanValue(a, b, c); _this.name = "Radius"; @@ -2421,6 +2389,7 @@ this.Proton = (function () { * @param {number} [b] - The upper bound of the radius range (if a is a number). * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers). */ + _inheritsLoose(Radius, _Initialize); var _proto = Radius.prototype; _proto.reset = function reset(a, b, c) { this.radius = Span.setSpanValue(a, b, c); @@ -2442,26 +2411,23 @@ this.Proton = (function () { * @extends Initialize */ var Body = /*#__PURE__*/function (_Initialize) { - _inheritsLoose(Body, _Initialize); - /** - * @type {ArraySpan} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Body instance. - * @param {string|object|ArraySpan} image - The image source or object to use for the particle body. + * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body. * @param {number} [w=20] - The width of the particle body. * @param {number} [h] - The height of the particle body. Defaults to the width if not provided. */ function Body(image, w, h) { var _this; _this = _Initialize.call(this) || this; + /** + * @type {ArraySpan} + * @private + */ _this.image = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.image = _this.setSpanValue(image); _this.w = Util.initValue(w, 20); @@ -2474,6 +2440,7 @@ this.Proton = (function () { * Initializes the particle's body. * @param {object} particle - The particle to initialize. */ + _inheritsLoose(Body, _Initialize); var _proto = Body.prototype; _proto.initialize = function initialize(particle) { var imageTarget = this.image.getValue(); @@ -2492,7 +2459,7 @@ this.Proton = (function () { /** * Sets the span value for the image. - * @param {string|object|ArraySpan} image - The image source or object to set as span value. + * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value. * @returns {ArraySpan} The ArraySpan instance. * @private */; @@ -2640,7 +2607,6 @@ this.Proton = (function () { Behaviour.id = 0; var Force = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Force, _Behaviour); /** * @memberof! Proton# * @augments Proton.Behaviour @@ -2674,6 +2640,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=ease.easeLinear] this behaviour's easing */ + _inheritsLoose(Force, _Behaviour); var _proto = Force.prototype; _proto.reset = function reset(fx, fy, life, easing) { this.force = this.normalizeForce(new Vector2D(fx, fy)); @@ -2704,7 +2671,6 @@ this.Proton = (function () { * @extends Behaviour */ var Attraction = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Attraction, _Behaviour); /** * Creates an instance of Attraction. * @param {Vector2D} targetPosition - The attraction point coordinates. @@ -2769,6 +2735,7 @@ this.Proton = (function () { * @param {number} [life=Infinity] - The new life span of this behaviour. * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour. */ + _inheritsLoose(Attraction, _Behaviour); var _proto = Attraction.prototype; _proto.reset = function reset(targetPosition, force, radius, life, easing) { this.targetPosition = Util.initValue(targetPosition, new Vector2D()); @@ -2802,7 +2769,6 @@ this.Proton = (function () { }(Behaviour); var RandomDrift = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(RandomDrift, _Behaviour); /** * @memberof! Proton# * @augments Behaviour @@ -2840,6 +2806,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(RandomDrift, _Behaviour); var _proto = RandomDrift.prototype; _proto.reset = function reset(driftX, driftY, delay, life, easing) { this.panFoce = new Vector2D(driftX, driftY); @@ -2874,7 +2841,6 @@ this.Proton = (function () { }(Behaviour); var Gravity = /*#__PURE__*/function (_Force) { - _inheritsLoose(Gravity, _Force); /** * @memberof! Proton# * @augments Proton#Proton.Force @@ -2905,6 +2871,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=ease.easeLinear] this behaviour's easing */ + _inheritsLoose(Gravity, _Force); var _proto = Gravity.prototype; _proto.reset = function reset(g, life, easing) { _Force.prototype.reset.call(this, 0, g, life, easing); @@ -2913,7 +2880,6 @@ this.Proton = (function () { }(Force); var Collision = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Collision, _Behaviour); /** * The callback after collision * @@ -2963,6 +2929,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=ease.easeLinear] this behaviour's easing */ + _inheritsLoose(Collision, _Behaviour); var _proto = Collision.prototype; _proto.reset = function reset(emitter, mass, callback, life, easing) { this.emitter = Util.initValue(emitter, null); @@ -3021,7 +2988,6 @@ this.Proton = (function () { }(Behaviour); var CrossZone = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(CrossZone, _Behaviour); /** * Defines what happens if the particles come to the end of the specified zone * @@ -3057,6 +3023,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(CrossZone, _Behaviour); var _proto = CrossZone.prototype; _proto.reset = function reset(zone, crossType, life, easing) { this.zone = zone; @@ -3087,26 +3054,6 @@ this.Proton = (function () { * @extends Behaviour */ var Alpha = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Alpha, _Behaviour); - /** - * @type {boolean} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Alpha instance. * @param {number|Span} [a=1] - The initial alpha value or range. @@ -3117,9 +3064,24 @@ this.Proton = (function () { function Alpha(a, b, life, easing) { var _this; _this = _Behaviour.call(this, life, easing) || this; + /** + * @type {boolean} + * @private + */ _this.same = void 0; + /** + * @type {Span} + * @private + */ _this.a = void 0; + /** + * @type {Span} + * @private + */ _this.b = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.reset(a, b); _this.name = "Alpha"; @@ -3133,6 +3095,7 @@ this.Proton = (function () { * @param {number} [life] - This behaviour's life. * @param {string} [easing] - This behaviour's easing function. */ + _inheritsLoose(Alpha, _Behaviour); var _proto = Alpha.prototype; _proto.reset = function reset(a, b, life, easing) { this.same = b === null || b === undefined; @@ -3169,16 +3132,6 @@ this.Proton = (function () { * @extends Behaviour */ var Scale = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Scale, _Behaviour); - /** - * @type {boolean} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new Scale instance. * @param {number|Span} [a=1] - The initial scale value or range. @@ -3189,7 +3142,14 @@ this.Proton = (function () { function Scale(a, b, life, easing) { var _this; _this = _Behaviour.call(this, life, easing) || this; + /** + * @type {boolean} + * @private + */ _this.same = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.reset(a, b); _this.name = "Scale"; @@ -3203,6 +3163,7 @@ this.Proton = (function () { * @param {number} [life] - This behaviour's life. * @param {string} [easing] - This behaviour's easing function. */ + _inheritsLoose(Scale, _Behaviour); var _proto = Scale.prototype; _proto.reset = function reset(a, b, life, easing) { this.same = b === null || b === undefined; @@ -3241,46 +3202,40 @@ this.Proton = (function () { * @extends Behaviour */ var Rotate = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Rotate, _Behaviour); - /** - * @type {boolean} - * @private - */ - - /** - * @type {Span} - * @private - */ - /** - * @type {Span} - * @private - */ - - /** - * @type {string} - * @private - */ - - /** - * @type {string} - */ - - /** - * Creates a new Rotate instance. - * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation. - * @param {string|number|Span} [b] - The final rotation value or range. - * @param {string} [style='to'] - The style of rotation ('to' or 'add'). - * @param {number} [life=Infinity] - This behaviour's life. - * @param {string} [easing='easeLinear'] - This behaviour's easing function. + * Creates a new Rotate instance. + * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation. + * @param {string|number|Span} [b] - The final rotation value or range. + * @param {string} [style='to'] - The style of rotation ('to' or 'add'). + * @param {number} [life=Infinity] - This behaviour's life. + * @param {string} [easing='easeLinear'] - This behaviour's easing function. */ function Rotate(influence, b, style, life, easing) { var _this; _this = _Behaviour.call(this, life, easing) || this; + /** + * @type {boolean} + * @private + */ _this.same = void 0; + /** + * @type {Span} + * @private + */ _this.a = void 0; + /** + * @type {Span} + * @private + */ _this.b = void 0; + /** + * @type {string} + * @private + */ _this.style = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.reset(influence, b, style); _this.name = "Rotate"; @@ -3295,6 +3250,7 @@ this.Proton = (function () { * @param {number} [life] - This behaviour's life. * @param {string} [easing] - This behaviour's easing function. */ + _inheritsLoose(Rotate, _Behaviour); var _proto = Rotate.prototype; _proto.reset = function reset(a, b, style, life, easing) { this.same = b === null || b === undefined; @@ -3339,7 +3295,6 @@ this.Proton = (function () { }(Behaviour); var Color = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Color, _Behaviour); /** * @memberof! Proton# * @augments Proton.Behaviour @@ -3373,6 +3328,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(Color, _Behaviour); var _proto = Color.prototype; _proto.reset = function reset(a, b, life, easing) { this.a = ArraySpan.createArraySpan(a); @@ -3426,7 +3382,6 @@ this.Proton = (function () { var CHANGING = "changing"; var Cyclone = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(Cyclone, _Behaviour); /** * @memberof! Proton# * @augments Proton.Behaviour @@ -3447,6 +3402,7 @@ this.Proton = (function () { _this.name = "Cyclone"; return _this; } + _inheritsLoose(Cyclone, _Behaviour); var _proto = Cyclone.prototype; _proto.setAngleAndForce = function setAngleAndForce(angle, force) { this.force = CHANGING; @@ -3538,7 +3494,6 @@ this.Proton = (function () { * @alias Proton.Repulsion */ var Repulsion = /*#__PURE__*/function (_Attraction) { - _inheritsLoose(Repulsion, _Attraction); /** * Creates a new Repulsion behaviour instance * @@ -3576,6 +3531,7 @@ this.Proton = (function () { * @param {number} [life=Infinity] - The new behaviour's life * @param {string} [easing='easeLinear'] - The new behaviour's easing function */ + _inheritsLoose(Repulsion, _Attraction); var _proto = Repulsion.prototype; _proto.reset = function reset(targetPosition, force, radius, life, easing) { _Attraction.prototype.reset.call(this, targetPosition, force, radius, life, easing); @@ -3585,7 +3541,6 @@ this.Proton = (function () { }(Attraction); var GravityWell = /*#__PURE__*/function (_Behaviour) { - _inheritsLoose(GravityWell, _Behaviour); /** * @memberof! Proton# * @augments Behaviour @@ -3621,6 +3576,7 @@ this.Proton = (function () { * @param {Number} [life=Infinity] this behaviour's life * @param {String} [easing=easeLinear] this behaviour's easing */ + _inheritsLoose(GravityWell, _Behaviour); var _proto = GravityWell.prototype; _proto.reset = function reset(centerPoint, force, life, easing) { this.distanceVec = new Vector2D(); @@ -3687,7 +3643,6 @@ this.Proton = (function () { }; var Emitter = /*#__PURE__*/function (_Particle) { - _inheritsLoose(Emitter, _Particle); /** * You can use this emit particles. * @@ -3748,6 +3703,7 @@ this.Proton = (function () { * @param {Number | String} [totalTime] begin emit time; * @param {String | boolean} [life] the life of this emitter */ + _inheritsLoose(Emitter, _Particle); var _proto = Emitter.prototype; _proto.emit = function emit(totalTime, life) { this.stoped = false; @@ -3793,10 +3749,15 @@ this.Proton = (function () { * @method removeAllParticles */; _proto.removeAllParticles = function removeAllParticles() { - var i = this.particles.length; - while (i--) { - this.particles[i].dead = true; + var particles = this.particles; + var len = particles.length; + + // Just mark all as dead in a tight loop + for (var i = 0; i < len; i++) { + particles[i].dead = true; } + + // Don't actually remove from array here - that will happen in next integrate() call } /** @@ -3821,9 +3782,7 @@ this.Proton = (function () { rest[_key] = arguments[_key]; } var i = rest.length; - while (i--) { - this.initializes.push(rest[i]); - } + while (i--) this.initializes.push(rest[i]); } /** @@ -3890,7 +3849,10 @@ this.Proton = (function () { ; _proto.update = function update(time) { this.age += time; - if (this.age >= this.life || this.dead) this.destroy(); + if (this.age >= this.life || this.dead) { + this.destroy(); + return; + } this.emitting(time); this.integrate(time); }; @@ -3898,79 +3860,431 @@ this.Proton = (function () { if (!this.parent) return; var damping = 1 - this.damping; this.parent.integrator.calculate(this, time, damping); - var length = this.particles.length; - var i, particle; - for (i = length - 1; i >= 0; i--) { - particle = this.particles[i]; - // particle update + // Optimization for 500k particles: Use fast iteration with minimal GC impact + var particles = this.particles; + var length = particles.length; + var parent = this.parent; + var pool = parent.pool; + var integrator = parent.integrator; + var shouldDispatchUpdates = Boolean(this.parent || this.bindEvent); + + // Optimization: Use swap-and-pop method for removing dead particles + // This is much faster than splice for large arrays + var aliveCount = length; + var i = 0; + + // Single-pass particle update with efficient removal + while (i < aliveCount) { + var particle = particles[i]; + + // Fast update and check for dead particles particle.update(time, i); - this.parent.integrator.calculate(particle, time, damping); - this.dispatch("PARTICLE_UPDATE", particle); + integrator.calculate(particle, time, damping); + + // Dispatch update events only if needed and not too many particles + // Skip event dispatching for extremely large particle counts + if (shouldDispatchUpdates && length < 10000) { + this.dispatch("PARTICLE_UPDATE", particle); + } - // check dead + // Check if particle is dead if (particle.dead) { - this.dispatch("PARTICLE_DEAD", particle); - this.parent.pool.expire(particle); - this.particles.splice(i, 1); + // Dispatch death events only when needed and not too many particles + if (shouldDispatchUpdates && length < 10000) { + this.dispatch("PARTICLE_DEAD", particle); + } + + // Fast removal: swap with the last alive particle and decrement counter + // This avoids expensive array splicing + aliveCount--; + if (i < aliveCount) { + // Only swap if this isn't already the last particle + particles[i] = particles[aliveCount]; + particles[aliveCount] = particle; + + // Return to pool + pool.expire(particle); + continue; // Don't increment i, process the swapped particle + } else { + // Last particle case + pool.expire(particle); + } } + i++; + } + + // If we have dead particles at the end, remove them all at once + if (aliveCount < length) { + particles.length = aliveCount; // Truncate the array (much faster than multiple splices) } }; _proto.dispatch = function dispatch(event, target) { + // Optimize by skipping work if no listeners + if (!this.parent && !this.bindEvent) return; + + // For performance with many particles, only dispatch certain events + if (this.particles && this.particles.length > 50000) { + // With very large particle counts, only dispatch critical events + if (event !== "PARTICLE_CREATED" && event !== "PARTICLE_DEAD") { + return; + } + } this.parent && this.parent.dispatchEvent(event, target); this.bindEvent && this.dispatchEvent(event, target); }; _proto.emitting = function emitting(time) { if (this.stoped) return; - if (this.totalTime === "none") { - this.emitTime += time; - } else if (this.totalTime === "once") { - var i; - var length = this.rate.getValue(99999); - if (length > 0) this.emitSpeed = length; - for (i = 0; i < length; i++) { - this.createParticle(); + + // Maximum particles to emit in a single frame to prevent lag spikes + var MAX_EMIT_PER_FRAME = 10000; + + // Direct property access for performance + var emitTime = this.emitTime; + var totalTime = this.totalTime; + if (totalTime === "none") { + this.emitTime = emitTime + time; + return; + } + if (totalTime === "once") { + // Fast path for "once" emission + var numToEmit = this.rate.getValue(99999); + + // Cap emission count to prevent frame drops + if (numToEmit > MAX_EMIT_PER_FRAME) { + // Log warning only in development if trying to emit too many at once + if (process && process.env && process.env.NODE_ENV === 'development') { + console.warn("Attempting to emit " + numToEmit + " particles at once, capped to " + MAX_EMIT_PER_FRAME); + } + numToEmit = MAX_EMIT_PER_FRAME; } + if (numToEmit <= 0) return; + + // Cache emission speed and emit particles + this.emitSpeed = numToEmit; + + // Use the optimized method for bulk creation + this._fastCreateParticles(numToEmit); + + // Mark as completed this.totalTime = "none"; + return; + } + + // Regular emission logic - extreme optimization + emitTime += time; + this.emitTime = emitTime; + if (emitTime < totalTime) { + // Get particle count using rate + var _numToEmit = this.rate.getValue(time); + if (_numToEmit <= 0) return; + + // Cap emission to prevent lag spikes + if (_numToEmit > MAX_EMIT_PER_FRAME) { + _numToEmit = MAX_EMIT_PER_FRAME; + } + this.emitSpeed = _numToEmit; + + // Use fastest particle creation method + this._fastCreateParticles(_numToEmit); + } + } + + /** + * Ultra-fast particle creation - no optional parameters, minimal overhead + * @param {Number} count - Number of particles to create + * @private + */; + _proto._fastCreateParticles = function _fastCreateParticles(count) { + // Early exit for zero count + if (count <= 0 || !this.parent) return; + + // Direct property access - avoid repeated lookups + var parent = this.parent; + var pool = parent.pool; + var particlesArr = this.particles; + var initializes = this.initializes; + var behaviours = this.behaviours; + + // Emergency circuit breaker - prevent memory issues when too many particles + var MAX_SAFE_PARTICLES = 1000000; // 1 million particles max + if (particlesArr.length + count > MAX_SAFE_PARTICLES) { + count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length); + if (count <= 0) return; // Already at max capacity + } + + // Use faster bulk retrieval if available + var particles; + if (pool.getBulk) { + // Get multiple particles at once from pool + particles = pool.getBulk(Particle, count); + + // Fast-path batch initialization + this._initializeParticlesBulk(particles, initializes, behaviours); } else { - this.emitTime += time; - if (this.emitTime < this.totalTime) { - var _length = this.rate.getValue(time); - var _i; - if (_length > 0) this.emitSpeed = _length; - for (_i = 0; _i < _length; _i++) { - this.createParticle(); - } + // Fast path direct initialization - optimized for huge particle counts + this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours); + } + } + + /** + * High-speed loop for creating many particles + * @private + */; + _proto._createParticlesLoop = function _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) { + // Pre-calculate array growth to avoid resizing + particlesArr.length + count; + + // Handle array growth efficiently for large particle counts + if (particlesArr.length === 0 && count > 10000) { + try { + // Try to preallocate the array with correct capacity + particlesArr.length = count; + particlesArr.length = 0; // Reset but keep capacity + } catch (e) { + // Ignore if this optimization isn't supported + } + } + + // Cache values for dispatch check + var shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + var dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + + // Minimal particle creation loop - optimized for speed + var i = 0; + var particle; + + // Using while loop (faster than for loop in many JS engines) + while (i < count) { + // Get from pool + particle = pool.get(Particle); + + // Fastest possible reset + particle.reset(); + + // Direct initialize call with cached values + InitializeUtil.initialize(this, particle, initializes); + + // Add behaviors + particle.addBehaviours(behaviours); + particle.parent = this; + + // Push to array + particlesArr.push(particle); + + // Only dispatch if absolutely necessary + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); } + i++; } } /** - * create single particle; - * - * can use emit({x:10},new Gravity(10),{'particleUpdate',fun}) or emit([{x:10},new Initialize],new Gravity(10),{'particleUpdate',fun}) - * @method removeAllParticles + * Bulk initialization for particles - more efficient for large batches + * @private + */; + _proto._initializeParticlesBulk = function _initializeParticlesBulk(particles, initializes, behaviours) { + var count = particles.length; + var particlesArr = this.particles; + + // Cache values for dispatch check + var shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + var dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + + // One-time binding of this context for the loop + var emitter = this; + + // Bulk initialize particles + for (var i = 0; i < count; i++) { + var particle = particles[i]; + + // Initialize the particle directly + InitializeUtil.initialize(emitter, particle, initializes); + + // Set properties + particle.parent = emitter; + + // Add behaviors - use direct array if possible for better performance + particle.addBehaviours(behaviours); + + // Add to particles array + particlesArr.push(particle); + + // Only dispatch if necessary + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); + } + } + } + + /** + * High-performance batch particle creation for large quantities + * @param {Number} length - Number of particles to create + * @param {Object|Array} [initialize] - Initialization parameters + * @param {Object|Array} [behaviour] - Behavior parameters + */; + _proto.createParticlesBatch = function createParticlesBatch(length, initialize, behaviour) { + // Immediate redirect to fast creation when no custom initializers/behaviors + if (!initialize && !behaviour) { + this._fastCreateParticles(length); + return; + } + + // For huge batches, split into smaller chunks + var BATCH_SIZE = 5000; + if (length > BATCH_SIZE && length > 10000) { + // Process in chunks for very large particle counts + for (var i = 0; i < length; i += BATCH_SIZE) { + var chunkSize = Math.min(BATCH_SIZE, length - i); + this._createParticleChunk(chunkSize, initialize, behaviour); + } + } else { + // Process all at once for smaller batches + this._createParticleChunk(length, initialize, behaviour); + } + } + + /** + * Internal method to create a chunk of particles + * @private + */; + _proto._createParticleChunk = function _createParticleChunk(length, initialize, behaviour) { + // Early exit for zero particles + if (length <= 0) return; + + // Cache values for reuse + var parent = this.parent; + var pool = parent.pool; + var particlesArr = this.particles; + + // Check if we'd exceed max safe count + var MAX_SAFE_PARTICLES = 1000000; // 1 million particles max + if (particlesArr.length + length > MAX_SAFE_PARTICLES) { + length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length); + if (length <= 0) return; + } + + // Only calculate this once outside the loop + var shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + + // Handle initializes/behaviors + var initializes = initialize ? Util.toArray(initialize) : this.initializes; + var behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Pre-bind functions and cache properties for the loop + var dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + var emitter = this; + + // Pre-allocate capacity if possible + if (Array.prototype.reserve) { + var newCapacity = particlesArr.length + length; + if (particlesArr.capacity < newCapacity) { + particlesArr.reserve(newCapacity); + } + } + + // Creation loop - unrolled for performance + var i = 0; + var particle; + + // Fast loop with minimal overhead + while (i < length) { + particle = pool.get(Particle); + + // Fastest reset possible + particle.reset(); + + // Initialize using cached values + InitializeUtil.initialize(emitter, particle, initializes); + + // Add behaviors + particle.addBehaviours(behaviours); + particle.parent = emitter; + + // Add to particles array + particlesArr.push(particle); + + // Dispatch only if needed + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); + } + i++; + } + } + + /** + * Creates a single particle - now optimized for performance + * but batch methods should be preferred for multiple particles */; _proto.createParticle = function createParticle(initialize, behaviour) { + // Fast path when we have a parent + if (!this.parent) return null; var particle = this.parent.pool.get(Particle); - this.setupParticle(particle, initialize, behaviour); - this.dispatch("PARTICLE_CREATED", particle); + + // Direct setup + particle.reset(); + + // Handle initializes/behaviors + var initializes = initialize ? Util.toArray(initialize) : this.initializes; + var behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Initialize and add behaviors + InitializeUtil.initialize(this, particle, initializes); + particle.addBehaviours(behaviours); + particle.parent = this; + + // Add to array - directly push to avoid function call + this.particles.push(particle); + + // Only dispatch if needed and not too many particles + if ((this.parent || this.bindEvent) && this.particles.length < 10000) { + this.dispatch("PARTICLE_CREATED", particle); + } return particle; - }; + } + + /** + * Sets up a particle with initialization and behavior. + * @deprecated Use direct methods instead for better performance + */; _proto.setupParticle = function setupParticle(particle, initialize, behaviour) { - var initializes = this.initializes; - var behaviours = this.behaviours; - if (initialize) initializes = Util.toArray(initialize); - if (behaviour) behaviours = Util.toArray(behaviour); + // Direct setup particle.reset(); + + // Handle initializes/behaviors + var initializes = initialize ? Util.toArray(initialize) : this.initializes; + var behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Initialize InitializeUtil.initialize(this, particle, initializes); particle.addBehaviours(behaviours); particle.parent = this; + + // Add to array this.particles.push(particle); - }; + } + + /** + * Removes all particles and stops the emitter. + */; _proto.remove = function remove() { this.stop(); - Util.destroyAll(this.particles); + + // More efficient particle cleanup + var particles = this.particles; + var len = particles.length; + + // Return all particles to pool + if (this.parent && this.parent.pool) { + var pool = this.parent.pool; + for (var i = 0; i < len; i++) { + pool.expire(particles[i]); + } + } + + // Clear array in one operation + particles.length = 0; } /** @@ -3995,7 +4309,6 @@ this.Proton = (function () { EventDispatcher.bind(Emitter); var BehaviourEmitter = /*#__PURE__*/function (_Emitter) { - _inheritsLoose(BehaviourEmitter, _Emitter); /** * The BehaviourEmitter class inherits from Proton.Emitter * @@ -4018,6 +4331,7 @@ this.Proton = (function () { * @method addSelfBehaviour * @param {Proton.Behaviour} behaviour like this new Proton.Color('random') */ + _inheritsLoose(BehaviourEmitter, _Emitter); var _proto = BehaviourEmitter.prototype; _proto.addSelfBehaviour = function addSelfBehaviour() { for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) { @@ -4055,7 +4369,6 @@ this.Proton = (function () { }(Emitter); var FollowEmitter = /*#__PURE__*/function (_Emitter) { - _inheritsLoose(FollowEmitter, _Emitter); /** * The FollowEmitter class inherits from Proton.Emitter * @@ -4077,6 +4390,7 @@ this.Proton = (function () { _this.initEventHandler(); return _this; } + _inheritsLoose(FollowEmitter, _Emitter); var _proto = FollowEmitter.prototype; _proto.initEventHandler = function initEventHandler() { var _this2 = this; @@ -4247,26 +4561,6 @@ this.Proton = (function () { * @extends BaseRenderer */ var CanvasRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(CanvasRenderer, _BaseRenderer); - /** - * @type {object|null} - * @private - */ - - /** - * @type {CanvasRenderingContext2D} - * @private - */ - - /** - * @type {object} - * @private - */ - - /** - * @type {string} - */ - /** * Creates a new CanvasRenderer instance. * @param {HTMLCanvasElement} element - The canvas element to render on. @@ -4274,9 +4568,24 @@ this.Proton = (function () { function CanvasRenderer(element) { var _this; _this = _BaseRenderer.call(this, element) || this; + /** + * @type {object|null} + * @private + */ _this.stroke = void 0; + /** + * @type {CanvasRenderingContext2D} + * @private + */ _this.context = void 0; + /** + * @type {object} + * @private + */ _this.bufferCache = void 0; + /** + * @type {string} + */ _this.name = void 0; _this.stroke = null; _this.context = _this.element.getContext("2d"); @@ -4290,6 +4599,7 @@ this.Proton = (function () { * @param {number} width - The new width of the canvas. * @param {number} height - The new height of the canvas. */ + _inheritsLoose(CanvasRenderer, _BaseRenderer); var _proto = CanvasRenderer.prototype; _proto.resize = function resize(width, height) { this.element.width = width; @@ -4440,7 +4750,6 @@ this.Proton = (function () { * @extends BaseRenderer */ var DomRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(DomRenderer, _BaseRenderer); /** * Creates a new DomRenderer instance. * @param {HTMLElement} element - The HTML element to render to. @@ -4453,10 +4762,11 @@ this.Proton = (function () { _this.pool.create = function (body, particle) { return _this.createBody(body, particle); }; - _this.addImg2Body = _this.addImg2Body.bind(_assertThisInitialized(_this)); + _this.addImg2Body = _this.addImg2Body.bind(_this); _this.name = "DomRenderer"; return _this; } + _inheritsLoose(DomRenderer, _BaseRenderer); var _proto = DomRenderer.prototype; _proto.onParticleCreated = function onParticleCreated(particle) { if (particle.body) { @@ -4533,7 +4843,6 @@ this.Proton = (function () { }(BaseRenderer); var EaselRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(EaselRenderer, _BaseRenderer); function EaselRenderer(element, stroke) { var _this; _this = _BaseRenderer.call(this, element) || this; @@ -4541,6 +4850,7 @@ this.Proton = (function () { _this.name = "EaselRenderer"; return _this; } + _inheritsLoose(EaselRenderer, _BaseRenderer); var _proto = EaselRenderer.prototype; _proto.onParticleCreated = function onParticleCreated(particle) { if (particle.body) { @@ -4604,7 +4914,6 @@ this.Proton = (function () { * @extends BaseRenderer */ var PixelRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(PixelRenderer, _BaseRenderer); /** * Creates a new PixelRenderer instance. * @param {HTMLCanvasElement} element - The canvas element to render to. @@ -4620,6 +4929,7 @@ this.Proton = (function () { _this.name = "PixelRenderer"; return _this; } + _inheritsLoose(PixelRenderer, _BaseRenderer); var _proto = PixelRenderer.prototype; _proto.resize = function resize(width, height) { this.element.width = width; @@ -4669,61 +4979,169 @@ this.Proton = (function () { var PIXIClass; + // Counter to generate unique IDs for each renderer instance + var rendererIdCounter = 0; + + /** + * A specialized pool that ensures particles are never shared between different emitters + */ + var EmitterAwarePool = /*#__PURE__*/function (_Pool) { + function EmitterAwarePool() { + var _this; + _this = _Pool.call(this) || this; + // Store pools by emitter ID to ensure separation + _this.emitterPools = new Map(); + return _this; + } + + /** + * Get an item from the pool, ensuring it's specific to the emitter + */ + _inheritsLoose(EmitterAwarePool, _Pool); + var _proto = EmitterAwarePool.prototype; + _proto.get = function get(target, params, emitterId) { + // Ensure we have a valid emitter ID + emitterId = emitterId || params && params.parent && params.parent.id || 'default'; + + // Get or create the emitter-specific pool + if (!this.emitterPools.has(emitterId)) { + this.emitterPools.set(emitterId, []); + } + var emitterPool = this.emitterPools.get(emitterId); + + // Get from the emitter-specific pool or create new + var p; + if (emitterPool.length > 0) { + p = emitterPool.pop(); + } else { + p = this.createOrClone(target, params); + // Tag with emitter ID for tracking + p.__emitterId = emitterId; + } + return p; + } + + /** + * Return an item to its emitter-specific pool + */; + _proto.expire = function expire(target, emitterId) { + if (!emitterId && target.__emitterId) { + emitterId = target.__emitterId; + } + + // Default to the general pool if no emitter ID is found + emitterId = emitterId || 'default'; + + // Get or create the emitter-specific pool + if (!this.emitterPools.has(emitterId)) { + this.emitterPools.set(emitterId, []); + } + + // Return to the emitter-specific pool + return this.emitterPools.get(emitterId).push(target); + } + + /** + * Clean up all pools + */; + _proto.destroy = function destroy() { + _Pool.prototype.destroy.call(this); + + // Clear all emitter-specific pools + this.emitterPools.forEach(function (pool) { + pool.length = 0; + }); + this.emitterPools.clear(); + this.emitterPools = null; + }; + return EmitterAwarePool; + }(Pool); /** * Represents a PIXI-based renderer for particle systems. * @extends BaseRenderer */ var PixiRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(PixiRenderer, _BaseRenderer); /** * Creates a new PixiRenderer instance. * @param {PIXI.Container} element - The PIXI container to render to. * @param {string|number} [stroke] - The stroke color for particles. */ function PixiRenderer(element, stroke) { - var _this; - _this = _BaseRenderer.call(this, element) || this; - _this.stroke = stroke; - _this.color = false; - _this.setColor = false; - _this.blendMode = null; - _this.pool.create = function (body, particle) { - return _this.createBody(body, particle); + var _this2; + _this2 = _BaseRenderer.call(this, element) || this; + _this2.stroke = stroke; + _this2.color = false; + _this2.setColor = false; + _this2.blendMode = null; + + // Assign a unique ID to this renderer instance + _this2.rendererId = ++rendererIdCounter; + + // Create a new emitter-aware pool for this renderer + _this2.pixiPool = new EmitterAwarePool(); + _this2.pixiPool.create = function (body, particle) { + return _this2.createBody(body, particle); }; - _this.setPIXI(window.PIXI); - _this.name = "PixiRenderer"; - return _this; + + // Track emitters and their particles + _this2.emitterMap = new Map(); + _this2.setPIXI(window.PIXI); + _this2.name = "PixiRenderer"; + return _this2; } - var _proto = PixiRenderer.prototype; - _proto.setPIXI = function setPIXI(PIXI) { + _inheritsLoose(PixiRenderer, _BaseRenderer); + var _proto2 = PixiRenderer.prototype; + _proto2.setPIXI = function setPIXI(PIXI) { try { PIXIClass = PIXI || { Sprite: {} }; - this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage; + this.createFromImage = PIXIClass.Sprite.from; } catch (e) {} }; - _proto.onProtonUpdate = function onProtonUpdate() {} + _proto2.onProtonUpdate = function onProtonUpdate() {}; + _proto2.onEmitterAdded = function onEmitterAdded(emitter) { + // Add emitter to tracking map + if (!this.emitterMap.has(emitter.id)) { + this.emitterMap.set(emitter.id, new Set()); + } + }; + _proto2.onEmitterRemoved = function onEmitterRemoved(emitter) { + // Clean up emitter's tracked particles + if (this.emitterMap.has(emitter.id)) { + this.emitterMap.delete(emitter.id); + } + } /** * @param particle */; - _proto.onParticleCreated = function onParticleCreated(particle) { + _proto2.onParticleCreated = function onParticleCreated(particle) { + // Get the emitter ID for this particle and store it directly on the particle + var emitterId = particle.parent ? particle.parent.id : 'orphaned'; + + // Store emitter ID directly on the particle for when parent reference is lost + particle.__emitterId = emitterId; if (particle.body) { - particle.body = this.pool.get(particle.body, particle); + particle.body = this.pixiPool.get(particle.body, particle, emitterId); } else { - particle.body = this.pool.get(this.circleConf, particle); + particle.body = this.pixiPool.get(this.circleConf, particle, emitterId); } if (this.blendMode) { particle.body.blendMode = this.blendMode; } + + // Track this particle with its emitter + if (this.emitterMap.has(emitterId)) { + this.emitterMap.get(emitterId).add(particle); + } this.element.addChild(particle.body); } /** * @param particle */; - _proto.onParticleUpdate = function onParticleUpdate(particle) { + _proto2.onParticleUpdate = function onParticleUpdate(particle) { this.transform(particle, particle.body); if (this.setColor === true || this.color === true) { particle.body.tint = ColorUtil.getHex16FromParticle(particle); @@ -4733,35 +5151,43 @@ this.Proton = (function () { /** * @param particle */; - _proto.onParticleDead = function onParticleDead(particle) { + _proto2.onParticleDead = function onParticleDead(particle) { + if (!particle.body) return; this.element.removeChild(particle.body); - this.pool.expire(particle.body); + + // Use the cached emitter ID instead of accessing parent which might be null + var emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned'); + + // Return to the emitter-specific pool + this.pixiPool.expire(particle.body, emitterId); + + // Remove from tracked particles + if (this.emitterMap.has(emitterId)) { + this.emitterMap.get(emitterId).delete(particle); + } particle.body = null; }; - _proto.transform = function transform(particle, target) { + _proto2.transform = function transform(particle, target) { target.x = particle.p.x; target.y = particle.p.y; target.alpha = particle.alpha; target.scale.x = particle.scale; target.scale.y = particle.scale; - - // using cached version of MathUtil.PI_180 for slight performance increase. - target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180; + target.rotation = particle.rotation * MathUtil.PI_180; }; - _proto.createBody = function createBody(body, particle) { + _proto2.createBody = function createBody(body, particle) { if (body.isCircle) return this.createCircle(particle);else return this.createSprite(body); }; - _proto.createSprite = function createSprite(body) { + _proto2.createSprite = function createSprite(body) { var sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body); - sprite.anchor.x = 0.5; - sprite.anchor.y = 0.5; + sprite.anchor.set(0.5, 0.5); return sprite; }; - _proto.createCircle = function createCircle(particle) { + _proto2.createCircle = function createCircle(particle) { var graphics = new PIXIClass.Graphics(); if (this.stroke) { var stroke = Types.isString(this.stroke) ? this.stroke : 0x000000; - graphics.beginStroke(stroke); + graphics.lineStyle(1, stroke); } graphics.beginFill(particle.color || 0x008ced); graphics.drawCircle(0, 0, particle.radius); @@ -4773,13 +5199,24 @@ this.Proton = (function () { * Destroys the renderer and cleans up resources. * @param {Array} particles - The particles to clean up. */; - _proto.destroy = function destroy(particles) { + _proto2.destroy = function destroy(particles) { _BaseRenderer.prototype.destroy.call(this); + + // Clean up tracking maps + this.emitterMap.clear(); + this.emitterMap = null; + + // Clean up the instance-specific particle pool + this.pixiPool.destroy(); + this.pixiPool = null; var i = particles.length; while (i--) { var particle = particles[i]; if (particle.body) { this.element.removeChild(particle.body); + particle.body.destroy({ + children: true + }); } } }; @@ -4790,9 +5227,7 @@ this.Proton = (function () { function MStack() { this.mats = []; this.size = 0; - for (var i = 0; i < 20; i++) { - this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0])); - } + for (var i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0])); } var _proto = MStack.prototype; _proto.set = function set(m, i) { @@ -4817,7 +5252,6 @@ this.Proton = (function () { * @extends BaseRenderer */ var WebGLRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(WebGLRenderer, _BaseRenderer); /** * Creates a new WebGLRenderer instance. * @param {HTMLCanvasElement} element - The canvas element to render to. @@ -4838,10 +5272,11 @@ this.Proton = (function () { _this.gl.blendEquation(_this.gl.FUNC_ADD); _this.gl.blendFunc(_this.gl.SRC_ALPHA, _this.gl.ONE_MINUS_SRC_ALPHA); _this.gl.enable(_this.gl.BLEND); - _this.addImg2Body = _this.addImg2Body.bind(_assertThisInitialized(_this)); + _this.addImg2Body = _this.addImg2Body.bind(_this); _this.name = "WebGLRenderer"; return _this; } + _inheritsLoose(WebGLRenderer, _BaseRenderer); var _proto = WebGLRenderer.prototype; _proto.init = function init(proton) { _BaseRenderer.prototype.init.call(this, proton); @@ -4918,17 +5353,13 @@ this.Proton = (function () { this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW); var i; var ids = []; - for (i = 0; i < 100; i++) { - ids.push(i); - } + for (i = 0; i < 100; i++) ids.push(i); idx = new Uint16Array(ids); this.unitI33 = this.gl.createBuffer(); this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33); this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW); ids = []; - for (i = 0; i < 100; i++) { - ids.push(i, i + 1, i + 2); - } + for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2); idx = new Uint16Array(ids); this.stripBuffer = this.gl.createBuffer(); this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer); @@ -5046,7 +5477,6 @@ this.Proton = (function () { * @extends BaseRenderer */ var CustomRenderer = /*#__PURE__*/function (_BaseRenderer) { - _inheritsLoose(CustomRenderer, _BaseRenderer); /** * Creates a new CustomRenderer instance. * @param {HTMLElement} element - The HTML element to render to. @@ -5062,6 +5492,7 @@ this.Proton = (function () { _this.name = "CustomRenderer"; return _this; } + _inheritsLoose(CustomRenderer, _BaseRenderer); return CustomRenderer; }(BaseRenderer); @@ -5070,7 +5501,6 @@ this.Proton = (function () { * @extends Zone */ var LineZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(LineZone, _Zone); /** * Creates a new LineZone. * @param {number} x1 - The x-coordinate of the first point. @@ -5114,6 +5544,7 @@ this.Proton = (function () { * Gets a random position on the line. * @returns {Vector2D} A vector representing the random position. */ + _inheritsLoose(LineZone, _Zone); var _proto = LineZone.prototype; _proto.getPosition = function getPosition() { this.random = Math.random(); @@ -5236,7 +5667,6 @@ this.Proton = (function () { * @extends Zone */ var CircleZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(CircleZone, _Zone); /** * Creates a new CircleZone. * @param {number} x - The x-coordinate of the circle's center. @@ -5261,6 +5691,7 @@ this.Proton = (function () { * Gets a random position within the circle. * @returns {Object} An object with x and y coordinates. */ + _inheritsLoose(CircleZone, _Zone); var _proto = CircleZone.prototype; _proto.getPosition = function getPosition() { this.angle = MathUtil.PIx2 * Math.random(); @@ -5328,7 +5759,6 @@ this.Proton = (function () { * @extends Zone */ var RectZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(RectZone, _Zone); /** * Creates a new RectZone. * @param {number} x - The x-coordinate of the top-left corner of the rectangle. @@ -5356,6 +5786,7 @@ this.Proton = (function () { * Gets a random position within the rectangular zone. * @returns {Vector2D} A vector representing the random position. */ + _inheritsLoose(RectZone, _Zone); var _proto = RectZone.prototype; _proto.getPosition = function getPosition() { this.vector.x = this.x + Math.random() * this.width; @@ -5414,7 +5845,6 @@ this.Proton = (function () { * @extends Zone */ var ImageZone = /*#__PURE__*/function (_Zone) { - _inheritsLoose(ImageZone, _Zone); /** * Creates an ImageZone. * @param {ImageData} imageData - The image data to use for the zone. @@ -5436,6 +5866,7 @@ this.Proton = (function () { * @param {number} [y=0] - The y-coordinate offset. * @param {number} [d=2] - The sampling density. */ + _inheritsLoose(ImageZone, _Zone); var _proto = ImageZone.prototype; _proto.reset = function reset(imageData, x, y, d) { this.imageData = imageData; @@ -5649,4 +6080,4 @@ this.Proton = (function () { return Proton; })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9uLndlYi5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzL1dlYkdMVXRpbC5qcyIsIi4uL3NyYy91dGlscy9Eb21VdGlsLmpzIiwiLi4vc3JjL3V0aWxzL0ltZ1V0aWwuanMiLCIuLi9zcmMvdXRpbHMvVXRpbC5qcyIsIi4uL3NyYy91dGlscy9QdWlkLmpzIiwiLi4vc3JjL2NvcmUvUG9vbC5qcyIsIi4uL3NyYy9kZWJ1Zy9TdGF0cy5qcyIsIi4uL3NyYy9ldmVudHMvRXZlbnREaXNwYXRjaGVyLmpzIiwiLi4vc3JjL21hdGgvTWF0aFV0aWwuanMiLCIuLi9zcmMvbWF0aC9JbnRlZ3JhdGlvbi5qcyIsIi4uL3NyYy9jb3JlL1Byb3Rvbi5qcyIsIi4uL3NyYy91dGlscy9SZ2IuanMiLCIuLi9zcmMvbWF0aC9TcGFuLmpzIiwiLi4vc3JjL3V0aWxzL1Byb3BVdGlsLmpzIiwiLi4vc3JjL21hdGgvZWFzZS5qcyIsIi4uL3NyYy9tYXRoL1ZlY3RvcjJELmpzIiwiLi4vc3JjL2NvcmUvUGFydGljbGUuanMiLCIuLi9zcmMvdXRpbHMvQ29sb3JVdGlsLmpzIiwiLi4vc3JjL21hdGgvUG9sYXIyRC5qcyIsIi4uL3NyYy9tYXRoL01hdDMuanMiLCIuLi9zcmMvbWF0aC9BcnJheVNwYW4uanMiLCIuLi9zcmMvbWF0aC9SZWN0YW5nbGUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9SYXRlLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvSW5pdGlhbGl6ZS5qcyIsIi4uL3NyYy9pbml0aWFsaXplL0xpZmUuanMiLCIuLi9zcmMvem9uZS9ab25lLmpzIiwiLi4vc3JjL3pvbmUvUG9pbnRab25lLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvUG9zaXRpb24uanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9WZWxvY2l0eS5qcyIsIi4uL3NyYy9pbml0aWFsaXplL01hc3MuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9SYWRpdXMuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Cb2R5LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9CZWhhdmlvdXIuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0ZvcmNlLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9BdHRyYWN0aW9uLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9SYW5kb21EcmlmdC5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvR3Jhdml0eS5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvQ29sbGlzaW9uLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Dcm9zc1pvbmUuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0FscGhhLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9TY2FsZS5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Db2xvci5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvQ3ljbG9uZS5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvUmVwdWxzaW9uLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9HcmF2aXR5V2VsbC5qcyIsIi4uL3NyYy9pbml0aWFsaXplL0luaXRpYWxpemVVdGlsLmpzIiwiLi4vc3JjL2VtaXR0ZXIvRW1pdHRlci5qcyIsIi4uL3NyYy9lbWl0dGVyL0JlaGF2aW91ckVtaXR0ZXIuanMiLCIuLi9zcmMvZW1pdHRlci9Gb2xsb3dFbWl0dGVyLmpzIiwiLi4vc3JjL3V0aWxzL1R5cGVzLmpzIiwiLi4vc3JjL3JlbmRlci9CYXNlUmVuZGVyZXIuanMiLCIuLi9zcmMvcmVuZGVyL0NhbnZhc1JlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9Eb21SZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvRWFzZWxSZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvUGl4ZWxSZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvUGl4aVJlbmRlcmVyLmpzIiwiLi4vc3JjL3V0aWxzL01TdGFjay5qcyIsIi4uL3NyYy9yZW5kZXIvV2ViR0xSZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvQ3VzdG9tUmVuZGVyZXIuanMiLCIuLi9zcmMvem9uZS9MaW5lWm9uZS5qcyIsIi4uL3NyYy96b25lL0NpcmNsZVpvbmUuanMiLCIuLi9zcmMvem9uZS9SZWN0Wm9uZS5qcyIsIi4uL3NyYy96b25lL0ltYWdlWm9uZS5qcyIsIi4uL3NyYy9kZWJ1Zy9EZWJ1Zy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBpcG90XG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgbGVuZ3RoIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBsZW5ndGhcbiAgICpcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIGlwb3QobGVuZ3RoKSB7XG4gICAgcmV0dXJuIChsZW5ndGggJiAobGVuZ3RoIC0gMSkpID09PSAwO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBuaHBvdFxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIGxlbmd0aCBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gbGVuZ3RoXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIG5ocG90KGxlbmd0aCkge1xuICAgIC0tbGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMzI7IGkgPDw9IDEpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IChsZW5ndGggPj4gaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlbmd0aCArIDE7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIG1ha2VUcmFuc2xhdGlvblxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHR4LCB0eSBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgcmV0dXJuIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0eCBlaXRoZXIgMCBvciAxXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0eSBlaXRoZXIgMCBvciAxXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIG1ha2VUcmFuc2xhdGlvbih0eCwgdHkpIHtcbiAgICByZXR1cm4gWzEsIDAsIDAsIDAsIDEsIDAsIHR4LCB0eSwgMV07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIG1ha2VSb3RhdGlvblxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYW5nbGVJblJhZGlhbnNcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgbWFrZVJvdGF0aW9uKGFuZ2xlSW5SYWRpYW5zKSB7XG4gICAgbGV0IGMgPSBNYXRoLmNvcyhhbmdsZUluUmFkaWFucyk7XG4gICAgbGV0IHMgPSBNYXRoLnNpbihhbmdsZUluUmFkaWFucyk7XG5cbiAgICByZXR1cm4gW2MsIC1zLCAwLCBzLCBjLCAwLCAwLCAwLCAxXTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVNjYWxlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgdHgsIHR5IGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCByZXR1cm4gZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHN4IGVpdGhlciAwIG9yIDFcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHN5IGVpdGhlciAwIG9yIDFcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgbWFrZVNjYWxlKHN4LCBzeSkge1xuICAgIHJldHVybiBbc3gsIDAsIDAsIDAsIHN5LCAwLCAwLCAwLCAxXTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWF0cml4TXVsdGlwbHlcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCBhLCBiIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCByZXR1cm4gZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGFcbiAgICogQHBhcmFtIHtPYmplY3R9IGJcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgbWF0cml4TXVsdGlwbHkoYSwgYikge1xuICAgIGxldCBhMDAgPSBhWzAgKiAzICsgMF07XG4gICAgbGV0IGEwMSA9IGFbMCAqIDMgKyAxXTtcbiAgICBsZXQgYTAyID0gYVswICogMyArIDJdO1xuICAgIGxldCBhMTAgPSBhWzEgKiAzICsgMF07XG4gICAgbGV0IGExMSA9IGFbMSAqIDMgKyAxXTtcbiAgICBsZXQgYTEyID0gYVsxICogMyArIDJdO1xuICAgIGxldCBhMjAgPSBhWzIgKiAzICsgMF07XG4gICAgbGV0IGEyMSA9IGFbMiAqIDMgKyAxXTtcbiAgICBsZXQgYTIyID0gYVsyICogMyArIDJdO1xuICAgIGxldCBiMDAgPSBiWzAgKiAzICsgMF07XG4gICAgbGV0IGIwMSA9IGJbMCAqIDMgKyAxXTtcbiAgICBsZXQgYjAyID0gYlswICogMyArIDJdO1xuICAgIGxldCBiMTAgPSBiWzEgKiAzICsgMF07XG4gICAgbGV0IGIxMSA9IGJbMSAqIDMgKyAxXTtcbiAgICBsZXQgYjEyID0gYlsxICogMyArIDJdO1xuICAgIGxldCBiMjAgPSBiWzIgKiAzICsgMF07XG4gICAgbGV0IGIyMSA9IGJbMiAqIDMgKyAxXTtcbiAgICBsZXQgYjIyID0gYlsyICogMyArIDJdO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIGEwMCAqIGIwMCArIGEwMSAqIGIxMCArIGEwMiAqIGIyMCxcbiAgICAgIGEwMCAqIGIwMSArIGEwMSAqIGIxMSArIGEwMiAqIGIyMSxcbiAgICAgIGEwMCAqIGIwMiArIGEwMSAqIGIxMiArIGEwMiAqIGIyMixcbiAgICAgIGExMCAqIGIwMCArIGExMSAqIGIxMCArIGExMiAqIGIyMCxcbiAgICAgIGExMCAqIGIwMSArIGExMSAqIGIxMSArIGExMiAqIGIyMSxcbiAgICAgIGExMCAqIGIwMiArIGExMSAqIGIxMiArIGExMiAqIGIyMixcbiAgICAgIGEyMCAqIGIwMCArIGEyMSAqIGIxMCArIGEyMiAqIGIyMCxcbiAgICAgIGEyMCAqIGIwMSArIGEyMSAqIGIxMSArIGEyMiAqIGIyMSxcbiAgICAgIGEyMCAqIGIwMiArIGEyMSAqIGIxMiArIGEyMiAqIGIyMlxuICAgIF07XG4gIH1cbn07XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IGNhbnZhcy4gVGhlIG9wYWNpdHkgaXMgYnkgZGVmYXVsdCBzZXQgdG8gMFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Eb21VdGlsXG4gICAqIEBtZXRob2QgY3JlYXRlQ2FudmFzXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSAkaWQgdGhlIGNhbnZhcycgaWRcbiAgICogQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCB0aGUgY2FudmFzJyB3aWR0aFxuICAgKiBAcGFyYW0ge051bWJlcn0gJGhlaWdodCB0aGUgY2FudmFzJyBoZWlnaHRcbiAgICogQHBhcmFtIHtTdHJpbmd9IFskcG9zaXRpb249YWJzb2x1dGVdIHRoZSBjYW52YXMnIHBvc2l0aW9uLCBkZWZhdWx0IGlzICdhYnNvbHV0ZSdcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgY3JlYXRlQ2FudmFzKGlkLCB3aWR0aCwgaGVpZ2h0LCBwb3NpdGlvbiA9IFwiYWJzb2x1dGVcIikge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG5cbiAgICBkb20uaWQgPSBpZDtcbiAgICBkb20ud2lkdGggPSB3aWR0aDtcbiAgICBkb20uaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGRvbS5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICBkb20uc3R5bGUucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLnRyYW5zZm9ybShkb20sIC01MDAsIC01MDAsIDAsIDApO1xuXG4gICAgcmV0dXJuIGRvbTtcbiAgfSxcblxuICBjcmVhdGVEaXYoaWQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBjb25zdCBkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXG4gICAgZG9tLmlkID0gaWQ7XG4gICAgZG9tLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgIHRoaXMucmVzaXplKGRvbSwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9LFxuXG4gIHJlc2l6ZShkb20sIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBkb20uc3R5bGUud2lkdGggPSB3aWR0aCArIFwicHhcIjtcbiAgICBkb20uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5tYXJnaW5MZWZ0ID0gLXdpZHRoIC8gMiArIFwicHhcIjtcbiAgICBkb20uc3R5bGUubWFyZ2luVG9wID0gLWhlaWdodCAvIDIgKyBcInB4XCI7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCBzY2FsZSgpLCByb3RhdGUoKSB0byBhIGdpdmVuIGRpdiBkb20gZm9yIGFsbCBicm93c2Vyc1xuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Eb21VdGlsXG4gICAqIEBtZXRob2QgdHJhbnNmb3JtXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTERpdkVsZW1lbnR9IGRpdlxuICAgKiBAcGFyYW0ge051bWJlcn0gJHhcbiAgICogQHBhcmFtIHtOdW1iZXJ9ICR5XG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkc2NhbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9ICRyb3RhdGVcbiAgICovXG4gIHRyYW5zZm9ybShkaXYsIHgsIHksIHNjYWxlLCByb3RhdGUpIHtcbiAgICBkaXYuc3R5bGUud2lsbENoYW5nZSA9IFwidHJhbnNmb3JtXCI7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3h9cHgsICR7eX1weCkgc2NhbGUoJHtzY2FsZX0pIHJvdGF0ZSgke3JvdGF0ZX1kZWcpYDtcbiAgICB0aGlzLmNzczMoZGl2LCBcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xuICB9LFxuXG4gIHRyYW5zZm9ybTNkKGRpdiwgeCwgeSwgc2NhbGUsIHJvdGF0ZSkge1xuICAgIGRpdi5zdHlsZS53aWxsQ2hhbmdlID0gXCJ0cmFuc2Zvcm1cIjtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHt4fXB4LCAke3l9cHgsIDApIHNjYWxlKCR7c2NhbGV9KSByb3RhdGUoJHtyb3RhdGV9ZGVnKWA7XG4gICAgdGhpcy5jc3MzKGRpdiwgXCJiYWNrZmFjZVZpc2liaWxpdHlcIiwgXCJoaWRkZW5cIik7XG4gICAgdGhpcy5jc3MzKGRpdiwgXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKTtcbiAgfSxcblxuICBjc3MzKGRpdiwga2V5LCB2YWwpIHtcbiAgICBjb25zdCBia2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cigxKTtcblxuICAgIGRpdi5zdHlsZVtgV2Via2l0JHtia2V5fWBdID0gdmFsO1xuICAgIGRpdi5zdHlsZVtgTW96JHtia2V5fWBdID0gdmFsO1xuICAgIGRpdi5zdHlsZVtgTyR7YmtleX1gXSA9IHZhbDtcbiAgICBkaXYuc3R5bGVbYG1zJHtia2V5fWBdID0gdmFsO1xuICAgIGRpdi5zdHlsZVtgJHtrZXl9YF0gPSB2YWw7XG4gIH1cbn07XG4iLCJpbXBvcnQgV2ViR0xVdGlsIGZyb20gXCIuL1dlYkdMVXRpbFwiO1xuaW1wb3J0IERvbVV0aWwgZnJvbSBcIi4vRG9tVXRpbFwiO1xuXG5jb25zdCBpbWdzQ2FjaGUgPSB7fTtcbmNvbnN0IGNhbnZhc0NhY2hlID0ge307XG5sZXQgY2FudmFzSWQgPSAwO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgZ2V0IHRoZSBpbWFnZSBkYXRhLiBJdCBjb3VsZCBiZSBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgUHJvdG9uLlpvbmUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBnZXRJbWFnZURhdGFcbiAgICpcbiAgICogQHBhcmFtIHtIVE1MQ2FudmFzRWxlbWVudH0gICBjb250ZXh0IGFueSBjYW52YXMsIG11c3QgYmUgYSAyZENvbnRleHQgJ2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpJ1xuICAgKiBAcGFyYW0ge09iamVjdH0gICAgICAgICAgICAgIGltYWdlICAgY291bGQgYmUgYW55IGRvbSBpbWFnZSwgZS5nLiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhpc0lzQW5JbWdUYWcnKTtcbiAgICogQHBhcmFtIHtQcm90b24uUmVjdGFuZ2xlfSAgICByZWN0XG4gICAqL1xuICBnZXRJbWFnZURhdGEoY29udGV4dCwgaW1hZ2UsIHJlY3QpIHtcbiAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgcmVjdC54LCByZWN0LnkpO1xuICAgIGNvbnN0IGltYWdlZGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XG4gICAgY29udGV4dC5jbGVhclJlY3QocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcblxuICAgIHJldHVybiBpbWFnZWRhdGE7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBnZXRJbWdGcm9tQ2FjaGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGRlc2NyaWJlIGZ1bmNcbiAgICpcbiAgICogQHBhcmFtIHtNaXhlZH0gICAgICAgICAgICAgICBpbWdcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9ICAgICBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59ICAgICAgICAgICAgIGRyYXdDYW52YXMgIHNldCB0byB0cnVlIGlmIGEgY2FudmFzIHNob3VsZCBiZSBzYXZlZCBpbnRvIHBhcnRpY2xlLmRhdGEuY2FudmFzXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gICAgICAgICAgICAgZnVuY1xuICAgKi9cbiAgZ2V0SW1nRnJvbUNhY2hlKGltZywgY2FsbGJhY2ssIHBhcmFtKSB7XG4gICAgY29uc3Qgc3JjID0gdHlwZW9mIGltZyA9PT0gXCJzdHJpbmdcIiA/IGltZyA6IGltZy5zcmM7XG5cbiAgICBpZiAoaW1nc0NhY2hlW3NyY10pIHtcbiAgICAgIGNhbGxiYWNrKGltZ3NDYWNoZVtzcmNdLCBwYXJhbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWFnZS5vbmxvYWQgPSBlID0+IHtcbiAgICAgICAgaW1nc0NhY2hlW3NyY10gPSBlLnRhcmdldDtcbiAgICAgICAgY2FsbGJhY2soaW1nc0NhY2hlW3NyY10sIHBhcmFtKTtcbiAgICAgIH07XG5cbiAgICAgIGltYWdlLnNyYyA9IHNyYztcbiAgICB9XG4gIH0sXG5cbiAgZ2V0Q2FudmFzRnJvbUNhY2hlKGltZywgY2FsbGJhY2ssIHBhcmFtKSB7XG4gICAgY29uc3Qgc3JjID0gaW1nLnNyYztcblxuICAgIGlmICghY2FudmFzQ2FjaGVbc3JjXSkge1xuICAgICAgY29uc3Qgd2lkdGggPSBXZWJHTFV0aWwubmhwb3QoaW1nLndpZHRoKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IFdlYkdMVXRpbC5uaHBvdChpbWcuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgY2FudmFzID0gRG9tVXRpbC5jcmVhdGVDYW52YXMoYHByb3Rvbl9jYW52YXNfY2FjaGVfJHsrK2NhbnZhc0lkfWAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG5cbiAgICAgIGNhbnZhc0NhY2hlW3NyY10gPSBjYW52YXM7XG4gICAgfVxuXG4gICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soY2FudmFzQ2FjaGVbc3JjXSwgcGFyYW0pO1xuXG4gICAgcmV0dXJuIGNhbnZhc0NhY2hlW3NyY107XG4gIH1cbn07XG4iLCJpbXBvcnQgSW1nVXRpbCBmcm9tIFwiLi9JbWdVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRlZmF1bHQgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBpbml0VmFsdWVcbiAgICpcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWUgYSBzcGVjaWZpYyB2YWx1ZSwgY291bGQgYmUgZXZlcnl0aGluZyBidXQgbnVsbCBvciB1bmRlZmluZWRcbiAgICogQHBhcmFtIHtNaXhlZH0gZGVmYXVsdHMgdGhlIGRlZmF1bHQgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBpbml0VmFsdWUodmFsdWUsIGRlZmF1bHRzKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBkZWZhdWx0cztcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZCBhcnJheVxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgaXNBcnJheVxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZSBBbnkgYXJyYXlcbiAgICpcbiAgICogQHJldHVybnMge0Jvb2xlYW59XG4gICAqL1xuICBpc0FycmF5KHZhbHVlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBBcnJheV1cIjtcbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveWVzIHRoZSBnaXZlbiBhcnJheVxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgZW1wdHlBcnJheVxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBBbnkgYXJyYXlcbiAgICovXG4gIGVtcHR5QXJyYXkoYXJyKSB7XG4gICAgaWYgKGFycikgYXJyLmxlbmd0aCA9IDA7XG4gIH0sXG5cbiAgdG9BcnJheShhcnIpIHtcbiAgICByZXR1cm4gdGhpcy5pc0FycmF5KGFycikgPyBhcnIgOiBbYXJyXTtcbiAgfSxcblxuICBzbGljZUFycmF5KGFycjEsIGluZGV4LCBhcnIyKSB7XG4gICAgdGhpcy5lbXB0eUFycmF5KGFycjIpO1xuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycjIucHVzaChhcnIxW2ldKTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0UmFuZEZyb21BcnJheShhcnIpIHtcbiAgICBpZiAoIWFycikgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGFycltNYXRoLmZsb29yKGFyci5sZW5ndGggKiBNYXRoLnJhbmRvbSgpKV07XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlc3Ryb3llcyB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBlbXB0eU9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIEFueSBvYmplY3RcbiAgICovXG4gIGVtcHR5T2JqZWN0KG9iaiwgaWdub3JlID0gbnVsbCkge1xuICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChpZ25vcmUgJiYgaWdub3JlLmluZGV4T2Yoa2V5KSA+IC0xKSBjb250aW51ZTtcbiAgICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIE1ha2VzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgYW5kIGJpbmRzIHRoZSBnaXZlbiBhcnJheVxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgY2xhc3NBcHBseVxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25zdHJ1Y3RvciBBIGNsYXNzIHRvIG1ha2UgYW4gaW5zdGFuY2UgZnJvbVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnc10gQW55IGFycmF5IHRvIGJpbmQgaXQgdG8gdGhlIGNvbnN0cnVjdG9yXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH0gVGhlIGluc3RhbmNlIG9mIGNvbnN0cnVjdG9yLCBvcHRpb25hbGx5IGJpbmQgd2l0aCBhcmdzXG4gICAqL1xuICBjbGFzc0FwcGx5KGNvbnN0cnVjdG9yLCBhcmdzID0gbnVsbCkge1xuICAgIGlmICghYXJncykge1xuICAgICAgcmV0dXJuIG5ldyBjb25zdHJ1Y3RvcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBGYWN0b3J5RnVuYyA9IGNvbnN0cnVjdG9yLmJpbmQuYXBwbHkoY29uc3RydWN0b3IsIFtudWxsXS5jb25jYXQoYXJncykpO1xuICAgICAgcmV0dXJuIG5ldyBGYWN0b3J5RnVuYygpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGdldCB0aGUgaW1hZ2UgZGF0YS4gSXQgY291bGQgYmUgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIFByb3Rvbi5ab25lLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgZ2V0SW1hZ2VEYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTENhbnZhc0VsZW1lbnR9ICAgY29udGV4dCBhbnkgY2FudmFzLCBtdXN0IGJlIGEgMmRDb250ZXh0ICdjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSdcbiAgICogQHBhcmFtIHtPYmplY3R9ICAgICAgICAgICAgICBpbWFnZSAgIGNvdWxkIGJlIGFueSBkb20gaW1hZ2UsIGUuZy4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoaXNJc0FuSW1nVGFnJyk7XG4gICAqIEBwYXJhbSB7UHJvdG9uLlJlY3RhbmdsZX0gICAgcmVjdFxuICAgKi9cbiAgZ2V0SW1hZ2VEYXRhKGNvbnRleHQsIGltYWdlLCByZWN0KSB7XG4gICAgcmV0dXJuIEltZ1V0aWwuZ2V0SW1hZ2VEYXRhKGNvbnRleHQsIGltYWdlLCByZWN0KTtcbiAgfSxcblxuICBkZXN0cm95QWxsKGFyciwgcGFyYW0gPSBudWxsKSB7XG4gICAgbGV0IGkgPSBhcnIubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXJyW2ldLmRlc3Ryb3kocGFyYW0pO1xuICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgZGVsZXRlIGFycltpXTtcbiAgICB9XG5cbiAgICBhcnIubGVuZ3RoID0gMDtcbiAgfSxcblxuICBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHtcbiAgICBpZiAodHlwZW9mIE9iamVjdC5hc3NpZ24gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgZm9yIChsZXQga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpO1xuICAgIH1cbiAgfVxufTtcbiIsImNvbnN0IGlkc01hcCA9IHt9O1xuXG5jb25zdCBQdWlkID0ge1xuICBfaW5kZXg6IDAsXG4gIF9jYWNoZToge30sXG5cbiAgaWQodHlwZSkge1xuICAgIGlmIChpZHNNYXBbdHlwZV0gPT09IHVuZGVmaW5lZCB8fCBpZHNNYXBbdHlwZV0gPT09IG51bGwpIGlkc01hcFt0eXBlXSA9IDA7XG4gICAgcmV0dXJuIGAke3R5cGV9XyR7aWRzTWFwW3R5cGVdKyt9YDtcbiAgfSxcblxuICBnZXRJZCh0YXJnZXQpIHtcbiAgICBsZXQgdWlkID0gdGhpcy5nZXRJZEZyb21DYWNoZSh0YXJnZXQpO1xuICAgIGlmICh1aWQpIHJldHVybiB1aWQ7XG5cbiAgICB1aWQgPSBgUFVJRF8ke3RoaXMuX2luZGV4Kyt9YDtcbiAgICB0aGlzLl9jYWNoZVt1aWRdID0gdGFyZ2V0O1xuICAgIHJldHVybiB1aWQ7XG4gIH0sXG5cbiAgZ2V0SWRGcm9tQ2FjaGUodGFyZ2V0KSB7XG4gICAgbGV0IG9iaiwgaWQ7XG5cbiAgICBmb3IgKGlkIGluIHRoaXMuX2NhY2hlKSB7XG4gICAgICBvYmogPSB0aGlzLl9jYWNoZVtpZF07XG5cbiAgICAgIGlmIChvYmogPT09IHRhcmdldCkgcmV0dXJuIGlkO1xuICAgICAgaWYgKHRoaXMuaXNCb2R5KG9iaiwgdGFyZ2V0KSAmJiBvYmouc3JjID09PSB0YXJnZXQuc3JjKSByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgaXNCb2R5KG9iaiwgdGFyZ2V0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHRhcmdldCA9PT0gXCJvYmplY3RcIiAmJiBvYmouaXNJbm5lciAmJiB0YXJnZXQuaXNJbm5lcjtcbiAgfSxcblxuICBnZXRUYXJnZXQodWlkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlW3VpZF07XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFB1aWQ7XG4iLCIvKipcbiAqIFBvb2wgaXMgdGhlIGNhY2hlIHBvb2wgb2YgdGhlIHByb3RvbiBlbmdpbmUsIGl0IGlzIHZlcnkgaW1wb3J0YW50LlxuICpcbiAqIGdldCh0YXJnZXQsIHBhcmFtcywgdWlkKVxuICogIENsYXNzXG4gKiAgICB1aWQgPSBQdWlkLmdldElkIC0+IFB1aWQgc2F2ZSB0YXJnZXQgY2FjaGVcbiAqICAgIHRhcmdldC5fX3B1aWQgPSB1aWRcbiAqXG4gKiAgYm9keVxuICogICAgdWlkID0gUHVpZC5nZXRJZCAtPiBQdWlkIHNhdmUgdGFyZ2V0IGNhY2hlXG4gKlxuICpcbiAqIGV4cGlyZSh0YXJnZXQpXG4gKiAgY2FjaGVbdGFyZ2V0Ll9fcHVpZF0gcHVzaCB0YXJnZXRcbiAqXG4gKi9cbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgUHVpZCBmcm9tIFwiLi4vdXRpbHMvUHVpZFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb29sIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Qb29sXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gb2YgcHJvcGVydGllc1xuICAgKlxuICAgKiBAcHJvcGVydHkge051bWJlcn0gdG90YWxcbiAgICogQHByb3BlcnR5IHtPYmplY3R9IGNhY2hlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihudW0pIHtcbiAgICB0aGlzLnRvdGFsID0gMDtcbiAgICB0aGlzLmNhY2hlID0ge307XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgZ2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IHRhcmdldFxuICAgKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10ganVzdCBhZGQgaWYgYHRhcmdldGAgaXMgYSBmdW5jdGlvblxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBnZXQodGFyZ2V0LCBwYXJhbXMsIHVpZCkge1xuICAgIGxldCBwO1xuICAgIHVpZCA9IHVpZCB8fCB0YXJnZXQuX19wdWlkIHx8IFB1aWQuZ2V0SWQodGFyZ2V0KTtcblxuICAgIGlmICh0aGlzLmNhY2hlW3VpZF0gJiYgdGhpcy5jYWNoZVt1aWRdLmxlbmd0aCA+IDApIHtcbiAgICAgIHAgPSB0aGlzLmNhY2hlW3VpZF0ucG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAgPSB0aGlzLmNyZWF0ZU9yQ2xvbmUodGFyZ2V0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHAuX19wdWlkID0gdGFyZ2V0Ll9fcHVpZCB8fCB1aWQ7XG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBtZXRob2Qgc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHRhcmdldFxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBleHBpcmUodGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGUodGFyZ2V0Ll9fcHVpZCkucHVzaCh0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY2xhc3MgaW5zdGFuY2VcbiAgICpcbiAgICogQHRvZG8gYWRkIG1vcmUgZG9jdW1lbnRhdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIGNyZWF0ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Qb29sXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fEZ1bmN0aW9ufSB0YXJnZXQgYW55IE9iamVjdCBvciBGdW5jdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10ganVzdCBhZGQgaWYgYHRhcmdldGAgaXMgYSBmdW5jdGlvblxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBjcmVhdGVPckNsb25lKHRhcmdldCwgcGFyYW1zKSB7XG4gICAgdGhpcy50b3RhbCsrO1xuXG4gICAgaWYgKHRoaXMuY3JlYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGUodGFyZ2V0LCBwYXJhbXMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRhcmdldCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gVXRpbC5jbGFzc0FwcGx5KHRhcmdldCwgcGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhcmdldC5jbG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gLSB3aGF0IGlzIGluIHRoZSBjYWNoZT9cbiAgICpcbiAgICogQG1ldGhvZCBnZXRDb3VudFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Qb29sXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIGdldENvdW50KCkge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5jYWNoZSkgY291bnQgKz0gdGhpcy5jYWNoZVtpZF0ubGVuZ3RoO1xuICAgIHJldHVybiBjb3VudCsrO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3llcyBhbGwgaXRlbXMgZnJvbSBQb29sLmNhY2hlXG4gICAqXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Qb29sXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIGZvciAobGV0IGlkIGluIHRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuY2FjaGVbaWRdLmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5jYWNoZVtpZF07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgUG9vbC5jYWNoZVxuICAgKlxuICAgKiBAbWV0aG9kIGdldENhY2hlXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICogQHByaXZhdGVcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHVpZCB0aGUgdW5pcXVlIGlkXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGdldENhY2hlKHVpZCA9IFwiZGVmYXVsdFwiKSB7XG4gICAgaWYgKCF0aGlzLmNhY2hlW3VpZF0pIHRoaXMuY2FjaGVbdWlkXSA9IFtdO1xuICAgIHJldHVybiB0aGlzLmNhY2hlW3VpZF07XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRzIHtcbiAgY29uc3RydWN0b3IocHJvdG9uKSB7XG4gICAgdGhpcy5wcm90b24gPSBwcm90b247XG4gICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgIHRoaXMudHlwZSA9IDE7XG5cbiAgICB0aGlzLmVtaXR0ZXJJbmRleCA9IDA7XG4gICAgdGhpcy5yZW5kZXJlckluZGV4ID0gMDtcbiAgfVxuXG4gIHVwZGF0ZShzdHlsZSwgYm9keSkge1xuICAgIHRoaXMuYWRkKHN0eWxlLCBib2R5KTtcblxuICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzLmdldEVtaXR0ZXIoKTtcbiAgICBjb25zdCByZW5kZXJlciA9IHRoaXMuZ2V0UmVuZGVyZXIoKTtcbiAgICBsZXQgc3RyID0gXCJcIjtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHN0ciArPSBcImVtaXR0ZXI6XCIgKyB0aGlzLnByb3Rvbi5lbWl0dGVycy5sZW5ndGggKyBcIjxicj5cIjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHN0ciArPSBcImVtIHNwZWVkOlwiICsgZW1pdHRlci5lbWl0U3BlZWQgKyBcIjxicj5cIjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHN0ciArPSBcInBvczpcIiArIHRoaXMuZ2V0RW1pdHRlclBvcyhlbWl0dGVyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHN0ciArPSBcImluaXRpYWxpemVzOlwiICsgZW1pdHRlci5pbml0aWFsaXplcy5sZW5ndGggKyBcIjxicj5cIjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpXG4gICAgICAgICAgc3RyICs9ICc8c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO1wiPicgKyB0aGlzLmNvbmNhdEFycihlbWl0dGVyLmluaXRpYWxpemVzKSArIFwiPC9zcGFuPjxicj5cIjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHN0ciArPSBcImJlaGF2aW91cnM6XCIgKyBlbWl0dGVyLmJlaGF2aW91cnMubGVuZ3RoICsgXCI8YnI+XCI7XG4gICAgICAgIGlmIChlbWl0dGVyKSBzdHIgKz0gJzxzcGFuIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7XCI+JyArIHRoaXMuY29uY2F0QXJyKGVtaXR0ZXIuYmVoYXZpb3VycykgKyBcIjwvc3Bhbj48YnI+XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGlmIChyZW5kZXJlcikgc3RyICs9IHJlbmRlcmVyLm5hbWUgKyBcIjxicj5cIjtcbiAgICAgICAgaWYgKHJlbmRlcmVyKSBzdHIgKz0gXCJib2R5OlwiICsgdGhpcy5nZXRDcmVhdGVkTnVtYmVyKHJlbmRlcmVyKSArIFwiPGJyPlwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc3RyICs9IFwicGFydGljbGVzOlwiICsgdGhpcy5wcm90b24uZ2V0Q291bnQoKSArIFwiPGJyPlwiO1xuICAgICAgICBzdHIgKz0gXCJwb29sOlwiICsgdGhpcy5wcm90b24ucG9vbC5nZXRDb3VudCgpICsgXCI8YnI+XCI7XG4gICAgICAgIHN0ciArPSBcInRvdGFsOlwiICsgdGhpcy5wcm90b24ucG9vbC50b3RhbDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUwgPSBzdHI7XG4gIH1cblxuICBhZGQoc3R5bGUsIGJvZHkpIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLnR5cGUgPSAxO1xuXG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gW1xuICAgICAgICBcInBvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowcHg7bGVmdDowO2N1cnNvcjpwb2ludGVyO1wiLFxuICAgICAgICBcIm9wYWNpdHk6MC45O3otaW5kZXg6MTAwMDA7cGFkZGluZzoxMHB4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO1wiLFxuICAgICAgICBcIndpZHRoOjEyMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6IzAwMjtjb2xvcjojMGZmO1wiXG4gICAgICBdLmpvaW4oXCJcIik7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIFwiY2xpY2tcIixcbiAgICAgICAgZSA9PiB7XG4gICAgICAgICAgdGhpcy50eXBlKys7XG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA+IDQpIHRoaXMudHlwZSA9IDE7XG4gICAgICAgIH0sXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuXG4gICAgICBsZXQgYmcsIGNvbG9yO1xuICAgICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgYmcgPSBcIiMyMDFcIjtcbiAgICAgICAgICBjb2xvciA9IFwiI2YwOFwiO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBiZyA9IFwiIzAyMFwiO1xuICAgICAgICAgIGNvbG9yID0gXCIjMGYwXCI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBiZyA9IFwiIzAwMlwiO1xuICAgICAgICAgIGNvbG9yID0gXCIjMGZmXCI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlW1wiYmFja2dyb3VuZC1jb2xvclwiXSA9IGJnO1xuICAgICAgdGhpcy5jb250YWluZXIuc3R5bGVbXCJjb2xvclwiXSA9IGNvbG9yO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb250YWluZXIucGFyZW50Tm9kZSkge1xuICAgICAgYm9keSA9IGJvZHkgfHwgdGhpcy5ib2R5IHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICBib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbWl0dGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Rvbi5lbWl0dGVyc1t0aGlzLmVtaXR0ZXJJbmRleF07XG4gIH1cblxuICBnZXRSZW5kZXJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm90b24ucmVuZGVyZXJzW3RoaXMucmVuZGVyZXJJbmRleF07XG4gIH1cblxuICBjb25jYXRBcnIoYXJyKSB7XG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgaWYgKCFhcnIgfHwgIWFyci5sZW5ndGgpIHJldHVybiByZXN1bHQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IChhcnJbaV0ubmFtZSB8fCBcIlwiKS5zdWJzdHIoMCwgMSkgKyBcIi5cIjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0Q3JlYXRlZE51bWJlcihyZW5kZXJlcikge1xuICAgIHJldHVybiByZW5kZXJlci5wb29sLnRvdGFsIHx8IChyZW5kZXJlci5jcG9vbCAmJiByZW5kZXJlci5jcG9vbC50b3RhbCkgfHwgMDtcbiAgfVxuXG4gIGdldEVtaXR0ZXJQb3MoZSkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGUucC54KSArIFwiLFwiICsgTWF0aC5yb3VuZChlLnAueSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICBjb25zdCBib2R5ID0gdGhpcy5ib2R5IHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICBib2R5LnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3RvbiA9IG51bGw7XG4gICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICB9XG59XG4iLCIvKlxuICogRXZlbnREaXNwYXRjaGVyXG4gKiBUaGlzIGNvZGUgcmVmZXJlbmNlIHNpbmNlIGh0dHA6Ly9jcmVhdGVqcy5jb20vLlxuICpcbiAqKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXZlbnREaXNwYXRjaGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBiaW5kKHRhcmdldCkge1xuICAgIHRhcmdldC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudDtcbiAgICB0YXJnZXQucHJvdG90eXBlLmhhc0V2ZW50TGlzdGVuZXIgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmhhc0V2ZW50TGlzdGVuZXI7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyO1xuICAgIHRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcjtcbiAgICB0YXJnZXQucHJvdG90eXBlLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5yZW1vdmVBbGxFdmVudExpc3RlbmVycztcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzID0ge307XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnNbdHlwZV0pIHRoaXMuX2xpc3RlbmVyc1t0eXBlXSA9IFtdO1xuICAgIHRoaXMuX2xpc3RlbmVyc1t0eXBlXS5wdXNoKGxpc3RlbmVyKTtcblxuICAgIHJldHVybiBsaXN0ZW5lcjtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykgcmV0dXJuO1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzW3R5cGVdKSByZXR1cm47XG5cbiAgICBjb25zdCBhcnIgPSB0aGlzLl9saXN0ZW5lcnNbdHlwZV07XG4gICAgY29uc3QgbGVuZ3RoID0gYXJyLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJbaV0gPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW3R5cGVdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWxsb3dzIGZvciBmYXN0ZXIgY2hlY2tzLlxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhcnIuc3BsaWNlKGksIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnModHlwZSkge1xuICAgIGlmICghdHlwZSkgdGhpcy5fbGlzdGVuZXJzID0gbnVsbDtcbiAgICBlbHNlIGlmICh0aGlzLl9saXN0ZW5lcnMpIGRlbGV0ZSB0aGlzLl9saXN0ZW5lcnNbdHlwZV07XG4gIH1cblxuICBkaXNwYXRjaEV2ZW50KHR5cGUsIGFyZ3MpIHtcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzO1xuXG4gICAgaWYgKHR5cGUgJiYgbGlzdGVuZXJzKSB7XG4gICAgICBsZXQgYXJyID0gbGlzdGVuZXJzW3R5cGVdO1xuICAgICAgaWYgKCFhcnIpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgIC8vIGFyciA9IGFyci5zbGljZSgpO1xuICAgICAgLy8gdG8gYXZvaWQgaXNzdWVzIHdpdGggaXRlbXMgYmVpbmcgcmVtb3ZlZCBvciBhZGRlZCBkdXJpbmcgdGhlIGRpc3BhdGNoXG5cbiAgICAgIGxldCBoYW5kbGVyO1xuICAgICAgbGV0IGkgPSBhcnIubGVuZ3RoO1xuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICBoYW5kbGVyID0gYXJyW2ldO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgaGFuZGxlcihhcmdzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gISFyZXN1bHQ7XG4gIH1cblxuICBoYXNFdmVudExpc3RlbmVyKHR5cGUpIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7XG4gICAgcmV0dXJuICEhKGxpc3RlbmVycyAmJiBsaXN0ZW5lcnNbdHlwZV0pO1xuICB9XG59XG4iLCJjb25zdCBQSSA9IDMuMTQxNTkyNjtcbmNvbnN0IElORklOSVRZID0gSW5maW5pdHk7XG5cbmNvbnN0IE1hdGhVdGlsID0ge1xuICBQSTogUEksXG4gIFBJeDI6IFBJICogMixcbiAgUElfMjogUEkgLyAyLFxuICBQSV8xODA6IFBJIC8gMTgwLFxuICBOMTgwX1BJOiAxODAgLyBQSSxcbiAgSW5maW5pdHk6IC05OTksXG5cbiAgaXNJbmZpbml0eShudW0pIHtcbiAgICByZXR1cm4gbnVtID09PSB0aGlzLkluZmluaXR5IHx8IG51bSA9PT0gSU5GSU5JVFk7XG4gIH0sXG5cbiAgcmFuZG9tQVRvQihhLCBiLCBpc0ludCA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc0ludCkgcmV0dXJuIGEgKyBNYXRoLnJhbmRvbSgpICogKGIgLSBhKTtcbiAgICBlbHNlIHJldHVybiAoKE1hdGgucmFuZG9tKCkgKiAoYiAtIGEpKSA+PiAwKSArIGE7XG4gIH0sXG5cbiAgcmFuZG9tRmxvYXRpbmcoY2VudGVyLCBmLCBpc0ludCkge1xuICAgIHJldHVybiB0aGlzLnJhbmRvbUFUb0IoY2VudGVyIC0gZiwgY2VudGVyICsgZiwgaXNJbnQpO1xuICB9LFxuXG4gIHJhbmRvbUNvbG9yKCkge1xuICAgIHJldHVybiBcIiNcIiArIChcIjAwMDAwXCIgKyAoKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDApIDw8IDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpO1xuICB9LFxuXG4gIHJhbmRvbVpvbmUoZGlzcGxheSkge30sXG5cbiAgZmxvb3IobnVtLCBrID0gNCkge1xuICAgIGNvbnN0IGRpZ2l0cyA9IE1hdGgucG93KDEwLCBrKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gKiBkaWdpdHMpIC8gZGlnaXRzO1xuICB9LFxuXG4gIGRlZ3JlZVRyYW5zZm9ybShhKSB7XG4gICAgcmV0dXJuIChhICogUEkpIC8gMTgwO1xuICB9LFxuXG4gIHRvQ29sb3IxNihudW0pIHtcbiAgICByZXR1cm4gYCMke251bS50b1N0cmluZygxNil9YDtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWF0aFV0aWw7XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlZ3JhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgY2FsY3VsYXRlKHBhcnRpY2xlcywgdGltZSwgZGFtcGluZykge1xuICAgIHRoaXMuZXVsZXJJbnRlZ3JhdGUocGFydGljbGVzLCB0aW1lLCBkYW1waW5nKTtcbiAgfVxuXG4gIC8vIEV1bGVyIEludGVncmF0ZVxuICAvLyBodHRwczovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0V1bGVyX21ldGhvZFxuICBldWxlckludGVncmF0ZShwYXJ0aWNsZSwgdGltZSwgZGFtcGluZykge1xuICAgIGlmICghcGFydGljbGUuc2xlZXApIHtcbiAgICAgIHBhcnRpY2xlLm9sZC5wLmNvcHkocGFydGljbGUucCk7XG4gICAgICBwYXJ0aWNsZS5vbGQudi5jb3B5KHBhcnRpY2xlLnYpO1xuXG4gICAgICBwYXJ0aWNsZS5hLm11bHRpcGx5U2NhbGFyKDEgLyBwYXJ0aWNsZS5tYXNzKTtcbiAgICAgIHBhcnRpY2xlLnYuYWRkKHBhcnRpY2xlLmEubXVsdGlwbHlTY2FsYXIodGltZSkpO1xuICAgICAgcGFydGljbGUucC5hZGQocGFydGljbGUub2xkLnYubXVsdGlwbHlTY2FsYXIodGltZSkpO1xuXG4gICAgICBpZiAoZGFtcGluZykgcGFydGljbGUudi5tdWx0aXBseVNjYWxhcihkYW1waW5nKTtcblxuICAgICAgcGFydGljbGUuYS5jbGVhcigpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFBvb2wgZnJvbSBcIi4vUG9vbFwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBTdGF0cyBmcm9tIFwiLi4vZGVidWcvU3RhdHNcIjtcbmltcG9ydCBFdmVudERpc3BhdGNoZXIgZnJvbSBcIi4uL2V2ZW50cy9FdmVudERpc3BhdGNoZXJcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IEludGVncmF0aW9uIGZyb20gXCIuLi9tYXRoL0ludGVncmF0aW9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb3RvbiB7XG4gIHN0YXRpYyBVU0VfQ0xPQ0sgPSBmYWxzZTtcblxuICAvLyBtZWFzdXJlIDE6MTAwXG4gIHN0YXRpYyBNRUFTVVJFID0gMTAwO1xuICBzdGF0aWMgRVVMRVIgPSBcImV1bGVyXCI7XG4gIHN0YXRpYyBSSzIgPSBcInJ1bmdlLWt1dHRhMlwiO1xuXG4gIC8vIGV2ZW50IG5hbWVcbiAgc3RhdGljIFBBUlRJQ0xFX0NSRUFURUQgPSBcIlBBUlRJQ0xFX0NSRUFURURcIjtcbiAgc3RhdGljIFBBUlRJQ0xFX1VQREFURSA9IFwiUEFSVElDTEVfVVBEQVRFXCI7XG4gIHN0YXRpYyBQQVJUSUNMRV9TTEVFUCA9IFwiUEFSVElDTEVfU0xFRVBcIjtcbiAgc3RhdGljIFBBUlRJQ0xFX0RFQUQgPSBcIlBBUlRJQ0xFX0RFQURcIjtcblxuICBzdGF0aWMgRU1JVFRFUl9BRERFRCA9IFwiRU1JVFRFUl9BRERFRFwiO1xuICBzdGF0aWMgRU1JVFRFUl9SRU1PVkVEID0gXCJFTUlUVEVSX1JFTU9WRURcIjtcblxuICBzdGF0aWMgUFJPVE9OX1VQREFURSA9IFwiUFJPVE9OX1VQREFURVwiO1xuICBzdGF0aWMgUFJPVE9OX1VQREFURV9BRlRFUiA9IFwiUFJPVE9OX1VQREFURV9BRlRFUlwiO1xuICBzdGF0aWMgREVGQVVMVF9JTlRFUlZBTCA9IDAuMDE2NztcblxuICBzdGF0aWMgYW1lbmRDaGFuZ2VUYWJzQnVnID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdG9yIHRvIGFkZCBlbWl0dGVyc1xuICAgKlxuICAgKiBAY29uc3RydWN0b3IgUHJvdG9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBtb3JlIGRvY3VtZW50YXRpb24gb2YgdGhlIHNpbmdsZSBwcm9wZXJ0aWVzIGFuZCBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyIHwgdW5kZWZpbmVkfSBbaW50ZWdyYXRpb25UeXBlPVByb3Rvbi5FVUxFUl1cbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IFtpbnRlZ3JhdGlvblR5cGU9UHJvdG9uLkVVTEVSXVxuICAgKiBAcHJvcGVydHkge0FycmF5fSBlbWl0dGVycyAgIEFsbCBhZGRlZCBlbWl0dGVyXG4gICAqIEBwcm9wZXJ0eSB7QXJyYXl9IHJlbmRlcmVycyAgQWxsIGFkZGVkIHJlbmRlcmVyXG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0aW1lICAgICAgVGhlIGFjdGl2ZSB0aW1lXG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBvbGR0aW1lICAgVGhlIG9sZCB0aW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpbnRlZ3JhdGlvblR5cGUpIHtcbiAgICB0aGlzLmVtaXR0ZXJzID0gW107XG4gICAgdGhpcy5yZW5kZXJlcnMgPSBbXTtcblxuICAgIHRoaXMudGltZSA9IDA7XG4gICAgdGhpcy5ub3cgPSAwO1xuICAgIHRoaXMudGhlbiA9IDA7XG4gICAgdGhpcy5lbGFwc2VkID0gMDtcblxuICAgIHRoaXMuc3RhdHMgPSBuZXcgU3RhdHModGhpcyk7XG4gICAgdGhpcy5wb29sID0gbmV3IFBvb2woODApO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblR5cGUgPSBVdGlsLmluaXRWYWx1ZShpbnRlZ3JhdGlvblR5cGUsIFByb3Rvbi5FVUxFUik7XG4gICAgdGhpcy5pbnRlZ3JhdG9yID0gbmV3IEludGVncmF0aW9uKHRoaXMuaW50ZWdyYXRpb25UeXBlKTtcblxuICAgIHRoaXMuX2ZwcyA9IFwiYXV0b1wiO1xuICAgIHRoaXMuX2ludGVydmFsID0gUHJvdG9uLkRFRkFVTFRfSU5URVJWQUw7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZnJhbWVzIHBlciBzZWNvbmQgKEZQUykgZm9yIHRoZSBQcm90b24gc3lzdGVtLlxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZwcyAtIFRoZSBkZXNpcmVkIEZQUy4gVXNlIFwiYXV0b1wiIGZvciBkZWZhdWx0IGJlaGF2aW9yLCBvciBhIG51bWJlciBmb3IgYSBzcGVjaWZpYyBGUFMuXG4gICAqL1xuICBzZXQgZnBzKGZwcykge1xuICAgIHRoaXMuX2ZwcyA9IGZwcztcbiAgICB0aGlzLl9pbnRlcnZhbCA9IGZwcyA9PT0gXCJhdXRvXCIgPyBQcm90b24uREVGQVVMVF9JTlRFUlZBTCA6IE1hdGhVdGlsLmZsb29yKDEgLyBmcHMsIDcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgZnJhbWVzIHBlciBzZWNvbmQgKEZQUykgc2V0dGluZy5cbiAgICogQHJldHVybnMge251bWJlcnxzdHJpbmd9IFRoZSBjdXJyZW50IEZQUyBzZXR0aW5nLiBSZXR1cm5zIFwiYXV0b1wiIGlmIHNldCB0byBkZWZhdWx0LCBvciBhIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHNwZWNpZmljIEZQUy5cbiAgICovXG4gIGdldCBmcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZwcztcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgYSB0eXBlIG9mIFJlbmRlcmVyXG4gICAqXG4gICAqIEBtZXRob2QgYWRkUmVuZGVyZXJcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gcmVuZGVyXG4gICAqL1xuICBhZGRSZW5kZXJlcihyZW5kZXIpIHtcbiAgICByZW5kZXIuaW5pdCh0aGlzKTtcbiAgICB0aGlzLnJlbmRlcmVycy5wdXNoKHJlbmRlcik7XG4gIH1cblxuICAvKipcbiAgICogQG5hbWUgYWRkIGEgdHlwZSBvZiBSZW5kZXJlclxuICAgKlxuICAgKiBAbWV0aG9kIGFkZFJlbmRlcmVyXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlclxuICAgKi9cbiAgcmVtb3ZlUmVuZGVyZXIocmVuZGVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlbmRlcmVycy5pbmRleE9mKHJlbmRlcik7XG4gICAgdGhpcy5yZW5kZXJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZW5kZXIucmVtb3ZlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0aGUgRW1pdHRlclxuICAgKlxuICAgKiBAbWV0aG9kIGFkZEVtaXR0ZXJcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtFbWl0dGVyfSBlbWl0dGVyXG4gICAqL1xuICBhZGRFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICB0aGlzLmVtaXR0ZXJzLnB1c2goZW1pdHRlcik7XG4gICAgZW1pdHRlci5wYXJlbnQgPSB0aGlzO1xuXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5FTUlUVEVSX0FEREVELCBlbWl0dGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIEVtaXR0ZXJcbiAgICpcbiAgICogQG1ldGhvZCByZW1vdmVFbWl0dGVyXG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLkVtaXR0ZXJ9IGVtaXR0ZXJcbiAgICovXG4gIHJlbW92ZUVtaXR0ZXIoZW1pdHRlcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbWl0dGVycy5pbmRleE9mKGVtaXR0ZXIpO1xuICAgIHRoaXMuZW1pdHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBlbWl0dGVyLnBhcmVudCA9IG51bGw7XG5cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLkVNSVRURVJfUkVNT1ZFRCwgZW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhbGwgYWRkZWQgZW1pdHRlcnNcbiAgICpcbiAgICogQG1ldGhvZCB1cGRhdGVcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIHVwZGF0ZSgpIHtcbiAgICAvLyAnYXV0bycgaXMgdGhlIGRlZmF1bHQgYnJvd3NlciByZWZyZXNoIHJhdGUsIHRoZSB2YXN0IG1ham9yaXR5IGlzIDYwZnBzXG4gICAgaWYgKHRoaXMuX2ZwcyA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURSk7XG5cbiAgICAgIGlmIChQcm90b24uVVNFX0NMT0NLKSB7XG4gICAgICAgIGlmICghdGhpcy50aGVuKSB0aGlzLnRoZW4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgdGhpcy5ub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgdGhpcy5lbGFwc2VkID0gKHRoaXMubm93IC0gdGhpcy50aGVuKSAqIDAuMDAxO1xuICAgICAgICAvLyBGaXggYnVncyBzdWNoIGFzIGNocm9tZSBicm93c2VyIHN3aXRjaGluZyB0YWJzIGNhdXNpbmcgZXhjZXNzaXZlIHRpbWUgZGlmZmVyZW5jZVxuICAgICAgICB0aGlzLmFtZW5kQ2hhbmdlVGFic0J1ZygpO1xuXG4gICAgICAgIGlmICh0aGlzLmVsYXBzZWQgPiAwKSB0aGlzLmVtaXR0ZXJzVXBkYXRlKHRoaXMuZWxhcHNlZCk7XG4gICAgICAgIHRoaXMudGhlbiA9IHRoaXMubm93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbWl0dGVyc1VwZGF0ZShQcm90b24uREVGQVVMVF9JTlRFUlZBTCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURV9BRlRFUik7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGZwcyBmcmFtZSByYXRlIGlzIHNldFxuICAgIGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnRoZW4pIHRoaXMudGhlbiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5ub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIHRoaXMuZWxhcHNlZCA9ICh0aGlzLm5vdyAtIHRoaXMudGhlbikgKiAwLjAwMTtcblxuICAgICAgaWYgKHRoaXMuZWxhcHNlZCA+IHRoaXMuX2ludGVydmFsKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURSk7XG4gICAgICAgIHRoaXMuZW1pdHRlcnNVcGRhdGUodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xOTc2NDAxOC9jb250cm9sbGluZy1mcHMtd2l0aC1yZXF1ZXN0YW5pbWF0aW9uZnJhbWVcbiAgICAgICAgdGhpcy50aGVuID0gdGhpcy5ub3cgLSAodGhpcy5lbGFwc2VkICUgdGhpcy5faW50ZXJ2YWwpICogMTAwMDtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5QUk9UT05fVVBEQVRFX0FGVEVSKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbWl0dGVyc1VwZGF0ZShlbGFwc2VkKSB7XG4gICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB0aGlzLmVtaXR0ZXJzW2ldLnVwZGF0ZShlbGFwc2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG1ldGhvZCBhbWVuZENoYW5nZVRhYnNCdWdcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGFtZW5kQ2hhbmdlVGFic0J1ZygpIHtcbiAgICBpZiAoIVByb3Rvbi5hbWVuZENoYW5nZVRhYnNCdWcpIHJldHVybjtcbiAgICBpZiAodGhpcy5lbGFwc2VkID4gMC41KSB7XG4gICAgICB0aGlzLnRoZW4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIHRoaXMuZWxhcHNlZCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvdW50cyBhbGwgcGFydGljbGVzIGZyb20gYWxsIGVtaXR0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgZ2V0Q291bnRcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGdldENvdW50KCkge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHRvdGFsICs9IHRoaXMuZW1pdHRlcnNbaV0ucGFydGljbGVzLmxlbmd0aDtcbiAgICByZXR1cm4gdG90YWw7XG4gIH1cblxuICBnZXRBbGxQYXJ0aWNsZXMoKSB7XG4gICAgbGV0IHBhcnRpY2xlcyA9IFtdO1xuICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSBwYXJ0aWNsZXMgPSBwYXJ0aWNsZXMuY29uY2F0KHRoaXMuZW1pdHRlcnNbaV0ucGFydGljbGVzKTtcbiAgICByZXR1cm4gcGFydGljbGVzO1xuICB9XG5cbiAgZGVzdHJveUFsbEVtaXR0ZXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLmVtaXR0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBQcm90b24gaW5zdGFuY2UuIFRoaXMgaW5jbHVkZXMgYWxsIGVtaXR0ZXJzLCBhbmQgYWxsIHByb3BlcnRpZXNcbiAgICpcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqL1xuICBkZXN0cm95KHJlbW92ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgZGVzdHJveU90aGVyID0gKCkgPT4ge1xuICAgICAgdGhpcy50aW1lID0gMDtcbiAgICAgIHRoaXMudGhlbiA9IDA7XG4gICAgICB0aGlzLnBvb2wuZGVzdHJveSgpO1xuICAgICAgdGhpcy5zdGF0cy5kZXN0cm95KCk7XG5cbiAgICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLmVtaXR0ZXJzKTtcbiAgICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLnJlbmRlcmVycywgdGhpcy5nZXRBbGxQYXJ0aWNsZXMoKSk7XG5cbiAgICAgIHRoaXMuaW50ZWdyYXRvciA9IG51bGw7XG4gICAgICB0aGlzLnJlbmRlcmVycyA9IG51bGw7XG4gICAgICB0aGlzLmVtaXR0ZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuc3RhdHMgPSBudWxsO1xuICAgICAgdGhpcy5wb29sID0gbnVsbDtcbiAgICB9O1xuXG4gICAgaWYgKHJlbW92ZSkge1xuICAgICAgc2V0VGltZW91dChkZXN0cm95T3RoZXIsIDIwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc3Ryb3lPdGhlcigpO1xuICAgIH1cbiAgfVxufVxuXG5FdmVudERpc3BhdGNoZXIuYmluZChQcm90b24pO1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmdiIHtcbiAgY29uc3RydWN0b3IociA9IDI1NSwgZyA9IDI1NSwgYiA9IDI1NSkge1xuICAgIHRoaXMuciA9IHI7XG4gICAgdGhpcy5nID0gZztcbiAgICB0aGlzLmIgPSBiO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5yID0gMjU1O1xuICAgIHRoaXMuZyA9IDI1NTtcbiAgICB0aGlzLmIgPSAyNTU7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc3BhbiBvZiB2YWx1ZXMgb3IgYW4gYXJyYXkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwYW4ge1xuICAvKipcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBpc0FycmF5O1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7bnVtYmVyfG51bWJlcltdfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYTtcblxuICAvKipcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGI7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2VudGVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFNwYW4gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfG51bWJlcltdfSBhIC0gVGhlIGZpcnN0IHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtiXSAtIFRoZSBzZWNvbmQgdmFsdWUgKGlmIGEgaXMgbm90IGFuIGFycmF5KS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbY2VudGVyPWZhbHNlXSAtIFdoZXRoZXIgdG8gdXNlIGNlbnRlci1iYXNlZCBjYWxjdWxhdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGNlbnRlcikge1xuICAgIGlmIChVdGlsLmlzQXJyYXkoYSkpIHtcbiAgICAgIHRoaXMuaXNBcnJheSA9IHRydWU7XG4gICAgICB0aGlzLmEgPSBhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQXJyYXkgPSBmYWxzZTtcbiAgICAgIHRoaXMuYSA9IFV0aWwuaW5pdFZhbHVlKGEsIDEpO1xuICAgICAgdGhpcy5iID0gVXRpbC5pbml0VmFsdWUoYiwgdGhpcy5hKTtcbiAgICAgIHRoaXMuY2VudGVyID0gVXRpbC5pbml0VmFsdWUoY2VudGVyLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSB2YWx1ZSBmcm9tIHRoZSBzcGFuLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0ludD1mYWxzZV0gLSBXaGV0aGVyIHRvIHJldHVybiBhbiBpbnRlZ2VyIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBBIHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBzcGFuLlxuICAgKi9cbiAgZ2V0VmFsdWUoaXNJbnQgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmlzQXJyYXkpIHtcbiAgICAgIHJldHVybiBVdGlsLmdldFJhbmRGcm9tQXJyYXkodGhpcy5hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLmNlbnRlcikge1xuICAgICAgICByZXR1cm4gTWF0aFV0aWwucmFuZG9tQVRvQih0aGlzLmEsIHRoaXMuYiwgaXNJbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE1hdGhVdGlsLnJhbmRvbUZsb2F0aW5nKHRoaXMuYSwgdGhpcy5iLCBpc0ludCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgU3BhbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7KnxTcGFufSBhIC0gVGhlIGZpcnN0IHZhbHVlIG9yIGEgU3BhbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7Kn0gW2JdIC0gVGhlIHNlY29uZCB2YWx1ZS5cbiAgICogQHBhcmFtIHsqfSBbY10gLSBUaGUgdGhpcmQgdmFsdWUuXG4gICAqIEByZXR1cm5zIHtTcGFufSBBIG5ldyBTcGFuIGluc3RhbmNlLlxuICAgKi9cbiAgc3RhdGljIHNldFNwYW5WYWx1ZShhLCBiLCBjKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBTcGFuKSB7XG4gICAgICByZXR1cm4gYTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbmV3IFNwYW4oYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbmV3IFNwYW4oYSwgYik7XG4gICAgICAgIGVsc2UgcmV0dXJuIG5ldyBTcGFuKGEsIGIsIGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBmcm9tIGEgU3BhbiwgaWYgdGhlIHBhcmFtIGlzIG5vdCBhIFNwYW4gaXQgd2lsbCByZXR1cm4gdGhlIGdpdmVuIHBhcmFtZXRlci5cbiAgICogQHBhcmFtIHsqfFNwYW59IHBhbiAtIFRoZSB2YWx1ZSBvciBTcGFuIHRvIGdldCB0aGUgdmFsdWUgZnJvbS5cbiAgICogQHJldHVybnMgeyp9IFRoZSB2YWx1ZSBvZiBTcGFuIE9SIHRoZSBwYXJhbWV0ZXIgaWYgaXQgaXMgbm90IGEgU3Bhbi5cbiAgICovXG4gIHN0YXRpYyBnZXRTcGFuVmFsdWUocGFuKSB7XG4gICAgcmV0dXJuIHBhbiBpbnN0YW5jZW9mIFNwYW4gPyBwYW4uZ2V0VmFsdWUoKSA6IHBhbjtcbiAgfVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGhhc1Byb3AodGFyZ2V0LCBrZXkpIHtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIC8vIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoa2V5KTtcbiAgfSxcblxuICAvKipcbiAgICogc2V0IHRoZSBwcm90b3R5cGUgaW4gYSBnaXZlbiBwcm90b3R5cGVPYmplY3RcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIHNldFByb3BcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBwYXJhbSBgdGFyZ2V0YFxuICAgKiBAdG9kbyB0cmFuc2xhdGUgZGVzcmlwdGlvbiBmcm9tIGNoaW5lc2UgdG8gZW5nbGlzaFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGVPYmplY3QgQW4gb2JqZWN0IG9mIHNpbmdsZSBwcm90b3R5cGVzXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH0gdGFyZ2V0XG4gICAqL1xuICBzZXRQcm9wKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKGxldCBwcm9wIGluIHByb3BzKSB7XG4gICAgICBpZiAodGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIHRhcmdldFtwcm9wXSA9IFNwYW4uZ2V0U3BhblZhbHVlKHByb3BzW3Byb3BdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2Qgc2V0VmVjdG9yVmFsXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgcGFyYW0gYHRhcmdldGBcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBwYXJhbSBgY29uZmBcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBmdW5jdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25mXG4gICAqL1xuICBzZXRWZWN0b3JWYWwocGFydGljbGUsIGNvbmYgPSBudWxsKSB7XG4gICAgaWYgKCFjb25mKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwieFwiKSkgcGFydGljbGUucC54ID0gY29uZltcInhcIl07XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInlcIikpIHBhcnRpY2xlLnAueSA9IGNvbmZbXCJ5XCJdO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInZ4XCIpKSBwYXJ0aWNsZS52LnggPSBjb25mW1widnhcIl07XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInZ5XCIpKSBwYXJ0aWNsZS52LnkgPSBjb25mW1widnlcIl07XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwiYXhcIikpIHBhcnRpY2xlLmEueCA9IGNvbmZbXCJheFwiXTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwiYXlcIikpIHBhcnRpY2xlLmEueSA9IGNvbmZbXCJheVwiXTtcblxuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJwXCIpKSBwYXJ0aWNsZS5wLmNvcHkoY29uZltcInBcIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJ2XCIpKSBwYXJ0aWNsZS52LmNvcHkoY29uZltcInZcIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJhXCIpKSBwYXJ0aWNsZS5hLmNvcHkoY29uZltcImFcIl0pO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInBvc2l0aW9uXCIpKSBwYXJ0aWNsZS5wLmNvcHkoY29uZltcInBvc2l0aW9uXCJdKTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwidmVsb2NpdHlcIikpIHBhcnRpY2xlLnYuY29weShjb25mW1widmVsb2NpdHlcIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJhY2NlbGVyYXRlXCIpKSBwYXJ0aWNsZS5hLmNvcHkoY29uZltcImFjY2VsZXJhdGVcIl0pO1xuICB9XG59O1xuIiwiaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZWFzZUxpbmVhcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICBlYXNlSW5RdWFkKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCAyKTtcbiAgfSxcblxuICBlYXNlT3V0UXVhZCh2YWx1ZSkge1xuICAgIHJldHVybiAtKE1hdGgucG93KHZhbHVlIC0gMSwgMikgLSAxKTtcbiAgfSxcblxuICBlYXNlSW5PdXRRdWFkKHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCAyKTtcblxuICAgIHJldHVybiAtMC41ICogKCh2YWx1ZSAtPSAyKSAqIHZhbHVlIC0gMik7XG4gIH0sXG5cbiAgZWFzZUluQ3ViaWModmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codmFsdWUsIDMpO1xuICB9LFxuXG4gIGVhc2VPdXRDdWJpYyh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSAtIDEsIDMpICsgMTtcbiAgfSxcblxuICBlYXNlSW5PdXRDdWJpYyh2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdyh2YWx1ZSwgMyk7XG5cbiAgICByZXR1cm4gMC41ICogKE1hdGgucG93KHZhbHVlIC0gMiwgMykgKyAyKTtcbiAgfSxcblxuICBlYXNlSW5RdWFydCh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSwgNCk7XG4gIH0sXG5cbiAgZWFzZU91dFF1YXJ0KHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5wb3codmFsdWUgLSAxLCA0KSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbk91dFF1YXJ0KHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCA0KTtcblxuICAgIHJldHVybiAtMC41ICogKCh2YWx1ZSAtPSAyKSAqIE1hdGgucG93KHZhbHVlLCAzKSAtIDIpO1xuICB9LFxuXG4gIGVhc2VJblNpbmUodmFsdWUpIHtcbiAgICByZXR1cm4gLU1hdGguY29zKHZhbHVlICogTWF0aFV0aWwuUElfMikgKyAxO1xuICB9LFxuXG4gIGVhc2VPdXRTaW5lKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGguc2luKHZhbHVlICogTWF0aFV0aWwuUElfMik7XG4gIH0sXG5cbiAgZWFzZUluT3V0U2luZSh2YWx1ZSkge1xuICAgIHJldHVybiAtMC41ICogKE1hdGguY29zKE1hdGguUEkgKiB2YWx1ZSkgLSAxKTtcbiAgfSxcblxuICBlYXNlSW5FeHBvKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gMCA6IE1hdGgucG93KDIsIDEwICogKHZhbHVlIC0gMSkpO1xuICB9LFxuXG4gIGVhc2VPdXRFeHBvKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAxID8gMSA6IC1NYXRoLnBvdygyLCAtMTAgKiB2YWx1ZSkgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEV4cG8odmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IDApIHJldHVybiAwO1xuXG4gICAgaWYgKHZhbHVlID09PSAxKSByZXR1cm4gMTtcblxuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdygyLCAxMCAqICh2YWx1ZSAtIDEpKTtcblxuICAgIHJldHVybiAwLjUgKiAoLU1hdGgucG93KDIsIC0xMCAqIC0tdmFsdWUpICsgMik7XG4gIH0sXG5cbiAgZWFzZUluQ2lyYyh2YWx1ZSkge1xuICAgIHJldHVybiAtKE1hdGguc3FydCgxIC0gdmFsdWUgKiB2YWx1ZSkgLSAxKTtcbiAgfSxcblxuICBlYXNlT3V0Q2lyYyh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoMSAtIE1hdGgucG93KHZhbHVlIC0gMSwgMikpO1xuICB9LFxuXG4gIGVhc2VJbk91dENpcmModmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gLTAuNSAqIChNYXRoLnNxcnQoMSAtIHZhbHVlICogdmFsdWUpIC0gMSk7XG4gICAgcmV0dXJuIDAuNSAqIChNYXRoLnNxcnQoMSAtICh2YWx1ZSAtPSAyKSAqIHZhbHVlKSArIDEpO1xuICB9LFxuXG4gIGVhc2VJbkJhY2sodmFsdWUpIHtcbiAgICBsZXQgcyA9IDEuNzAxNTg7XG4gICAgcmV0dXJuIHZhbHVlICogdmFsdWUgKiAoKHMgKyAxKSAqIHZhbHVlIC0gcyk7XG4gIH0sXG5cbiAgZWFzZU91dEJhY2sodmFsdWUpIHtcbiAgICBsZXQgcyA9IDEuNzAxNTg7XG4gICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlIC0gMSkgKiB2YWx1ZSAqICgocyArIDEpICogdmFsdWUgKyBzKSArIDE7XG4gIH0sXG5cbiAgZWFzZUluT3V0QmFjayh2YWx1ZSkge1xuICAgIGxldCBzID0gMS43MDE1ODtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogKHZhbHVlICogdmFsdWUgKiAoKChzICo9IDEuNTI1KSArIDEpICogdmFsdWUgLSBzKSk7XG4gICAgcmV0dXJuIDAuNSAqICgodmFsdWUgLT0gMikgKiB2YWx1ZSAqICgoKHMgKj0gMS41MjUpICsgMSkgKiB2YWx1ZSArIHMpICsgMik7XG4gIH0sXG5cbiAgZ2V0RWFzaW5nKGVhc2UpIHtcbiAgICBpZiAodHlwZW9mIGVhc2UgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGVhc2U7XG4gICAgZWxzZSByZXR1cm4gdGhpc1tlYXNlXSB8fCB0aGlzLmVhc2VMaW5lYXI7XG4gIH1cbn07XG4iLCJpbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVjdG9yMkQge1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgeDtcblxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgeTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBWZWN0b3IyRCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt4PTBdIC0gVGhlIHggY29vcmRpbmF0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5PTBdIC0gVGhlIHkgY29vcmRpbmF0ZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4IHx8IDA7XG4gICAgdGhpcy55ID0geSB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHggYW5kIHkgY29tcG9uZW50cyBvZiB0aGlzIHZlY3Rvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeCBjb29yZGluYXRlLlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5IGNvb3JkaW5hdGUuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBzZXQoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB4IGNvbXBvbmVudCBvZiB0aGlzIHZlY3Rvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeCBjb29yZGluYXRlLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgc2V0WCh4KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB5IGNvbXBvbmVudCBvZiB0aGlzIHZlY3Rvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeSBjb29yZGluYXRlLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgc2V0WSh5KSB7XG4gICAgdGhpcy55ID0geTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBncmFkaWVudCAoYW5nbGUpIG9mIHRoaXMgdmVjdG9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZ3JhZGllbnQgaW4gcmFkaWFucy5cbiAgICovXG4gIGdldEdyYWRpZW50KCkge1xuICAgIGlmICh0aGlzLnggIT09IDApIHJldHVybiBNYXRoLmF0YW4yKHRoaXMueSwgdGhpcy54KTtcbiAgICBlbHNlIGlmICh0aGlzLnkgPiAwKSByZXR1cm4gTWF0aFV0aWwuUElfMjtcbiAgICBlbHNlIGlmICh0aGlzLnkgPCAwKSByZXR1cm4gLU1hdGhVdGlsLlBJXzI7XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYW5vdGhlciB2ZWN0b3IgdG8gdGhpcyBvbmUuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHYgLSBUaGUgdmVjdG9yIHRvIGNvcHkgZnJvbS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIGNvcHkodikge1xuICAgIHRoaXMueCA9IHYueDtcbiAgICB0aGlzLnkgPSB2Lnk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFub3RoZXIgdmVjdG9yIHRvIHRoaXMgb25lLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSB2IC0gVGhlIHZlY3RvciB0byBhZGQuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IFt3XSAtIEFuIG9wdGlvbmFsIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgYWRkKHYsIHcpIHtcbiAgICBpZiAodyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRWZWN0b3JzKHYsIHcpO1xuICAgIH1cblxuICAgIHRoaXMueCArPSB2Lng7XG4gICAgdGhpcy55ICs9IHYueTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgc2NhbGFyIHZhbHVlcyB0byB0aGlzIHZlY3RvcidzIGNvbXBvbmVudHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhIC0gVmFsdWUgdG8gYWRkIHRvIHguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBiIC0gVmFsdWUgdG8gYWRkIHRvIHkuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBhZGRYWShhLCBiKSB7XG4gICAgdGhpcy54ICs9IGE7XG4gICAgdGhpcy55ICs9IGI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHR3byB2ZWN0b3JzIGFuZCBzZXRzIHRoZSByZXN1bHQgdG8gdGhpcyB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IGEgLSBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gYiAtIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIGFkZFZlY3RvcnMoYSwgYikge1xuICAgIHRoaXMueCA9IGEueCArIGIueDtcbiAgICB0aGlzLnkgPSBhLnkgKyBiLnk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYW5vdGhlciB2ZWN0b3IgZnJvbSB0aGlzIG9uZS5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdiAtIFRoZSB2ZWN0b3IgdG8gc3VidHJhY3QuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IFt3XSAtIEFuIG9wdGlvbmFsIHNlY29uZCB2ZWN0b3IgdG8gc3VidHJhY3QuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBzdWIodiwgdykge1xuICAgIGlmICh3ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1YlZlY3RvcnModiwgdyk7XG4gICAgfVxuXG4gICAgdGhpcy54IC09IHYueDtcbiAgICB0aGlzLnkgLT0gdi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIG9uZSB2ZWN0b3IgZnJvbSBhbm90aGVyIGFuZCBzZXRzIHRoZSByZXN1bHQgdG8gdGhpcyB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IGEgLSBUaGUgdmVjdG9yIHRvIHN1YnRyYWN0IGZyb20uXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IGIgLSBUaGUgdmVjdG9yIHRvIHN1YnRyYWN0LlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgc3ViVmVjdG9ycyhhLCBiKSB7XG4gICAgdGhpcy54ID0gYS54IC0gYi54O1xuICAgIHRoaXMueSA9IGEueSAtIGIueTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERpdmlkZXMgdGhpcyB2ZWN0b3IgYnkgYSBzY2FsYXIuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzIC0gVGhlIHNjYWxhciB0byBkaXZpZGUgYnkuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBkaXZpZGVTY2FsYXIocykge1xuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICB0aGlzLnggLz0gcztcbiAgICAgIHRoaXMueSAvPSBzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldCgwLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBsaWVzIHRoaXMgdmVjdG9yIGJ5IGEgc2NhbGFyLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcyAtIFRoZSBzY2FsYXIgdG8gbXVsdGlwbHkgYnkuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBtdWx0aXBseVNjYWxhcihzKSB7XG4gICAgdGhpcy54ICo9IHM7XG4gICAgdGhpcy55ICo9IHM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBOZWdhdGVzIHRoaXMgdmVjdG9yIChpbnZlcnRzIGl0cyBkaXJlY3Rpb24pLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgbmVnYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKC0xKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0aGlzIHZlY3RvciB3aXRoIGFub3RoZXIuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHYgLSBUaGUgb3RoZXIgdmVjdG9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZG90IHByb2R1Y3QuXG4gICAqL1xuICBkb3Qodikge1xuICAgIHJldHVybiB0aGlzLnggKiB2LnggKyB0aGlzLnkgKiB2Lnk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgdGhpcyB2ZWN0b3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBzcXVhcmVkIGxlbmd0aC5cbiAgICovXG4gIGxlbmd0aFNxKCkge1xuICAgIHJldHVybiB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIHRoaXMgdmVjdG9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbGVuZ3RoLlxuICAgKi9cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIHRoaXMgdmVjdG9yIChtYWtlcyBpdCB1bml0IGxlbmd0aCkuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICBub3JtYWxpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIHRvIGFub3RoZXIgdmVjdG9yLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSB2IC0gVGhlIG90aGVyIHZlY3Rvci5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGRpc3RhbmNlLlxuICAgKi9cbiAgZGlzdGFuY2VUbyh2KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3RhdGVzIHRoaXMgdmVjdG9yIGJ5IGFuIGFuZ2xlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGhhIC0gVGhlIGFuZ2xlIHRvIHJvdGF0ZSBieSAoaW4gcmFkaWFucykuXG4gICAqIEByZXR1cm5zIHtWZWN0b3IyRH0gVGhpcyB2ZWN0b3IuXG4gICAqL1xuICByb3RhdGUodGhhKSB7XG4gICAgY29uc3QgeCA9IHRoaXMueDtcbiAgICBjb25zdCB5ID0gdGhpcy55O1xuXG4gICAgdGhpcy54ID0geCAqIE1hdGguY29zKHRoYSkgKyB5ICogTWF0aC5zaW4odGhhKTtcbiAgICB0aGlzLnkgPSAteCAqIE1hdGguc2luKHRoYSkgKyB5ICogTWF0aC5jb3ModGhhKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgZGlzdGFuY2UgdG8gYW5vdGhlciB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHYgLSBUaGUgb3RoZXIgdmVjdG9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgc3F1YXJlZCBkaXN0YW5jZS5cbiAgICovXG4gIGRpc3RhbmNlVG9TcXVhcmVkKHYpIHtcbiAgICBjb25zdCBkeCA9IHRoaXMueCAtIHYueDtcbiAgICBjb25zdCBkeSA9IHRoaXMueSAtIHYueTtcblxuICAgIHJldHVybiBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW5lYXJseSBpbnRlcnBvbGF0ZXMgdGhpcyB2ZWN0b3IgdG93YXJkIGFub3RoZXIgdmVjdG9yLlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSB2IC0gVGhlIHRhcmdldCB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbHBoYSAtIFRoZSBpbnRlcnBvbGF0aW9uIGZhY3RvciAoMC0xKS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGlzIHZlY3Rvci5cbiAgICovXG4gIGxlcnAodiwgYWxwaGEpIHtcbiAgICB0aGlzLnggKz0gKHYueCAtIHRoaXMueCkgKiBhbHBoYTtcbiAgICB0aGlzLnkgKz0gKHYueSAtIHRoaXMueSkgKiBhbHBoYTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIHZlY3RvciBpcyBlcXVhbCB0byBhbm90aGVyIHZlY3Rvci5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdiAtIFRoZSBvdGhlciB2ZWN0b3IuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgZXF1YWxzKHYpIHtcbiAgICByZXR1cm4gdi54ID09PSB0aGlzLnggJiYgdi55ID09PSB0aGlzLnk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHZlY3RvciB0byB6ZXJvLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IFRoaXMgdmVjdG9yLlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy54ID0gMC4wO1xuICAgIHRoaXMueSA9IDAuMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHZlY3RvciB3aXRoIHRoZSBzYW1lIHggYW5kIHkgdmFsdWVzIGFzIHRoaXMgb25lLlxuICAgKiBAcmV0dXJucyB7VmVjdG9yMkR9IEEgbmV3IFZlY3RvcjJEIGluc3RhbmNlLlxuICAgKi9cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBWZWN0b3IyRCh0aGlzLngsIHRoaXMueSk7XG4gIH1cbn1cbiIsImltcG9ydCBSZ2IgZnJvbSBcIi4uL3V0aWxzL1JnYlwiO1xuaW1wb3J0IFB1aWQgZnJvbSBcIi4uL3V0aWxzL1B1aWRcIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgUHJvcFV0aWwgZnJvbSBcIi4uL3V0aWxzL1Byb3BVdGlsXCI7XG5pbXBvcnQgZWFzZSBmcm9tIFwiLi4vbWF0aC9lYXNlXCI7XG5pbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXJ0aWNsZSBpbiBhIHBhcnRpY2xlIHN5c3RlbS5cbiAqIEBjbGFzcyBQYXJ0aWNsZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJ0aWNsZSB7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHBhcnRpY2xlICovXG4gIGlkID0gXCJcIjtcblxuICAvKiogQHR5cGUge3twOlZlY3RvcjJELHY6VmVjdG9yMkQsYTpWZWN0b3IyRH19IE9sZCBzdGF0ZSBvZiB0aGUgcGFydGljbGUgKi9cbiAgb2xkID0gbnVsbDtcblxuICAvKiogQHR5cGUge29iamVjdH0gQ3VzdG9tIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWNsZSAqL1xuICBkYXRhID0gbnVsbDtcblxuICAvKiogQHR5cGUge0JlaGF2aW91cltdfSBBcnJheSBvZiBiZWhhdmlvdXJzIGFwcGxpZWQgdG8gdGhlIHBhcnRpY2xlICovXG4gIGJlaGF2aW91cnMgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7VmVjdG9yMkR9IEN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHBhcnRpY2xlICovXG4gIHAgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7VmVjdG9yMkR9IEN1cnJlbnQgdmVsb2NpdHkgb2YgdGhlIHBhcnRpY2xlICovXG4gIHYgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7VmVjdG9yMkR9IEN1cnJlbnQgYWNjZWxlcmF0aW9uIG9mIHRoZSBwYXJ0aWNsZSAqL1xuICBhID0gbnVsbDtcblxuICAvKiogQHR5cGUge1JnYn0gQ29sb3Igb2YgdGhlIHBhcnRpY2xlICovXG4gIHJnYiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUGFydGljbGUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbY29uZl0gQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBwYXJ0aWNsZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZikge1xuICAgIHRoaXMubmFtZSA9IFwiUGFydGljbGVcIjtcbiAgICB0aGlzLmlkID0gUHVpZC5pZCh0aGlzLm5hbWUpO1xuICAgIHRoaXMub2xkID0ge307XG4gICAgdGhpcy5kYXRhID0ge307XG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG5cbiAgICB0aGlzLnAgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLnYgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmEgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLm9sZC5wID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5vbGQudiA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMub2xkLmEgPSBuZXcgVmVjdG9yMkQoKTtcblxuICAgIHRoaXMucmdiID0gbmV3IFJnYigpO1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICBjb25mICYmIFByb3BVdGlsLnNldFByb3AodGhpcywgY29uZik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBwYXJ0aWNsZSdzIG1vdmVtZW50IGluIGRlZ3JlZXMuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkaXJlY3Rpb24gaW4gZGVncmVlc1xuICAgKi9cbiAgZ2V0RGlyZWN0aW9uKCkge1xuICAgIHJldHVybiBNYXRoLmF0YW4yKHRoaXMudi54LCAtdGhpcy52LnkpICogTWF0aFV0aWwuTjE4MF9QSTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHBhcnRpY2xlIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuICAgKiBAcmV0dXJucyB7UGFydGljbGV9IFRoZSBwYXJ0aWNsZSBpbnN0YW5jZVxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5saWZlID0gSW5maW5pdHk7XG4gICAgdGhpcy5hZ2UgPSAwO1xuXG4gICAgdGhpcy5kZWFkID0gZmFsc2U7XG4gICAgdGhpcy5zbGVlcCA9IGZhbHNlO1xuICAgIHRoaXMuYm9keSA9IG51bGw7XG4gICAgdGhpcy5zcHJpdGUgPSBudWxsO1xuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcblxuICAgIHRoaXMuZW5lcmd5ID0gMTsgLy8gRW5lcmd5IExvc3NcbiAgICB0aGlzLm1hc3MgPSAxO1xuICAgIHRoaXMucmFkaXVzID0gMTA7XG4gICAgdGhpcy5hbHBoYSA9IDE7XG4gICAgdGhpcy5zY2FsZSA9IDE7XG4gICAgdGhpcy5yb3RhdGlvbiA9IDA7XG4gICAgdGhpcy5jb2xvciA9IG51bGw7XG5cbiAgICB0aGlzLnAuc2V0KDAsIDApO1xuICAgIHRoaXMudi5zZXQoMCwgMCk7XG4gICAgdGhpcy5hLnNldCgwLCAwKTtcbiAgICB0aGlzLm9sZC5wLnNldCgwLCAwKTtcbiAgICB0aGlzLm9sZC52LnNldCgwLCAwKTtcbiAgICB0aGlzLm9sZC5hLnNldCgwLCAwKTtcbiAgICB0aGlzLmVhc2luZyA9IGVhc2UuZWFzZUxpbmVhcjtcblxuICAgIHRoaXMucmdiLnJlc2V0KCk7XG4gICAgVXRpbC5lbXB0eU9iamVjdCh0aGlzLmRhdGEpO1xuICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFydGljbGUncyBzdGF0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgVGhlIHRpbWUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgcGFydGljbGUgaW4gaXRzIHBhcmVudCBzeXN0ZW1cbiAgICovXG4gIHVwZGF0ZSh0aW1lLCBpbmRleCkge1xuICAgIGlmICghdGhpcy5zbGVlcCkge1xuICAgICAgdGhpcy5hZ2UgKz0gdGltZTtcbiAgICAgIHRoaXMuYXBwbHlCZWhhdmlvdXJzKHRpbWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZ2UgPCB0aGlzLmxpZmUpIHtcbiAgICAgIGNvbnN0IHNjYWxlID0gdGhpcy5lYXNpbmcodGhpcy5hZ2UgLyB0aGlzLmxpZmUpO1xuICAgICAgdGhpcy5lbmVyZ3kgPSBNYXRoLm1heCgxIC0gc2NhbGUsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBhbGwgYmVoYXZpb3VycyBhdHRhY2hlZCB0byB0aGUgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIFRoZSB0aW1lIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdXBkYXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIHBhcnRpY2xlIGluIGl0cyBwYXJlbnQgc3lzdGVtXG4gICAqL1xuICBhcHBseUJlaGF2aW91cnModGltZSwgaW5kZXgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmJlaGF2aW91cnMubGVuZ3RoO1xuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnNbaV0gJiYgdGhpcy5iZWhhdmlvdXJzW2ldLmFwcGx5QmVoYXZpb3VyKHRoaXMsIHRpbWUsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGJlaGF2aW91ciB0byB0aGUgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgVGhlIGJlaGF2aW91ciB0byBhZGRcbiAgICovXG4gIGFkZEJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGJlaGF2aW91ci5oYXNPd25Qcm9wZXJ0eShcInBhcmVudHNcIikpIGJlaGF2aW91ci5wYXJlbnRzLnB1c2godGhpcyk7XG4gICAgYmVoYXZpb3VyLmluaXRpYWxpemUodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBiZWhhdmlvdXJzIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtCZWhhdmlvdXJbXX0gYmVoYXZpb3VycyBBbiBhcnJheSBvZiBiZWhhdmlvdXJzIHRvIGFkZFxuICAgKi9cbiAgYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYmVoYXZpb3Vycy5sZW5ndGg7XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWRkQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgc3BlY2lmaWMgYmVoYXZpb3VyIGZyb20gdGhlIHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIFRoZSBiZWhhdmlvdXIgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGJlaGF2aW91ciA9IHRoaXMuYmVoYXZpb3Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgYmVoYXZpb3VyLnBhcmVudHMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIHBhcnRpY2xlLlxuICAgKi9cbiAgcmVtb3ZlQWxsQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmVtcHR5QXJyYXkodGhpcy5iZWhhdmlvdXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcGFydGljbGUsIHJlbW92aW5nIGFsbCBiZWhhdmlvdXJzIGFuZCBzZXR0aW5nIGl0IGFzIGRlYWQuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuICAgIHRoaXMuZW5lcmd5ID0gMDtcbiAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogQHR5cGVkZWYgIHtPYmplY3R9IHJnYk9iamVjdFxuICAgKiBAcHJvcGVydHkge051bWJlcn0gciByZWQgdmFsdWVcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGcgZ3JlZW4gdmFsdWVcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGIgYmx1ZSB2YWx1ZVxuICAgKi9cbiAgLyoqXG4gICAqIGNvbnZlcnRzIGEgaGV4IHZhbHVlIHRvIGEgcmdiIG9iamVjdFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgaGV4VG9SZ2JcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGggYW55IGhleCB2YWx1ZSwgZS5nLiAjMDAwMDAwIG9yIDAwMDAwMCBmb3IgYmxhY2tcbiAgICpcbiAgICogQHJldHVybiB7cmdiT2JqZWN0fVxuICAgKi9cbiAgaGV4VG9SZ2IoaCkge1xuICAgIGNvbnN0IGhleDE2ID0gaC5jaGFyQXQoMCkgPT09IFwiI1wiID8gaC5zdWJzdHJpbmcoMSwgNykgOiBoO1xuICAgIGNvbnN0IHIgPSBwYXJzZUludChoZXgxNi5zdWJzdHJpbmcoMCwgMiksIDE2KTtcbiAgICBjb25zdCBnID0gcGFyc2VJbnQoaGV4MTYuc3Vic3RyaW5nKDIsIDQpLCAxNik7XG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGhleDE2LnN1YnN0cmluZyg0LCA2KSwgMTYpO1xuXG4gICAgcmV0dXJuIHsgciwgZywgYiB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBjb252ZXJ0cyBhIHJnYiB2YWx1ZSB0byBhIHJnYiBzdHJpbmdcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIHJnYlRvSGV4XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgUHJvdG9uLmhleFRvUmdifSByZ2IgYSByZ2Igb2JqZWN0IGxpa2UgaW4ge0BsaW5rIFByb3RvbiNQcm90b24ufVxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHJnYigpXG4gICAqL1xuICByZ2JUb0hleChyYmcpIHtcbiAgICByZXR1cm4gYHJnYigke3JiZy5yfSwgJHtyYmcuZ30sICR7cmJnLmJ9KWA7XG4gIH0sXG5cbiAgZ2V0SGV4MTZGcm9tUGFydGljbGUocCkge1xuICAgIHJldHVybiBOdW1iZXIocC5yZ2IucikgKiA2NTUzNiArIE51bWJlcihwLnJnYi5nKSAqIDI1NiArIE51bWJlcihwLnJnYi5iKTtcbiAgfVxufTtcbiIsImltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi9WZWN0b3IyRFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2xhcjJEIHtcbiAgY29uc3RydWN0b3IociwgdGhhKSB7XG4gICAgdGhpcy5yID0gTWF0aC5hYnMocikgfHwgMDtcbiAgICB0aGlzLnRoYSA9IHRoYSB8fCAwO1xuICB9XG5cbiAgc2V0KHIsIHRoYSkge1xuICAgIHRoaXMuciA9IHI7XG4gICAgdGhpcy50aGEgPSB0aGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRSKHIpIHtcbiAgICB0aGlzLnIgPSByO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VGhhKHRoYSkge1xuICAgIHRoaXMudGhhID0gdGhhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29weShwKSB7XG4gICAgdGhpcy5yID0gcC5yO1xuICAgIHRoaXMudGhhID0gcC50aGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b1ZlY3RvcigpIHtcbiAgICByZXR1cm4gbmV3IFZlY3RvcjJEKHRoaXMuZ2V0WCgpLCB0aGlzLmdldFkoKSk7XG4gIH1cblxuICBnZXRYKCkge1xuICAgIHJldHVybiB0aGlzLnIgKiBNYXRoLnNpbih0aGlzLnRoYSk7XG4gIH1cblxuICBnZXRZKCkge1xuICAgIHJldHVybiAtdGhpcy5yICogTWF0aC5jb3ModGhpcy50aGEpO1xuICB9XG5cbiAgbm9ybWFsaXplKCkge1xuICAgIHRoaXMuciA9IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlcXVhbHModikge1xuICAgIHJldHVybiB2LnIgPT09IHRoaXMuciAmJiB2LnRoYSA9PT0gdGhpcy50aGE7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnIgPSAwLjA7XG4gICAgdGhpcy50aGEgPSAwLjA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFBvbGFyMkQodGhpcy5yLCB0aGlzLnRoYSk7XG4gIH1cbn1cbiIsImNvbnN0IE1hdDMgPSB7XG4gIGNyZWF0ZShtYXQzKSB7XG4gICAgY29uc3QgbWF0ID0gbmV3IEZsb2F0MzJBcnJheSg5KTtcbiAgICBpZiAobWF0MykgdGhpcy5zZXQobWF0MywgbWF0KTtcblxuICAgIHJldHVybiBtYXQ7XG4gIH0sXG5cbiAgc2V0KG1hdDEsIG1hdDIpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDk7IGkrKykgbWF0MltpXSA9IG1hdDFbaV07XG5cbiAgICByZXR1cm4gbWF0MjtcbiAgfSxcblxuICBtdWx0aXBseShtYXQsIG1hdDIsIG1hdDMpIHtcbiAgICBsZXQgYTAwID0gbWF0WzBdLFxuICAgICAgYTAxID0gbWF0WzFdLFxuICAgICAgYTAyID0gbWF0WzJdLFxuICAgICAgYTEwID0gbWF0WzNdLFxuICAgICAgYTExID0gbWF0WzRdLFxuICAgICAgYTIwID0gbWF0WzZdLFxuICAgICAgYTIxID0gbWF0WzddLFxuICAgICAgYjAwID0gbWF0MlswXSxcbiAgICAgIGIwMSA9IG1hdDJbMV0sXG4gICAgICBiMDIgPSBtYXQyWzJdLFxuICAgICAgYjEwID0gbWF0MlszXSxcbiAgICAgIGIxMSA9IG1hdDJbNF0sXG4gICAgICBiMjAgPSBtYXQyWzZdLFxuICAgICAgYjIxID0gbWF0Mls3XTtcblxuICAgIG1hdDNbMF0gPSBiMDAgKiBhMDAgKyBiMDEgKiBhMTA7XG4gICAgbWF0M1sxXSA9IGIwMCAqIGEwMSArIGIwMSAqIGExMTtcbiAgICBtYXQzWzJdID0gYTAyICogYjAyO1xuICAgIG1hdDNbM10gPSBiMTAgKiBhMDAgKyBiMTEgKiBhMTA7XG4gICAgbWF0M1s0XSA9IGIxMCAqIGEwMSArIGIxMSAqIGExMTtcbiAgICBtYXQzWzZdID0gYjIwICogYTAwICsgYjIxICogYTEwICsgYTIwO1xuICAgIG1hdDNbN10gPSBiMjAgKiBhMDEgKyBiMjEgKiBhMTEgKyBhMjE7XG5cbiAgICByZXR1cm4gbWF0MztcbiAgfSxcblxuICBpbnZlcnNlKG1hdCwgbWF0Mykge1xuICAgIGxldCBhMDAgPSBtYXRbMF0sXG4gICAgICBhMDEgPSBtYXRbMV0sXG4gICAgICBhMTAgPSBtYXRbM10sXG4gICAgICBhMTEgPSBtYXRbNF0sXG4gICAgICBhMjAgPSBtYXRbNl0sXG4gICAgICBhMjEgPSBtYXRbN10sXG4gICAgICBiMDEgPSBhMTEsXG4gICAgICBiMTEgPSAtYTEwLFxuICAgICAgYjIxID0gYTIxICogYTEwIC0gYTExICogYTIwLFxuICAgICAgZCA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSxcbiAgICAgIGlkO1xuXG4gICAgaWQgPSAxIC8gZDtcbiAgICBtYXQzWzBdID0gYjAxICogaWQ7XG4gICAgbWF0M1sxXSA9IC1hMDEgKiBpZDtcbiAgICBtYXQzWzNdID0gYjExICogaWQ7XG4gICAgbWF0M1s0XSA9IGEwMCAqIGlkO1xuICAgIG1hdDNbNl0gPSBiMjEgKiBpZDtcbiAgICBtYXQzWzddID0gKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApICogaWQ7XG5cbiAgICByZXR1cm4gbWF0MztcbiAgfSxcblxuICBtdWx0aXBseVZlYzIobSwgdmVjLCBtYXQzKSB7XG4gICAgbGV0IHggPSB2ZWNbMF0sXG4gICAgICB5ID0gdmVjWzFdO1xuXG4gICAgbWF0M1swXSA9IHggKiBtWzBdICsgeSAqIG1bM10gKyBtWzZdO1xuICAgIG1hdDNbMV0gPSB4ICogbVsxXSArIHkgKiBtWzRdICsgbVs3XTtcblxuICAgIHJldHVybiBtYXQzO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNYXQzO1xuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4vU3BhblwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcnJheVNwYW4gZXh0ZW5kcyBTcGFuIHtcbiAgY29uc3RydWN0b3IoY29sb3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2FyciA9IFV0aWwudG9BcnJheShjb2xvcik7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICBjb25zdCB2YWwgPSBVdGlsLmdldFJhbmRGcm9tQXJyYXkodGhpcy5fYXJyKTtcbiAgICByZXR1cm4gdmFsID09PSBcInJhbmRvbVwiIHx8IHZhbCA9PT0gXCJSYW5kb21cIiA/IE1hdGhVdGlsLnJhbmRvbUNvbG9yKCkgOiB2YWw7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBzdXJlIHRoYXQgdGhlIGNvbG9yIGlzIGFuIGluc3RhbmNlIG9mIFByb3Rvbi5BcnJheVNwYW4sIGlmIG5vdCBpdCBtYWtlcyBhIG5ldyBpbnN0YW5jZVxuICAgKlxuICAgKiBAbWV0aG9kIHNldFNwYW5WYWx1ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Db2xvclxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlQXJyYXlTcGFuKGFycikge1xuICAgIGlmICghYXJyKSByZXR1cm4gbnVsbDtcblxuICAgIGlmIChhcnIgaW5zdGFuY2VvZiBBcnJheVNwYW4pIHJldHVybiBhcnI7XG4gICAgZWxzZSByZXR1cm4gbmV3IEFycmF5U3BhbihhcnIpO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBSZWN0YW5nbGUge1xuICBjb25zdHJ1Y3Rvcih4LCB5LCB3LCBoKSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuXG4gICAgdGhpcy53aWR0aCA9IHc7XG4gICAgdGhpcy5oZWlnaHQgPSBoO1xuXG4gICAgdGhpcy5ib3R0b20gPSB0aGlzLnkgKyB0aGlzLmhlaWdodDtcbiAgICB0aGlzLnJpZ2h0ID0gdGhpcy54ICsgdGhpcy53aWR0aDtcbiAgfVxuXG4gIGNvbnRhaW5zKHgsIHkpIHtcbiAgICBpZiAoeCA8PSB0aGlzLnJpZ2h0ICYmIHggPj0gdGhpcy54ICYmIHkgPD0gdGhpcy5ib3R0b20gJiYgeSA+PSB0aGlzLnkpIHJldHVybiB0cnVlO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuXG4vKipcbiAqIFJhdGUgY2xhc3MgZm9yIGNvbnRyb2xsaW5nIHBhcnRpY2xlIGVtaXNzaW9uIHJhdGUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhdGUge1xuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBudW1QYW47XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdGltZVBhbjtcblxuICAvKipcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXJ0VGltZTtcblxuICAvKipcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIG5leHRUaW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFJhdGUgaW5zdGFuY2UuXG4gICAqIFRoZSBudW1iZXIgb2YgcGFydGljbGVzIHBlciBzZWNvbmQgZW1pc3Npb24gKGEgW3BhcnRpY2xlXS9iIFtzXSkuXG4gICAqIEBwYXJhbSB7QXJyYXl8bnVtYmVyfFNwYW59IFtudW1wYW49MV0gLSBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyBmb3IgZWFjaCBlbWlzc2lvbi5cbiAgICogQHBhcmFtIHtBcnJheXxudW1iZXJ8U3Bhbn0gW3RpbWVwYW49MV0gLSBUaGUgdGltZSBpbnRlcnZhbCBiZXR3ZWVuIGVhY2ggZW1pc3Npb24uXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIENyZWF0ZSBhIHJhdGUgb2YgMTAtMjAgcGFydGljbGVzIGV2ZXJ5IDAuMS0wLjI1IHNlY29uZHNcbiAgICogbmV3IFJhdGUobmV3IFNwYW4oMTAsIDIwKSwgbmV3IFNwYW4oMC4xLCAwLjI1KSk7XG4gICAqL1xuICBjb25zdHJ1Y3RvcihudW1wYW4sIHRpbWVwYW4pIHtcbiAgICB0aGlzLm51bVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKG51bXBhbiwgMSkpO1xuICAgIHRoaXMudGltZVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKHRpbWVwYW4sIDEpKTtcblxuICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcbiAgICB0aGlzLm5leHRUaW1lID0gMDtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgcmF0ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGluaXQoKSB7XG4gICAgdGhpcy5zdGFydFRpbWUgPSAwO1xuICAgIHRoaXMubmV4dFRpbWUgPSB0aGlzLnRpbWVQYW4uZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgcGFydGljbGVzIHRvIGVtaXQgYmFzZWQgb24gdGhlIGVsYXBzZWQgdGltZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBUaGUgZWxhcHNlZCB0aW1lIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZS5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG51bWJlciBvZiBwYXJ0aWNsZXMgdG8gZW1pdC5cbiAgICovXG4gIGdldFZhbHVlKHRpbWUpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lID49IHRoaXMubmV4dFRpbWUpIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcbiAgICAgIHRoaXMubmV4dFRpbWUgPSB0aGlzLnRpbWVQYW4uZ2V0VmFsdWUoKTtcblxuICAgICAgaWYgKHRoaXMubnVtUGFuLmIgPT09IDEpIHtcbiAgICAgICAgaWYgKHRoaXMubnVtUGFuLmdldFZhbHVlKGZhbHNlKSA+IDAuNSkgcmV0dXJuIDE7XG4gICAgICAgIGVsc2UgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1QYW4uZ2V0VmFsdWUodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEluaXRpYWxpemUge1xuICByZXNldCgpIHt9XG5cbiAgaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplKHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplKGVtaXR0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHN1YiBjbGFzcyBpbml0XG4gIGluaXRpYWxpemUodGFyZ2V0KSB7fVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG4vKipcbiAqIExpZmUgY2xhc3MgZm9yIGluaXRpYWxpemluZyBwYXJ0aWNsZSBsaWZldGltZS5cbiAqIEBleHRlbmRzIEluaXRpYWxpemVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZSBleHRlbmRzIEluaXRpYWxpemUge1xuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBsaWZlUGFuO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBMaWZlIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge251bWJlcnxTcGFufSBhIC0gVGhlIGxpZmV0aW1lIHZhbHVlIG9yIHRoZSBsb3dlciBib3VuZCBvZiB0aGUgbGlmZXRpbWUgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYl0gLSBUaGUgdXBwZXIgYm91bmQgb2YgdGhlIGxpZmV0aW1lIHJhbmdlIChpZiBhIGlzIGEgbnVtYmVyKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbY10gLSBXaGV0aGVyIHRvIHVzZSBjZW50ZXItYmFzZWQgY2FsY3VsYXRpb24gKGlmIGEgYW5kIGIgYXJlIG51bWJlcnMpLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYSwgYiwgYykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmxpZmVQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShhLCBiLCBjKTtcbiAgICB0aGlzLm5hbWUgPSBcIkxpZmVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgbGlmZXRpbWUgb2YgYSB0YXJnZXQgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQgLSBUaGUgdGFyZ2V0IHBhcnRpY2xlIHRvIGluaXRpYWxpemUuXG4gICAqL1xuICBpbml0aWFsaXplKHRhcmdldCkge1xuICAgIGlmICh0aGlzLmxpZmVQYW4uYSA9PT0gSW5maW5pdHkpIHRhcmdldC5saWZlID0gSW5maW5pdHk7XG4gICAgZWxzZSB0YXJnZXQubGlmZSA9IHRoaXMubGlmZVBhbi5nZXRWYWx1ZSgpO1xuICB9XG59XG4iLCJpbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWm9uZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudmVjdG9yID0gbmV3IFZlY3RvcjJEKDAsIDApO1xuICAgIHRoaXMucmFuZG9tID0gMDtcbiAgICB0aGlzLmNyb3NzVHlwZSA9IFwiZGVhZFwiO1xuICAgIHRoaXMuYWxlcnQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7fVxuXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy52ZWN0b3IgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgWm9uZSBmcm9tIFwiLi9ab25lXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBvaW50IHpvbmUgaW4gYSAyRCBzcGFjZS5cbiAqIEBleHRlbmRzIFpvbmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9pbnRab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBvaW50Wm9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHgsIHkpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnQuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnggPSB4O1xuXG4gICAgLyoqXG4gICAgICogVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnQuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb2ludC5cbiAgICogQHJldHVybnMge09iamVjdH0gQW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcG9zaXRpb24gdmVjdG9yLlxuICAgKi9cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueDtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55O1xuXG4gICAgcmV0dXJuIHRoaXMudmVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFBvaW50Wm9uZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIG9iamVjdCAodW51c2VkKS5cbiAgICovXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuYWxlcnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJTb3JyeSwgUG9pbnRab25lIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3NpbmcgbWV0aG9kIVwiKTtcbiAgICAgIHRoaXMuYWxlcnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgUG9pbnRab25lIGZyb20gXCIuLi96b25lL1BvaW50Wm9uZVwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG4vKipcbiAqIFBvc2l0aW9uIGNsYXNzIGZvciBpbml0aWFsaXppbmcgcGFydGljbGUgcG9zaXRpb25zLlxuICogQGV4dGVuZHMgSW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3NpdGlvbiBleHRlbmRzIEluaXRpYWxpemUge1xuICAvKipcbiAgICogQHR5cGUge1BvaW50Wm9uZXxhbnl9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB6b25lO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQb3NpdGlvbiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtQb2ludFpvbmV8YW55fSBbem9uZV0gLSBUaGUgem9uZSB0byB1c2UgZm9yIHBvc2l0aW9uaW5nLiBEZWZhdWx0cyB0byBhIG5ldyBQb2ludFpvbmUgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioem9uZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy56b25lID0gVXRpbC5pbml0VmFsdWUoem9uZSwgbmV3IFBvaW50Wm9uZSgpKTtcbiAgICB0aGlzLm5hbWUgPSBcIlBvc2l0aW9uXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoaXMgaW5pdGlhbGl6ZXIncyBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge1BvaW50Wm9uZXxhbnl9IFt6b25lXSAtIFRoZSBuZXcgem9uZSB0byB1c2UgZm9yIHBvc2l0aW9uaW5nLiBEZWZhdWx0cyB0byBhIG5ldyBQb2ludFpvbmUgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVzZXQoem9uZSkge1xuICAgIHRoaXMuem9uZSA9IFV0aWwuaW5pdFZhbHVlKHpvbmUsIG5ldyBQb2ludFpvbmUoKSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHBhcnRpY2xlJ3MgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQgLSBUaGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldC5wIC0gVGhlIHBhcnRpY2xlJ3MgcG9zaXRpb24gb2JqZWN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGFyZ2V0LnAueCAtIFRoZSBwYXJ0aWNsZSdzIHggY29vcmRpbmF0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldC5wLnkgLSBUaGUgcGFydGljbGUncyB5IGNvb3JkaW5hdGUuXG4gICAqL1xuICBpbml0aWFsaXplKHRhcmdldCkge1xuICAgIHRoaXMuem9uZS5nZXRQb3NpdGlvbigpO1xuXG4gICAgdGFyZ2V0LnAueCA9IHRoaXMuem9uZS52ZWN0b3IueDtcbiAgICB0YXJnZXQucC55ID0gdGhpcy56b25lLnZlY3Rvci55O1xuICB9XG59XG4iLCJpbXBvcnQgUHJvdG9uIGZyb20gXCIuLi9jb3JlL1Byb3RvblwiO1xuaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBJbml0aWFsaXplIGZyb20gXCIuL0luaXRpYWxpemVcIjtcbmltcG9ydCBQb2xhcjJEIGZyb20gXCIuLi9tYXRoL1BvbGFyMkRcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG4vKipcbiAqIFZlbG9jaXR5IGNsYXNzIGZvciBpbml0aWFsaXppbmcgcGFydGljbGUgdmVsb2NpdGllcy5cbiAqIEBleHRlbmRzIEluaXRpYWxpemVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2NpdHkgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgclBhbjtcblxuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0aGFQYW47XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFZlbG9jaXR5IGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge251bWJlcnxTcGFufSBbcnBhbl0gLSBUaGUgcmFkaWFsIGNvbXBvbmVudCBvZiB0aGUgdmVsb2NpdHkgb3IgaXRzIHJhbmdlLlxuICAgKiBAcGFyYW0ge251bWJlcnxTcGFufSBbdGhhcGFuXSAtIFRoZSBhbmd1bGFyIGNvbXBvbmVudCBvZiB0aGUgdmVsb2NpdHkgb3IgaXRzIHJhbmdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3R5cGU9J3ZlY3RvciddIC0gVGhlIHR5cGUgb2YgdmVsb2NpdHkgKCd2ZWN0b3InIG9yICdwb2xhcicpLlxuICAgKi9cbiAgY29uc3RydWN0b3IocnBhbiwgdGhhcGFuLCB0eXBlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuclBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHJwYW4pO1xuICAgIHRoaXMudGhhUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUodGhhcGFuKTtcbiAgICB0aGlzLnR5cGUgPSBVdGlsLmluaXRWYWx1ZSh0eXBlLCBcInZlY3RvclwiKTtcblxuICAgIHRoaXMubmFtZSA9IFwiVmVsb2NpdHlcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHZlbG9jaXR5IHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFtycGFuXSAtIFRoZSByYWRpYWwgY29tcG9uZW50IG9mIHRoZSB2ZWxvY2l0eSBvciBpdHMgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFt0aGFwYW5dIC0gVGhlIGFuZ3VsYXIgY29tcG9uZW50IG9mIHRoZSB2ZWxvY2l0eSBvciBpdHMgcmFuZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZT0ndmVjdG9yJ10gLSBUaGUgdHlwZSBvZiB2ZWxvY2l0eSAoJ3ZlY3Rvcicgb3IgJ3BvbGFyJykuXG4gICAqL1xuICByZXNldChycGFuLCB0aGFwYW4sIHR5cGUpIHtcbiAgICB0aGlzLnJQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShycGFuKTtcbiAgICB0aGlzLnRoYVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHRoYXBhbik7XG4gICAgdGhpcy50eXBlID0gVXRpbC5pbml0VmFsdWUodHlwZSwgXCJ2ZWN0b3JcIik7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyB0aGUgdmVsb2NpdHkgdmFsdWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2ciAtIFRoZSB2ZWxvY2l0eSB2YWx1ZSB0byBub3JtYWxpemUuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBub3JtYWxpemVkIHZlbG9jaXR5IHZhbHVlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgbm9ybWFsaXplVmVsb2NpdHkodnIpIHtcbiAgICByZXR1cm4gdnIgKiBQcm90b24uTUVBU1VSRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgcGFydGljbGUncyB2ZWxvY2l0eS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKi9cbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBcInBcIiB8fCB0aGlzLnR5cGUgPT09IFwiUFwiIHx8IHRoaXMudHlwZSA9PT0gXCJwb2xhclwiKSB7XG4gICAgICBjb25zdCBwb2xhcjJkID0gbmV3IFBvbGFyMkQoXG4gICAgICAgIHRoaXMubm9ybWFsaXplVmVsb2NpdHkodGhpcy5yUGFuLmdldFZhbHVlKCkpLFxuICAgICAgICB0aGlzLnRoYVBhbi5nZXRWYWx1ZSgpICogTWF0aFV0aWwuUElfMTgwXG4gICAgICApO1xuXG4gICAgICB0YXJnZXQudi54ID0gcG9sYXIyZC5nZXRYKCk7XG4gICAgICB0YXJnZXQudi55ID0gcG9sYXIyZC5nZXRZKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldC52LnggPSB0aGlzLm5vcm1hbGl6ZVZlbG9jaXR5KHRoaXMuclBhbi5nZXRWYWx1ZSgpKTtcbiAgICAgIHRhcmdldC52LnkgPSB0aGlzLm5vcm1hbGl6ZVZlbG9jaXR5KHRoaXMudGhhUGFuLmdldFZhbHVlKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG4vKipcbiAqIE1hc3MgY2xhc3MgZm9yIGluaXRpYWxpemluZyBwYXJ0aWNsZSBtYXNzLlxuICogQGV4dGVuZHMgSW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXNzIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1hc3NQYW47XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IE1hc3MgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IGEgLSBUaGUgbWFzcyB2YWx1ZSBvciB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIG1hc3MgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYl0gLSBUaGUgdXBwZXIgYm91bmQgb2YgdGhlIG1hc3MgcmFuZ2UgKGlmIGEgaXMgYSBudW1iZXIpLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjXSAtIFdoZXRoZXIgdG8gdXNlIGNlbnRlci1iYXNlZCBjYWxjdWxhdGlvbiAoaWYgYSBhbmQgYiBhcmUgbnVtYmVycykuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1hc3NQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShhLCBiLCBjKTtcbiAgICB0aGlzLm5hbWUgPSBcIk1hc3NcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgbWFzcyBvZiBhIHRhcmdldCBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCAtIFRoZSB0YXJnZXQgcGFydGljbGUgdG8gaW5pdGlhbGl6ZS5cbiAgICovXG4gIGluaXRpYWxpemUodGFyZ2V0KSB7XG4gICAgdGFyZ2V0Lm1hc3MgPSB0aGlzLm1hc3NQYW4uZ2V0VmFsdWUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG4vKipcbiAqIFJhZGl1cyBjbGFzcyBmb3IgaW5pdGlhbGl6aW5nIHBhcnRpY2xlIHJhZGl1cy5cbiAqIEBleHRlbmRzIEluaXRpYWxpemVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaXVzIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICovXG4gIHJhZGl1cztcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUmFkaXVzIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge251bWJlcnxTcGFufSBhIC0gVGhlIHJhZGl1cyB2YWx1ZSBvciB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIHJhZGl1cyByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtiXSAtIFRoZSB1cHBlciBib3VuZCBvZiB0aGUgcmFkaXVzIHJhbmdlIChpZiBhIGlzIGEgbnVtYmVyKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbY10gLSBXaGV0aGVyIHRvIHVzZSBjZW50ZXItYmFzZWQgY2FsY3VsYXRpb24gKGlmIGEgYW5kIGIgYXJlIG51bWJlcnMpLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYSwgYiwgYykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yYWRpdXMgPSBTcGFuLnNldFNwYW5WYWx1ZShhLCBiLCBjKTtcbiAgICB0aGlzLm5hbWUgPSBcIlJhZGl1c1wiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGlzIGluaXRpYWxpemVyJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gYSAtIFRoZSByYWRpdXMgdmFsdWUgb3IgdGhlIGxvd2VyIGJvdW5kIG9mIHRoZSByYWRpdXMgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYl0gLSBUaGUgdXBwZXIgYm91bmQgb2YgdGhlIHJhZGl1cyByYW5nZSAoaWYgYSBpcyBhIG51bWJlcikuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NdIC0gV2hldGhlciB0byB1c2UgY2VudGVyLWJhc2VkIGNhbGN1bGF0aW9uIChpZiBhIGFuZCBiIGFyZSBudW1iZXJzKS5cbiAgICovXG4gIHJlc2V0KGEsIGIsIGMpIHtcbiAgICB0aGlzLnJhZGl1cyA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwYXJ0aWNsZSdzIHJhZGl1cy5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZS5cbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5yYWRpdXMgPSB0aGlzLnJhZGl1cy5nZXRWYWx1ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEub2xkUmFkaXVzID0gcGFydGljbGUucmFkaXVzO1xuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEFycmF5U3BhbiBmcm9tIFwiLi4vbWF0aC9BcnJheVNwYW5cIjtcbmltcG9ydCBJbml0aWFsaXplIGZyb20gXCIuL0luaXRpYWxpemVcIjtcblxuLyoqXG4gKiBCb2R5IGNsYXNzIGZvciBpbml0aWFsaXppbmcgcGFydGljbGUgYm9kaWVzLlxuICogQGV4dGVuZHMgSW5pdGlhbGl6ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5IGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIC8qKlxuICAgKiBAdHlwZSB7QXJyYXlTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaW1hZ2U7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJvZHkgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdHxBcnJheVNwYW59IGltYWdlIC0gVGhlIGltYWdlIHNvdXJjZSBvciBvYmplY3QgdG8gdXNlIGZvciB0aGUgcGFydGljbGUgYm9keS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt3PTIwXSAtIFRoZSB3aWR0aCBvZiB0aGUgcGFydGljbGUgYm9keS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtoXSAtIFRoZSBoZWlnaHQgb2YgdGhlIHBhcnRpY2xlIGJvZHkuIERlZmF1bHRzIHRvIHRoZSB3aWR0aCBpZiBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpbWFnZSwgdywgaCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZXRTcGFuVmFsdWUoaW1hZ2UpO1xuICAgIHRoaXMudyA9IFV0aWwuaW5pdFZhbHVlKHcsIDIwKTtcbiAgICB0aGlzLmggPSBVdGlsLmluaXRWYWx1ZShoLCB0aGlzLncpO1xuICAgIHRoaXMubmFtZSA9IFwiQm9keVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwYXJ0aWNsZSdzIGJvZHkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGltYWdlVGFyZ2V0ID0gdGhpcy5pbWFnZS5nZXRWYWx1ZSgpO1xuXG4gICAgaWYgKHR5cGVvZiBpbWFnZVRhcmdldCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcGFydGljbGUuYm9keSA9IHtcbiAgICAgICAgd2lkdGg6IHRoaXMudyxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmgsXG4gICAgICAgIHNyYzogaW1hZ2VUYXJnZXQsXG4gICAgICAgIGlzSW5uZXI6IHRydWUsXG4gICAgICAgIGlubmVyOiB0cnVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gaW1hZ2VUYXJnZXQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNwYW4gdmFsdWUgZm9yIHRoZSBpbWFnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fEFycmF5U3Bhbn0gaW1hZ2UgLSBUaGUgaW1hZ2Ugc291cmNlIG9yIG9iamVjdCB0byBzZXQgYXMgc3BhbiB2YWx1ZS5cbiAgICogQHJldHVybnMge0FycmF5U3Bhbn0gVGhlIEFycmF5U3BhbiBpbnN0YW5jZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNldFNwYW5WYWx1ZShpbWFnZSkge1xuICAgIHJldHVybiBpbWFnZSBpbnN0YW5jZW9mIEFycmF5U3BhbiA/IGltYWdlIDogbmV3IEFycmF5U3BhbihpbWFnZSk7XG4gIH1cbn1cbiIsImltcG9ydCBQcm90b24gZnJvbSBcIi4uL2NvcmUvUHJvdG9uXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IGVhc2UgZnJvbSBcIi4uL21hdGgvZWFzZVwiO1xuXG4vKipcbiAqIFRoZSBCZWhhdmlvdXIgY2xhc3MgaXMgdGhlIGJhc2UgZm9yIHRoZSBvdGhlciBCZWhhdmlvdXJcbiAqIEBjbGFzc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCZWhhdmlvdXIge1xuICBzdGF0aWMgaWQgPSAwO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgQmVoYXZpb3VyIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGUgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZUxpbmVhciddIC0gVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kLCBmb3IgZXhhbXBsZSBlYXNlLmVhc2VPdXRRdWFydFxuICAgKi9cbiAgY29uc3RydWN0b3IobGlmZSwgZWFzaW5nKSB7XG4gICAgLyoqXG4gICAgICogVGhlIGJlaGF2aW91cidzIGxpZmVcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGlmZSA9IFV0aWwuaW5pdFZhbHVlKGxpZmUsIEluZmluaXR5KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiZWhhdmlvdXIncyBlYXNpbmcgZnVuY3Rpb25cbiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAgICovXG4gICAgdGhpcy5lYXNpbmcgPSBlYXNlLmdldEVhc2luZyhlYXNpbmcpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJlaGF2aW91cidzIGN1cnJlbnQgYWdlXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmFnZSA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmVoYXZpb3VyJ3MgY3VycmVudCBlbmVyZ3lcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZW5lcmd5ID0gMTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGJlaGF2aW91ciBpcyBkZWFkXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5kZWFkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmVoYXZpb3VyJ3MgcGFyZW50IGVtaXR0ZXJzXG4gICAgICogQHR5cGUge0FycmF5fVxuICAgICAqL1xuICAgIHRoaXMucGFyZW50cyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJlaGF2aW91cidzIHVuaXF1ZSBpZFxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5pZCA9IGBCZWhhdmlvdXJfJHtCZWhhdmlvdXIuaWQrK31gO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJlaGF2aW91cidzIG5hbWVcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IFwiQmVoYXZpb3VyXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGlzIGJlaGF2aW91cidzIG5ldyBsaWZlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZWFzaW5nPSdlYXNlTGluZWFyJ10gLSBUaGlzIGJlaGF2aW91cidzIG5ldyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMubGlmZSA9IFV0aWwuaW5pdFZhbHVlKGxpZmUsIEluZmluaXR5KTtcbiAgICB0aGlzLmVhc2luZyA9IGVhc2UuZ2V0RWFzaW5nKGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplIGEgZm9yY2UgYnkgMToxMDBcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IGZvcmNlIC0gVGhlIGZvcmNlIHRvIG5vcm1hbGl6ZVxuICAgKiBAcmV0dXJucyB7UHJvdG9uLlZlY3RvcjJEfSBUaGUgbm9ybWFsaXplZCBmb3JjZVxuICAgKi9cbiAgbm9ybWFsaXplRm9yY2UoZm9yY2UpIHtcbiAgICByZXR1cm4gZm9yY2UubXVsdGlwbHlTY2FsYXIoUHJvdG9uLk1FQVNVUkUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBhIHZhbHVlIGJ5IDE6MTAwXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBub3JtYWxpemVcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG5vcm1hbGl6ZWQgdmFsdWVcbiAgICovXG4gIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICogUHJvdG9uLk1FQVNVUkU7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycyBmb3IgYSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZVxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge31cblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgYmVoYXZpb3VyJ3MgbGlmZSBjeWNsZVxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gY2FsY3VsYXRlIGZvclxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuYWdlICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5hZ2UgPj0gdGhpcy5saWZlIHx8IHRoaXMuZGVhZCkge1xuICAgICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuZWFzaW5nKHBhcnRpY2xlLmFnZSAvIHBhcnRpY2xlLmxpZmUpO1xuICAgICAgdGhpcy5lbmVyZ3kgPSBNYXRoLm1heCgxIC0gc2NhbGUsIDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciB0byBhIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgdGhpcyBiZWhhdmlvdXJcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgbGV0IGkgPSB0aGlzLnBhcmVudHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMucGFyZW50c1tpXS5yZW1vdmVCZWhhdmlvdXIodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJlbnRzLmxlbmd0aCA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9yY2UgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkZvcmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeFxuICAgKiBAcGFyYW0ge051bWJlcn0gZnlcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZngsIGZ5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjJEKGZ4LCBmeSkpO1xuICAgIHRoaXMubmFtZSA9IFwiRm9yY2VcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZ4XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGZ4LCBmeSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjJEKGZ4LCBmeSkpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLmEuYWRkKHRoaXMuZm9yY2UpO1xuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG4vKipcbiAqIEF0dHJhY3Rpb24gYmVoYXZpb3IgZm9yIHBhcnRpY2xlcy5cbiAqIFRoaXMgYmVoYXZpb3VyIG1ha2VzIHBhcnRpY2xlcyBmb2xsb3cgYSBzcGVjaWZpYyB0YXJnZXQgcG9zaXRpb24uXG4gKiBAZXh0ZW5kcyBCZWhhdmlvdXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXR0cmFjdGlvbiBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEF0dHJhY3Rpb24uXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIC0gVGhlIGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZm9yY2U9MTAwXSAtIFRoZSBzdHJlbmd0aCBvZiB0aGUgYXR0cmFjdGlvbiBmb3JjZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpdXM9MTAwMF0gLSBUaGUgcmFkaXVzIG9mIGluZmx1ZW5jZSBmb3IgdGhlIGF0dHJhY3Rpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGUgbGlmZSBzcGFuIG9mIHRoaXMgYmVoYXZpb3VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZz0nZWFzZS5lYXNlTGluZWFyJ10gLSBUaGUgZWFzaW5nIGZ1bmN0aW9uIGZvciB0aGlzIGJlaGF2aW91ci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRhcmdldCBwb3NpdGlvbiBmb3IgYXR0cmFjdGlvbi5cbiAgICAgKiBAdHlwZSB7VmVjdG9yMkR9XG4gICAgICovXG4gICAgdGhpcy50YXJnZXRQb3NpdGlvbiA9IFV0aWwuaW5pdFZhbHVlKHRhcmdldFBvc2l0aW9uLCBuZXcgVmVjdG9yMkQoKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcmFkaXVzIG9mIGluZmx1ZW5jZSBmb3IgdGhlIGF0dHJhY3Rpb24uXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnJhZGl1cyA9IFV0aWwuaW5pdFZhbHVlKHJhZGl1cywgMTAwMCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc3RyZW5ndGggb2YgdGhlIGF0dHJhY3Rpb24gZm9yY2UuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmZvcmNlID0gVXRpbC5pbml0VmFsdWUodGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSksIDEwMCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc3F1YXJlZCByYWRpdXMgKGZvciBvcHRpbWl6YXRpb24pLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5yYWRpdXNTcSA9IHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXM7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYXR0cmFjdGlvbiBmb3JjZSB2ZWN0b3IuXG4gICAgICogQHR5cGUge1ZlY3RvcjJEfVxuICAgICAqL1xuICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlID0gbmV3IFZlY3RvcjJEKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc3F1YXJlZCBsZW5ndGggb2YgdGhlIGF0dHJhY3Rpb24gZm9yY2UuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxlbmd0aFNxID0gMDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBiZWhhdmlvdXIuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSBcIkF0dHJhY3Rpb25cIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGJlaGF2aW91cidzIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIC0gVGhlIG5ldyBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2ZvcmNlPTEwMF0gLSBUaGUgbmV3IHN0cmVuZ3RoIG9mIHRoZSBhdHRyYWN0aW9uIGZvcmNlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl1cz0xMDAwXSAtIFRoZSBuZXcgcmFkaXVzIG9mIGluZmx1ZW5jZSBmb3IgdGhlIGF0dHJhY3Rpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGUgbmV3IGxpZmUgc3BhbiBvZiB0aGlzIGJlaGF2aW91ci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2UuZWFzZUxpbmVhciddIC0gVGhlIG5ldyBlYXNpbmcgZnVuY3Rpb24gZm9yIHRoaXMgYmVoYXZpb3VyLlxuICAgKi9cbiAgcmVzZXQodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMudGFyZ2V0UG9zaXRpb24gPSBVdGlsLmluaXRWYWx1ZSh0YXJnZXRQb3NpdGlvbiwgbmV3IFZlY3RvcjJEKCkpO1xuICAgIHRoaXMucmFkaXVzID0gVXRpbC5pbml0VmFsdWUocmFkaXVzLCAxMDAwKTtcbiAgICB0aGlzLmZvcmNlID0gVXRpbC5pbml0VmFsdWUodGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSksIDEwMCk7XG4gICAgdGhpcy5yYWRpdXNTcSA9IHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXM7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmxlbmd0aFNxID0gMDtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoaXMgYmVoYXZpb3VyIHRvIGEgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG8uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGN1cnJlbnQgc2ltdWxhdGlvbiB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHBhcnRpY2xlLlxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLmNvcHkodGhpcy50YXJnZXRQb3NpdGlvbik7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2Uuc3ViKHBhcnRpY2xlLnApO1xuICAgIHRoaXMubGVuZ3RoU3EgPSB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5sZW5ndGhTcSgpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoU3EgPiAwLjAwMDA0ICYmIHRoaXMubGVuZ3RoU3EgPCB0aGlzLnJhZGl1c1NxKSB7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5ub3JtYWxpemUoKTtcbiAgICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLm11bHRpcGx5U2NhbGFyKDEgLSB0aGlzLmxlbmd0aFNxIC8gdGhpcy5yYWRpdXNTcSk7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5tdWx0aXBseVNjYWxhcih0aGlzLmZvcmNlKTtcblxuICAgICAgcGFydGljbGUuYS5hZGQodGhpcy5hdHRyYWN0aW9uRm9yY2UpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhbmRvbURyaWZ0IGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUmFuZG9tRHJpZnRcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WCBcdFx0XHRcdFggdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZHJpZnRZICBcdFx0XHRcdFkgdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVsYXkgXHRcdFx0XHRIb3cgbXVjaCBkZWxheSB0aGUgZHJpZnQgc2hvdWxkIGhhdmVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHRpbWUgVGhlIHRpbWUgb2YgdGhlIGRyaWZ0XG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZHJpZnRYLCBkcmlmdFksIGRlbGF5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChkcmlmdFgsIGRyaWZ0WSwgZGVsYXkpO1xuICAgIHRoaXMudGltZSA9IDA7XG4gICAgdGhpcy5uYW1lID0gXCJSYW5kb21EcmlmdFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUmFuZG9tRHJpZnRcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkcmlmdFggXHRcdFx0XHRYIHZhbHVlIG9mIHRoZSBuZXcgVmVjdG9yMkRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WSAgXHRcdFx0XHRZIHZhbHVlIG9mIHRoZSBuZXcgVmVjdG9yMkRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRlbGF5IFx0XHRcdFx0SG93IG11Y2ggZGVsYXkgdGhlIGRyaWZ0IHNob3VsZCBoYXZlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChkcmlmdFgsIGRyaWZ0WSwgZGVsYXksIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMucGFuRm9jZSA9IG5ldyBWZWN0b3IyRChkcmlmdFgsIGRyaWZ0WSk7XG4gICAgdGhpcy5wYW5Gb2NlID0gdGhpcy5ub3JtYWxpemVGb3JjZSh0aGlzLnBhbkZvY2UpO1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5kYXRhLnRpbWUgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1JhbmRvbURyaWZ0XG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFx0dGltZSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gXHRcdFx0aW5kZXggdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLmRhdGEudGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHBhcnRpY2xlLmRhdGEudGltZSA+PSB0aGlzLmRlbGF5KSB7XG4gICAgICBwYXJ0aWNsZS5hLmFkZFhZKFxuICAgICAgICBNYXRoVXRpbC5yYW5kb21BVG9CKC10aGlzLnBhbkZvY2UueCwgdGhpcy5wYW5Gb2NlLngpLFxuICAgICAgICBNYXRoVXRpbC5yYW5kb21BVG9CKC10aGlzLnBhbkZvY2UueSwgdGhpcy5wYW5Gb2NlLnkpXG4gICAgICApO1xuXG4gICAgICBwYXJ0aWNsZS5kYXRhLnRpbWUgPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IEZvcmNlIGZyb20gXCIuL0ZvcmNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyYXZpdHkgZXh0ZW5kcyBGb3JjZSB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3RvbiNQcm90b24uRm9yY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uR3Jhdml0eVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gZyBcdFx0XHRcdFx0XHRcdEdyYXZpdHlcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihnLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcigwLCBnLCBsaWZlLCBlYXNpbmcpO1xuICAgIHRoaXMubmFtZSA9IFwiR3Jhdml0eVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkdyYXZpdHlcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBnIFx0XHRcdFx0XHRcdFx0R3Jhdml0eVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoZywgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIucmVzZXQoMCwgZywgbGlmZSwgZWFzaW5nKTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBhZnRlciBjb2xsaXNpb25cbiAgICpcbiAgICogQGNhbGxiYWNrIENhbGxiYWNrXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJpdGNsZX0gb3RoZXJQYXJ0aWNsZVxuICAgKi9cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Db2xsaXNpb25cbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIHRvIG1hc3NcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uRW1pdHRlcn0gXHRbZW1pdHRlcj1udWxsXSBcdFx0dGhlIGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBcdFx0W21hc3M9dHJ1ZV1cbiAgICogQHBhcmFtIHtDYWxsYmFja31cdCBcdFtjYWxsYmFjaz1udWxsXVx0XHR0aGUgY2FsbGJhY2sgYWZ0ZXIgdGhlIGNvbGxpc2lvblxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGVtaXR0ZXIsIG1hc3MsIGNhbGxiYWNrLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuICAgIHRoaXMucmVzZXQoZW1pdHRlciwgbWFzcywgY2FsbGJhY2spO1xuICAgIHRoaXMubmV3UG9vbCA9IFtdO1xuICAgIHRoaXMucG9vbCA9IFtdO1xuICAgIHRoaXMubmFtZSA9IFwiQ29sbGlzaW9uXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbGxpc2lvblxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gdG8gbWFzc1xuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5FbWl0dGVyfSBcdFtlbWl0dGVyPW51bGxdIFx0XHR0aGUgYXR0cmFjdGlvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFx0XHRbbWFzcz10cnVlXVxuICAgKiBAcGFyYW0ge0NhbGxiYWNrfVx0IFx0W2NhbGxiYWNrPW51bGxdXHRcdHRoZSBjYWxsYmFjayBhZnRlciB0aGUgY29sbGlzaW9uXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0XHRbbGlmZT1JbmZpbml0eV0gXHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChlbWl0dGVyLCBtYXNzLCBjYWxsYmFjaywgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5lbWl0dGVyID0gVXRpbC5pbml0VmFsdWUoZW1pdHRlciwgbnVsbCk7XG4gICAgdGhpcy5tYXNzID0gVXRpbC5pbml0VmFsdWUobWFzcywgdHJ1ZSk7XG4gICAgdGhpcy5jYWxsYmFjayA9IFV0aWwuaW5pdFZhbHVlKGNhbGxiYWNrLCBudWxsKTtcblxuICAgIHRoaXMuY29sbGlzaW9uUG9vbCA9IFtdO1xuICAgIHRoaXMuZGVsdGEgPSBuZXcgVmVjdG9yMkQoKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbGxpc2lvblxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgaWYgKHRoaXMuZW1pdHRlcikge1xuICAgICAgVXRpbC5zbGljZUFycmF5KHRoaXMuZW1pdHRlci5wYXJ0aWNsZXMsIGluZGV4LCB0aGlzLm5ld1Bvb2wpO1xuICAgIH0gZWxzZSB7XG4gICAgICBVdGlsLnNsaWNlQXJyYXkodGhpcy5wb29sLCBpbmRleCwgdGhpcy5uZXdQb29sKTtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLm5ld1Bvb2wubGVuZ3RoO1xuICAgIGxldCBvdGhlclBhcnRpY2xlO1xuICAgIGxldCBsZW5ndGhTcTtcbiAgICBsZXQgb3ZlcmxhcDtcbiAgICBsZXQgdG90YWxNYXNzO1xuICAgIGxldCBhdmVyYWdlTWFzczEsIGF2ZXJhZ2VNYXNzMjtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgb3RoZXJQYXJ0aWNsZSA9IHRoaXMubmV3UG9vbFtpXTtcblxuICAgICAgaWYgKG90aGVyUGFydGljbGUgIT09IHBhcnRpY2xlKSB7XG4gICAgICAgIHRoaXMuZGVsdGEuY29weShvdGhlclBhcnRpY2xlLnApO1xuICAgICAgICB0aGlzLmRlbHRhLnN1YihwYXJ0aWNsZS5wKTtcblxuICAgICAgICBsZW5ndGhTcSA9IHRoaXMuZGVsdGEubGVuZ3RoU3EoKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBwYXJ0aWNsZS5yYWRpdXMgKyBvdGhlclBhcnRpY2xlLnJhZGl1cztcblxuICAgICAgICBpZiAobGVuZ3RoU3EgPD0gZGlzdGFuY2UgKiBkaXN0YW5jZSkge1xuICAgICAgICAgIG92ZXJsYXAgPSBkaXN0YW5jZSAtIE1hdGguc3FydChsZW5ndGhTcSk7XG4gICAgICAgICAgb3ZlcmxhcCArPSAwLjU7XG5cbiAgICAgICAgICB0b3RhbE1hc3MgPSBwYXJ0aWNsZS5tYXNzICsgb3RoZXJQYXJ0aWNsZS5tYXNzO1xuICAgICAgICAgIGF2ZXJhZ2VNYXNzMSA9IHRoaXMubWFzcyA/IG90aGVyUGFydGljbGUubWFzcyAvIHRvdGFsTWFzcyA6IDAuNTtcbiAgICAgICAgICBhdmVyYWdlTWFzczIgPSB0aGlzLm1hc3MgPyBwYXJ0aWNsZS5tYXNzIC8gdG90YWxNYXNzIDogMC41O1xuXG4gICAgICAgICAgcGFydGljbGUucC5hZGQoXG4gICAgICAgICAgICB0aGlzLmRlbHRhXG4gICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgIC5ub3JtYWxpemUoKVxuICAgICAgICAgICAgICAubXVsdGlwbHlTY2FsYXIob3ZlcmxhcCAqIC1hdmVyYWdlTWFzczEpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvdGhlclBhcnRpY2xlLnAuYWRkKHRoaXMuZGVsdGEubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIob3ZlcmxhcCAqIGF2ZXJhZ2VNYXNzMikpO1xuXG4gICAgICAgICAgdGhpcy5jYWxsYmFjayAmJiB0aGlzLmNhbGxiYWNrKHBhcnRpY2xlLCBvdGhlclBhcnRpY2xlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyb3NzWm9uZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIGNvbWUgdG8gdGhlIGVuZCBvZiB0aGUgc3BlY2lmaWVkIHpvbmVcbiAgICpcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkNyb3NzWm9uZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5ab25lfSB6b25lIFx0XHRcdFx0XHRcdGNhbiBiZSBhbnkgUHJvdG9uLlpvbmUgLSBlLmcuIFByb3Rvbi5SZWN0Wm9uZSgpXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Nyb3NzVHlwZT1kZWFkXSBcdFx0XHR3aGF0IGhhcHBlbnMgaWYgdGhlIHBhcnRpY2xlcyBwYXNzIHRoZSB6b25lIC0gYWxsb3dlZCBzdHJpbmdzOiBkZWFkIHwgYm91bmQgfCBjcm9zc1xuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFx0XHRbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHpvbmUsIGNyb3NzVHlwZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoem9uZSwgY3Jvc3NUeXBlKTtcbiAgICB0aGlzLm5hbWUgPSBcIkNyb3NzWm9uZVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNyb3NzWm9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uWm9uZX0gem9uZSBcdFx0XHRcdGNhbiBiZSBhbnkgUHJvdG9uLlpvbmUgLSBlLmcuIFByb3Rvbi5SZWN0Wm9uZSgpXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Nyb3NzVHlwZT1kZWFkXSBcdHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIHBhc3MgdGhlIHpvbmUgLSBhbGxvd2VkIHN0cmluZ3M6IGRlYWQgfCBib3VuZCB8IGNyb3NzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0W2xpZmU9SW5maW5pdHldIFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Vhc2luZz1lYXNlTGluZWFyXVx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KHpvbmUsIGNyb3NzVHlwZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy56b25lID0gem9uZTtcbiAgICB0aGlzLnpvbmUuY3Jvc3NUeXBlID0gVXRpbC5pbml0VmFsdWUoY3Jvc3NUeXBlLCBcImRlYWRcIik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNyb3NzWm9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHRoaXMuem9uZS5jcm9zc2luZyhwYXJ0aWNsZSk7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG4vKipcbiAqIEFscGhhIGJlaGF2aW91ciBmb3IgY29udHJvbGxpbmcgcGFydGljbGUgb3BhY2l0eSBvdmVyIHRpbWUuXG4gKiBAZXh0ZW5kcyBCZWhhdmlvdXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWxwaGEgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzYW1lO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3Bhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGE7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYjtcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQWxwaGEgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFthPTFdIC0gVGhlIGluaXRpYWwgYWxwaGEgdmFsdWUgb3IgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFtiXSAtIFRoZSBmaW5hbCBhbHBoYSB2YWx1ZSBvciByYW5nZS4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIHRoZSBzYW1lIGFzICdhJy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoaXMgYmVoYXZpb3VyJ3MgbGlmZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2VMaW5lYXInXSAtIFRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoYSwgYik7XG4gICAgdGhpcy5uYW1lID0gXCJBbHBoYVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFthPTFdIC0gVGhlIGluaXRpYWwgYWxwaGEgdmFsdWUgb3IgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFtiXSAtIFRoZSBmaW5hbCBhbHBoYSB2YWx1ZSBvciByYW5nZS4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIHRoZSBzYW1lIGFzICdhJy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlXSAtIFRoaXMgYmVoYXZpb3VyJ3MgbGlmZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmddIC0gVGhpcyBiZWhhdmlvdXIncyBlYXNpbmcgZnVuY3Rpb24uXG4gICAqL1xuICByZXNldChhLCBiLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnNhbWUgPSBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZDtcbiAgICB0aGlzLmEgPSBTcGFuLnNldFNwYW5WYWx1ZShVdGlsLmluaXRWYWx1ZShhLCAxKSk7XG4gICAgdGhpcy5iID0gU3Bhbi5zZXRTcGFuVmFsdWUoYik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHBhcnRpY2xlJ3MgYWxwaGEgdmFsdWVzLlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmRhdGEuYWxwaGFBID0gdGhpcy5hLmdldFZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5zYW1lKSBwYXJ0aWNsZS5kYXRhLmFscGhhQiA9IHBhcnRpY2xlLmRhdGEuYWxwaGFBO1xuICAgIGVsc2UgcGFydGljbGUuZGF0YS5hbHBoYUIgPSB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBhbHBoYSBiZWhhdmlvdXIgdG8gdGhlIHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFRoZSBjdXJyZW50IHNpbXVsYXRpb24gdGltZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBwYXJ0aWNsZS5cbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBwYXJ0aWNsZS5hbHBoYSA9IHBhcnRpY2xlLmRhdGEuYWxwaGFCICsgKHBhcnRpY2xlLmRhdGEuYWxwaGFBIC0gcGFydGljbGUuZGF0YS5hbHBoYUIpICogdGhpcy5lbmVyZ3k7XG5cbiAgICBpZiAocGFydGljbGUuYWxwaGEgPCAwLjAwMSkgcGFydGljbGUuYWxwaGEgPSAwO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuLyoqXG4gKiBTY2FsZSBiZWhhdmlvdXIgZm9yIGNvbnRyb2xsaW5nIHBhcnRpY2xlIHNpemUgb3ZlciB0aW1lLlxuICogQGV4dGVuZHMgQmVoYXZpb3VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYWxlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2FtZTtcblxuICAvKipcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIG5hbWU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU2NhbGUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFthPTFdIC0gVGhlIGluaXRpYWwgc2NhbGUgdmFsdWUgb3IgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IFtiXSAtIFRoZSBmaW5hbCBzY2FsZSB2YWx1ZSBvciByYW5nZS4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIHRoZSBzYW1lIGFzICdhJy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaWZlPUluZmluaXR5XSAtIFRoaXMgYmVoYXZpb3VyJ3MgbGlmZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2VMaW5lYXInXSAtIFRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoYSwgYik7XG4gICAgdGhpcy5uYW1lID0gXCJTY2FsZVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfFNwYW59IGEgLSBUaGUgaW5pdGlhbCBzY2FsZSB2YWx1ZSBvciByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ8U3Bhbn0gW2JdIC0gVGhlIGZpbmFsIHNjYWxlIHZhbHVlIG9yIHJhbmdlLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYXMgJ2EnLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmVdIC0gVGhpcyBiZWhhdmlvdXIncyBsaWZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZ10gLSBUaGlzIGJlaGF2aW91cidzIGVhc2luZyBmdW5jdGlvbi5cbiAgICovXG4gIHJlc2V0KGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuc2FtZSA9IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIDEpKTtcbiAgICB0aGlzLmIgPSBTcGFuLnNldFNwYW5WYWx1ZShiKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgcGFydGljbGUncyBzY2FsZSB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUuXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuZGF0YS5zY2FsZUEgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLm9sZFJhZGl1cyA9IHBhcnRpY2xlLnJhZGl1cztcbiAgICBwYXJ0aWNsZS5kYXRhLnNjYWxlQiA9IHRoaXMuc2FtZSA/IHBhcnRpY2xlLmRhdGEuc2NhbGVBIDogdGhpcy5iLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgc2NhbGUgYmVoYXZpb3VyIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0by5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBUaGUgY3VycmVudCBzaW11bGF0aW9uIHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgcGFydGljbGUuXG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLnNjYWxlID0gcGFydGljbGUuZGF0YS5zY2FsZUIgKyAocGFydGljbGUuZGF0YS5zY2FsZUEgLSBwYXJ0aWNsZS5kYXRhLnNjYWxlQikgKiB0aGlzLmVuZXJneTtcblxuICAgIGlmIChwYXJ0aWNsZS5zY2FsZSA8IDAuMDAwMSkgcGFydGljbGUuc2NhbGUgPSAwO1xuICAgIHBhcnRpY2xlLnJhZGl1cyA9IHBhcnRpY2xlLmRhdGEub2xkUmFkaXVzICogcGFydGljbGUuc2NhbGU7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG4vKipcbiAqIFJvdGF0ZSBiZWhhdmlvdXIgZm9yIGNvbnRyb2xsaW5nIHBhcnRpY2xlIHJvdGF0aW9uLlxuICogQGV4dGVuZHMgQmVoYXZpb3VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdGF0ZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNhbWU7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtTcGFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYTtcblxuICAvKipcbiAgICogQHR5cGUge1NwYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBiO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3R5bGU7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFJvdGF0ZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfFNwYW59IFtpbmZsdWVuY2U9J1ZlbG9jaXR5J10gLSBUaGUgcm90YXRpb24ncyBpbmZsdWVuY2Ugb3IgaW5pdGlhbCByb3RhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfFNwYW59IFtiXSAtIFRoZSBmaW5hbCByb3RhdGlvbiB2YWx1ZSBvciByYW5nZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHlsZT0ndG8nXSAtIFRoZSBzdHlsZSBvZiByb3RhdGlvbiAoJ3RvJyBvciAnYWRkJykuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGlzIGJlaGF2aW91cidzIGxpZmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZWFzaW5nPSdlYXNlTGluZWFyJ10gLSBUaGlzIGJlaGF2aW91cidzIGVhc2luZyBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGluZmx1ZW5jZSwgYiwgc3R5bGUsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGluZmx1ZW5jZSwgYiwgc3R5bGUpO1xuICAgIHRoaXMubmFtZSA9IFwiUm90YXRlXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfFNwYW59IFthPSdWZWxvY2l0eSddIC0gVGhlIHJvdGF0aW9uJ3MgaW5mbHVlbmNlIG9yIGluaXRpYWwgcm90YXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxTcGFufSBbYl0gLSBUaGUgZmluYWwgcm90YXRpb24gdmFsdWUgb3IgcmFuZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc3R5bGU9J3RvJ10gLSBUaGUgc3R5bGUgb2Ygcm90YXRpb24gKCd0bycgb3IgJ2FkZCcpLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmVdIC0gVGhpcyBiZWhhdmlvdXIncyBsaWZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Vhc2luZ10gLSBUaGlzIGJlaGF2aW91cidzIGVhc2luZyBmdW5jdGlvbi5cbiAgICovXG4gIHJlc2V0KGEsIGIsIHN0eWxlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnNhbWUgPSBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIFwiVmVsb2NpdHlcIikpO1xuICAgIHRoaXMuYiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGIsIDApKTtcbiAgICB0aGlzLnN0eWxlID0gVXRpbC5pbml0VmFsdWUoc3R5bGUsIFwidG9cIik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJlaGF2aW91cidzIHBhcmFtZXRlcnMgZm9yIGEgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGFydGljbGUucm90YXRpb24gLSBUaGUgcGFydGljbGUncyByb3RhdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlLmRhdGEgLSBUaGUgcGFydGljbGUncyBkYXRhIG9iamVjdC5cbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5yb3RhdGlvbiA9IHRoaXMuYS5nZXRWYWx1ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEucm90YXRpb25BID0gdGhpcy5hLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXRoaXMuc2FtZSkgcGFydGljbGUuZGF0YS5yb3RhdGlvbkIgPSB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoaXMgYmVoYXZpb3VyIHRvIGEgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFRoZSBpbnRlZ3JhdGUgdGltZSAoMS9tcykuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIFRoZSBwYXJ0aWNsZSBpbmRleC5cbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBpZiAoIXRoaXMuc2FtZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUgPT09IFwidG9cIiB8fCB0aGlzLnN0eWxlID09PSBcIlRPXCIgfHwgdGhpcy5zdHlsZSA9PT0gXCJfXCIpIHtcbiAgICAgICAgcGFydGljbGUucm90YXRpb24gKz1cbiAgICAgICAgICBwYXJ0aWNsZS5kYXRhLnJvdGF0aW9uQiArIChwYXJ0aWNsZS5kYXRhLnJvdGF0aW9uQSAtIHBhcnRpY2xlLmRhdGEucm90YXRpb25CKSAqIHRoaXMuZW5lcmd5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydGljbGUucm90YXRpb24gKz0gcGFydGljbGUuZGF0YS5yb3RhdGlvbkI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmEuYSA9PT0gXCJWXCIgfHwgdGhpcy5hLmEgPT09IFwiVmVsb2NpdHlcIiB8fCB0aGlzLmEuYSA9PT0gXCJ2XCIpIHtcbiAgICAgIC8vIGJldGEuLi5cbiAgICAgIHBhcnRpY2xlLnJvdGF0aW9uID0gcGFydGljbGUuZ2V0RGlyZWN0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBBcnJheVNwYW4gZnJvbSBcIi4uL21hdGgvQXJyYXlTcGFuXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2xvciBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uQ29sb3JcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uQXJyYXlTcGFuIHwgU3RyaW5nfSBbYV0gdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IFtiXSB0aGUgc3RyaW5nIHNob3VsZCBiZSBhIGhleCBlLmcuICMwMDAwMDAgZm9yIGJsYWNrXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGEsIGIpO1xuICAgIHRoaXMubmFtZSA9IFwiQ29sb3JcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Db2xvclxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uQXJyYXlTcGFuIHwgU3RyaW5nfSBhIHRoZSBzdHJpbmcgc2hvdWxkIGJlIGEgaGV4IGUuZy4gIzAwMDAwMCBmb3IgYmxhY2tcbiAgICogQHBhcmFtIHtQcm90b24uQXJyYXlTcGFuIHwgU3RyaW5nfSBiIHRoZSBzdHJpbmcgc2hvdWxkIGJlIGEgaGV4IGUuZy4gIzAwMDAwMCBmb3IgYmxhY2tcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChhLCBiLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmEgPSBBcnJheVNwYW4uY3JlYXRlQXJyYXlTcGFuKGEpO1xuICAgIHRoaXMuYiA9IEFycmF5U3Bhbi5jcmVhdGVBcnJheVNwYW4oYik7XG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJlaGF2aW91cidzIHBhcmFtZXRlcnMgZm9yIGFsbCBwYXJ0aWNsZXNcbiAgICpcbiAgICogQG1ldGhvZCBpbml0aWFsaXplXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbG9yXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5jb2xvciA9IHRoaXMuYS5nZXRWYWx1ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEuY29sb3JBID0gQ29sb3JVdGlsLmhleFRvUmdiKHBhcnRpY2xlLmNvbG9yKTtcblxuICAgIGlmICh0aGlzLmIpIHBhcnRpY2xlLmRhdGEuY29sb3JCID0gQ29sb3JVdGlsLmhleFRvUmdiKHRoaXMuYi5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgaWYgKHRoaXMuYikge1xuICAgICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgICAgcGFydGljbGUucmdiLnIgPSBwYXJ0aWNsZS5kYXRhLmNvbG9yQi5yICsgKHBhcnRpY2xlLmRhdGEuY29sb3JBLnIgLSBwYXJ0aWNsZS5kYXRhLmNvbG9yQi5yKSAqIHRoaXMuZW5lcmd5O1xuICAgICAgcGFydGljbGUucmdiLmcgPSBwYXJ0aWNsZS5kYXRhLmNvbG9yQi5nICsgKHBhcnRpY2xlLmRhdGEuY29sb3JBLmcgLSBwYXJ0aWNsZS5kYXRhLmNvbG9yQi5nKSAqIHRoaXMuZW5lcmd5O1xuICAgICAgcGFydGljbGUucmdiLmIgPSBwYXJ0aWNsZS5kYXRhLmNvbG9yQi5iICsgKHBhcnRpY2xlLmRhdGEuY29sb3JBLmIgLSBwYXJ0aWNsZS5kYXRhLmNvbG9yQi5iKSAqIHRoaXMuZW5lcmd5O1xuXG4gICAgICBwYXJ0aWNsZS5yZ2IuciA9IHBhcnRpY2xlLnJnYi5yIDw8IDA7XG4gICAgICBwYXJ0aWNsZS5yZ2IuZyA9IHBhcnRpY2xlLnJnYi5nIDw8IDA7XG4gICAgICBwYXJ0aWNsZS5yZ2IuYiA9IHBhcnRpY2xlLnJnYi5iIDw8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLnJnYi5yID0gcGFydGljbGUuZGF0YS5jb2xvckEucjtcbiAgICAgIHBhcnRpY2xlLnJnYi5nID0gcGFydGljbGUuZGF0YS5jb2xvckEuZztcbiAgICAgIHBhcnRpY2xlLnJnYi5iID0gcGFydGljbGUuZGF0YS5jb2xvckEuYjtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5jb25zdCBDSEFOR0lORyA9IFwiY2hhbmdpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3ljbG9uZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uQ3ljbG9uZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYW5nbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZvcmNlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFuZ2xlLCBmb3JjZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcbiAgICB0aGlzLnNldEFuZ2xlQW5kRm9yY2UoYW5nbGUsIGZvcmNlKTtcbiAgICB0aGlzLm5hbWUgPSBcIkN5Y2xvbmVcIjtcbiAgfVxuXG4gIHNldEFuZ2xlQW5kRm9yY2UoYW5nbGUsIGZvcmNlKSB7XG4gICAgdGhpcy5mb3JjZSA9IENIQU5HSU5HO1xuICAgIHRoaXMuYW5nbGUgPSBNYXRoVXRpbC5QSSAvIDI7XG5cbiAgICBpZiAoYW5nbGUgPT09IFwicmlnaHRcIikge1xuICAgICAgdGhpcy5hbmdsZSA9IE1hdGhVdGlsLlBJIC8gMjtcbiAgICB9IGVsc2UgaWYgKGFuZ2xlID09PSBcImxlZnRcIikge1xuICAgICAgdGhpcy5hbmdsZSA9IC1NYXRoVXRpbC5QSSAvIDI7XG4gICAgfSBlbHNlIGlmIChhbmdsZSA9PT0gXCJyYW5kb21cIikge1xuICAgICAgdGhpcy5hbmdsZSA9IFwicmFuZG9tXCI7XG4gICAgfSBlbHNlIGlmIChhbmdsZSBpbnN0YW5jZW9mIFNwYW4pIHtcbiAgICAgIHRoaXMuYW5nbGUgPSBcInNwYW5cIjtcbiAgICAgIHRoaXMuc3BhbiA9IGFuZ2xlO1xuICAgIH0gZWxzZSBpZiAoYW5nbGUpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSBhbmdsZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBTdHJpbmcoZm9yY2UpLnRvTG93ZXJDYXNlKCkgPT09IFwiY2hhbmdpbmdcIiB8fFxuICAgICAgU3RyaW5nKGZvcmNlKS50b0xvd2VyQ2FzZSgpID09PSBcImNoYW5nXCIgfHxcbiAgICAgIFN0cmluZyhmb3JjZSkudG9Mb3dlckNhc2UoKSA9PT0gXCJhdXRvXCJcbiAgICApIHtcbiAgICAgIHRoaXMuZm9yY2UgPSBDSEFOR0lORztcbiAgICB9IGVsc2UgaWYgKGZvcmNlKSB7XG4gICAgICB0aGlzLmZvcmNlID0gZm9yY2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkN5Y2xvbmVcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gZm9yY2VcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChhbmdsZSwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuYW5nbGUgPSBNYXRoVXRpbC5QSSAvIDI7XG4gICAgdGhpcy5zZXRBbmdsZUFuZEZvcmNlKGFuZ2xlLCBmb3JjZSk7XG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmFuZ2xlID09PSBcInJhbmRvbVwiKSB7XG4gICAgICBwYXJ0aWNsZS5kYXRhLmNhbmdsZSA9IE1hdGhVdGlsLnJhbmRvbUFUb0IoLU1hdGhVdGlsLlBJLCBNYXRoVXRpbC5QSSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFuZ2xlID09PSBcInNwYW5cIikge1xuICAgICAgcGFydGljbGUuZGF0YS5jYW5nbGUgPSB0aGlzLnNwYW4uZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUgPSBuZXcgVmVjdG9yMkQoMCwgMCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkN5Y2xvbmVcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIGxldCBsZW5ndGg7XG4gICAgbGV0IGdyYWRpZW50ID0gcGFydGljbGUudi5nZXRHcmFkaWVudCgpO1xuICAgIGlmICh0aGlzLmFuZ2xlID09PSBcInJhbmRvbVwiIHx8IHRoaXMuYW5nbGUgPT09IFwic3BhblwiKSB7XG4gICAgICBncmFkaWVudCArPSBwYXJ0aWNsZS5kYXRhLmNhbmdsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JhZGllbnQgKz0gdGhpcy5hbmdsZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JjZSA9PT0gQ0hBTkdJTkcpIHtcbiAgICAgIGxlbmd0aCA9IHBhcnRpY2xlLnYubGVuZ3RoKCkgLyAxMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRoaXMuZm9yY2U7XG4gICAgfVxuXG4gICAgcGFydGljbGUuZGF0YS5jeWNsb25lLnggPSBsZW5ndGggKiBNYXRoLmNvcyhncmFkaWVudCk7XG4gICAgcGFydGljbGUuZGF0YS5jeWNsb25lLnkgPSBsZW5ndGggKiBNYXRoLnNpbihncmFkaWVudCk7XG4gICAgcGFydGljbGUuZGF0YS5jeWNsb25lID0gdGhpcy5ub3JtYWxpemVGb3JjZShwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUpO1xuICAgIHBhcnRpY2xlLmEuYWRkKHBhcnRpY2xlLmRhdGEuY3ljbG9uZSk7XG4gIH1cbn1cbiIsImltcG9ydCBBdHRyYWN0aW9uIGZyb20gXCIuL0F0dHJhY3Rpb25cIjtcblxuLyoqXG4gKiBUaGUgb3Bwb3NpdGUgb2YgQXR0cmFjdGlvbiAtIHR1cm5zIHRoZSBmb3JjZVxuICpcbiAqIEBjbGFzc1xuICogQGV4dGVuZHMgUHJvdG9uLkF0dHJhY3Rpb25cbiAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICogQGFsaWFzIFByb3Rvbi5SZXB1bHNpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVwdWxzaW9uIGV4dGVuZHMgQXR0cmFjdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFJlcHVsc2lvbiBiZWhhdmlvdXIgaW5zdGFuY2VcbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UHJvdG9uLlZlY3RvcjJEfSB0YXJnZXRQb3NpdGlvbiAtIFRoZSByZXB1bHNpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtmb3JjZT0xMDBdIC0gVGhlIHN0cmVuZ3RoIG9mIHRoZSByZXB1bHNpb24gZm9yY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpdXM9MTAwMF0gLSBUaGUgcmFkaXVzIG9mIGluZmx1ZW5jZSBmb3IgdGhlIHJlcHVsc2lvblxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9SW5maW5pdHldIC0gVGhlIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2VMaW5lYXInXSAtIFRoZSBiZWhhdmlvdXIncyBlYXNpbmcgZnVuY3Rpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcih0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzdHJlbmd0aCBvZiB0aGUgcmVwdWxzaW9uIGZvcmNlXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmZvcmNlICo9IC0xO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGJlaGF2aW91clxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gXCJSZXB1bHNpb25cIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIC0gVGhlIG5ldyByZXB1bHNpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtmb3JjZT0xMDBdIC0gVGhlIG5ldyBzdHJlbmd0aCBvZiB0aGUgcmVwdWxzaW9uIGZvcmNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXVzPTEwMDBdIC0gVGhlIG5ldyByYWRpdXMgb2YgaW5mbHVlbmNlIGZvciB0aGUgcmVwdWxzaW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGUgbmV3IGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlYXNpbmc9J2Vhc2VMaW5lYXInXSAtIFRoZSBuZXcgYmVoYXZpb3VyJ3MgZWFzaW5nIGZ1bmN0aW9uXG4gICAqL1xuICByZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIucmVzZXQodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5mb3JjZSAqPSAtMTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3Jhdml0eVdlbGwgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBCZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBHcmF2aXR5V2VsbFxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSBbY2VudGVyUG9pbnQ9bmV3IFZlY3RvcjJEXSBUaGUgcG9pbnQgaW4gdGhlIGNlbnRlclxuICAgKiBAcGFyYW0ge051bWJlcn0gW2ZvcmNlPTEwMF1cdFx0XHRcdFx0VGhlIGZvcmNlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV1cdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXVx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjZW50ZXJQb2ludCwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLmRpc3RhbmNlVmVjID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5jZW50ZXJQb2ludCA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlclBvaW50LCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgdGhpcy5uYW1lID0gXCJHcmF2aXR5V2VsbFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jR3Jhdml0eVdlbGxcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IFtjZW50ZXJQb2ludD1uZXcgVmVjdG9yMkRdIFRoZSBwb2ludCBpbiB0aGUgY2VudGVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVx0XHRcdFx0XHRUaGUgZm9yY2VcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XVx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoY2VudGVyUG9pbnQsIGZvcmNlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmRpc3RhbmNlVmVjID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5jZW50ZXJQb2ludCA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlclBvaW50LCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7fVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNHcmF2aXR5V2VsbFxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZGlzdGFuY2VWZWMuc2V0KHRoaXMuY2VudGVyUG9pbnQueCAtIHBhcnRpY2xlLnAueCwgdGhpcy5jZW50ZXJQb2ludC55IC0gcGFydGljbGUucC55KTtcbiAgICBjb25zdCBkaXN0YW5jZVNxID0gdGhpcy5kaXN0YW5jZVZlYy5sZW5ndGhTcSgpO1xuXG4gICAgaWYgKGRpc3RhbmNlU3EgIT09IDApIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5kaXN0YW5jZVZlYy5sZW5ndGgoKTtcbiAgICAgIGNvbnN0IGZhY3RvciA9ICh0aGlzLmZvcmNlICogdGltZSkgLyAoZGlzdGFuY2VTcSAqIGRpc3RhbmNlKTtcblxuICAgICAgcGFydGljbGUudi54ICs9IGZhY3RvciAqIHRoaXMuZGlzdGFuY2VWZWMueDtcbiAgICAgIHBhcnRpY2xlLnYueSArPSBmYWN0b3IgKiB0aGlzLmRpc3RhbmNlVmVjLnk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgUHJvcFV0aWwgZnJvbSBcIi4uL3V0aWxzL1Byb3BVdGlsXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpbml0aWFsaXplKGVtaXR0ZXIsIHBhcnRpY2xlLCBpbml0aWFsaXplcykge1xuICAgIGNvbnN0IGxlbmd0aCA9IGluaXRpYWxpemVzLmxlbmd0aDtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGluaXRpYWxpemVzW2ldIGluc3RhbmNlb2YgSW5pdGlhbGl6ZSkge1xuICAgICAgICBpbml0aWFsaXplc1tpXS5pbml0KGVtaXR0ZXIsIHBhcnRpY2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmluZEVtaXR0ZXIoZW1pdHRlciwgcGFydGljbGUpO1xuICB9LFxuXG4gIC8vIGluaXRcbiAgaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZSkge1xuICAgIFByb3BVdGlsLnNldFByb3AocGFydGljbGUsIGluaXRpYWxpemUpO1xuICAgIFByb3BVdGlsLnNldFZlY3RvclZhbChwYXJ0aWNsZSwgaW5pdGlhbGl6ZSk7XG4gIH0sXG5cbiAgYmluZEVtaXR0ZXIoZW1pdHRlciwgcGFydGljbGUpIHtcbiAgICBpZiAoZW1pdHRlci5iaW5kRW1pdHRlcikge1xuICAgICAgcGFydGljbGUucC5hZGQoZW1pdHRlci5wKTtcbiAgICAgIHBhcnRpY2xlLnYuYWRkKGVtaXR0ZXIudik7XG4gICAgICBwYXJ0aWNsZS5hLmFkZChlbWl0dGVyLmEpO1xuICAgICAgcGFydGljbGUudi5yb3RhdGUoTWF0aFV0aWwuZGVncmVlVHJhbnNmb3JtKGVtaXR0ZXIucm90YXRpb24pKTtcbiAgICB9XG4gIH1cbn07XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFB1aWQgZnJvbSBcIi4uL3V0aWxzL1B1aWRcIjtcbmltcG9ydCBQYXJ0aWNsZSBmcm9tIFwiLi4vY29yZS9QYXJ0aWNsZVwiO1xuaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50RGlzcGF0Y2hlclwiO1xuXG5pbXBvcnQgUmF0ZSBmcm9tIFwiLi4vaW5pdGlhbGl6ZS9SYXRlXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZVV0aWwgZnJvbSBcIi4uL2luaXRpYWxpemUvSW5pdGlhbGl6ZVV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1pdHRlciBleHRlbmRzIFBhcnRpY2xlIHtcbiAgLyoqXG4gICAqIFlvdSBjYW4gdXNlIHRoaXMgZW1pdCBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEl0IHdpbGwgZGlzcGF0Y2ggZm9sbG93IGV2ZW50czpcbiAgICogUEFSVElDTEVfQ1JFQVRFRFxuICAgKiBQQVJUSUNMRV9VUERBVEFcbiAgICogUEFSVElDTEVfREVBRFxuICAgKlxuICAgKiBAY2xhc3MgRW1pdHRlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmYgdGhlIHBhcmFtZXRlcnMgb2JqZWN0O1xuICAgKiBmb3IgZXhhbXBsZSB7ZGFtcGluZzowLjAxLGJpbmRFbWl0dGVyOmZhbHNlfVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZiA9IHt9KSB7XG4gICAgc3VwZXIoY29uZik7XG5cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IFtdO1xuICAgIHRoaXMuaW5pdGlhbGl6ZXMgPSBbXTtcblxuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMuZW1pdFNwZWVkID0gMDtcbiAgICB0aGlzLnRvdGFsVGltZSA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZyaWN0aW9uIGNvZWZmaWNpZW50IGZvciBhbGwgcGFydGljbGUgZW1pdCBieSBUaGlzO1xuICAgICAqIEBwcm9wZXJ0eSBkYW1waW5nXG4gICAgICogQHR5cGUge051bWJlcn1cbiAgICAgKiBAZGVmYXVsdCAwLjAwNlxuICAgICAqL1xuICAgIHRoaXMuZGFtcGluZyA9IDAuMDA2O1xuXG4gICAgLyoqXG4gICAgICogSWYgYmluZEVtaXR0ZXIgdGhlIHBhcnRpY2xlcyBjYW4gYmluZCB0aGlzIGVtaXR0ZXIncyBwcm9wZXJ0eTtcbiAgICAgKiBAcHJvcGVydHkgYmluZEVtaXR0ZXJcbiAgICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyBwZXIgc2Vjb25kIGVtaXQgKGEgW3BhcnRpY2xlXS9iIFtzXSk7XG4gICAgICogQHByb3BlcnR5IHJhdGVcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKiBAZGVmYXVsdCBSYXRlKDEsIC4xKVxuICAgICAqL1xuICAgIHRoaXMucmF0ZSA9IG5ldyBSYXRlKDEsIDAuMSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIkVtaXR0ZXJcIjtcbiAgICB0aGlzLmlkID0gUHVpZC5pZCh0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0IGVtaXQgcGFydGljbGVcbiAgICogQG1ldGhvZCBlbWl0XG4gICAqIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSBbdG90YWxUaW1lXSBiZWdpbiBlbWl0IHRpbWU7XG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgYm9vbGVhbn0gW2xpZmVdIHRoZSBsaWZlIG9mIHRoaXMgZW1pdHRlclxuICAgKi9cbiAgZW1pdCh0b3RhbFRpbWUsIGxpZmUpIHtcbiAgICB0aGlzLnN0b3BlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gVXRpbC5pbml0VmFsdWUodG90YWxUaW1lLCBJbmZpbml0eSk7XG5cbiAgICBpZiAobGlmZSA9PT0gdHJ1ZSB8fCBsaWZlID09PSBcImxpZmVcIiB8fCBsaWZlID09PSBcImRlc3Ryb3lcIikge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxUaW1lID09PSBcIm9uY2VcIiA/IDEgOiB0aGlzLnRvdGFsVGltZTtcbiAgICB9IGVsc2UgaWYgKCFpc05hTihsaWZlKSkge1xuICAgICAgdGhpcy5saWZlID0gbGlmZTtcbiAgICB9XG4gICAgdGhpcy5yYXRlLmluaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdG9wIGVtaXRpbmdcbiAgICogQG1ldGhvZCBzdG9wXG4gICAqL1xuICBzdG9wKCkge1xuICAgIHRoaXMudG90YWxUaW1lID0gLTE7XG4gICAgdGhpcy5lbWl0VGltZSA9IDA7XG4gICAgdGhpcy5zdG9wZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJlRW1pdCh0aW1lKSB7XG4gICAgbGV0IG9sZFN0b3BlZCA9IHRoaXMuc3RvcGVkO1xuICAgIGxldCBvbGRFbWl0VGltZSA9IHRoaXMuZW1pdFRpbWU7XG4gICAgbGV0IG9sZFRvdGFsVGltZSA9IHRoaXMudG90YWxUaW1lO1xuXG4gICAgdGhpcy5zdG9wZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnRvdGFsVGltZSA9IHRpbWU7XG4gICAgdGhpcy5yYXRlLmluaXQoKTtcblxuICAgIGNvbnN0IHN0ZXAgPSAwLjAxNjc7XG4gICAgd2hpbGUgKHRpbWUgPiBzdGVwKSB7XG4gICAgICB0aW1lIC09IHN0ZXA7XG4gICAgICB0aGlzLnVwZGF0ZShzdGVwKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BlZCA9IG9sZFN0b3BlZDtcbiAgICB0aGlzLmVtaXRUaW1lID0gb2xkRW1pdFRpbWUgKyBNYXRoLm1heCh0aW1lLCAwKTtcbiAgICB0aGlzLnRvdGFsVGltZSA9IG9sZFRvdGFsVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgY3VycmVudCBhbGwgcGFydGljbGVzXG4gICAqIEBtZXRob2QgcmVtb3ZlQWxsUGFydGljbGVzXG4gICAqL1xuICByZW1vdmVBbGxQYXJ0aWNsZXMoKSB7XG4gICAgbGV0IGkgPSB0aGlzLnBhcnRpY2xlcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgdGhpcy5wYXJ0aWNsZXNbaV0uZGVhZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogYWRkIGluaXRpYWxpemUgdG8gdGhpcyBlbWl0dGVyXG4gICAqIEBtZXRob2QgYWRkU2VsZkluaXRpYWxpemVcbiAgICovXG4gIGFkZFNlbGZJbml0aWFsaXplKGluaXRpYWxpemUpIHtcbiAgICBpZiAoaW5pdGlhbGl6ZVtcImluaXRcIl0pIHtcbiAgICAgIGluaXRpYWxpemUuaW5pdCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhpcy5pbml0QWxsKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0aGUgSW5pdGlhbGl6ZSB0byBwYXJ0aWNsZXM7XG4gICAqXG4gICAqIHlvdSBjYW4gdXNlIGluaXRpYWxpemVzIGFycmF5OmZvciBleGFtcGxlIGVtaXR0ZXIuYWRkSW5pdGlhbGl6ZShpbml0aWFsaXplMSxpbml0aWFsaXplMixpbml0aWFsaXplMyk7XG4gICAqIEBtZXRob2QgYWRkSW5pdGlhbGl6ZVxuICAgKiBAcGFyYW0ge0luaXRpYWxpemV9IGluaXRpYWxpemUgbGlrZSB0aGlzIG5ldyBSYWRpdXMoMSwgMTIpXG4gICAqL1xuICBhZGRJbml0aWFsaXplKC4uLnJlc3QpIHtcbiAgICBsZXQgaSA9IHJlc3QubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHRoaXMuaW5pdGlhbGl6ZXMucHVzaChyZXN0W2ldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdGhlIEluaXRpYWxpemVcbiAgICogQG1ldGhvZCByZW1vdmVJbml0aWFsaXplXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZX0gaW5pdGlhbGl6ZSBhIGluaXRpYWxpemVcbiAgICovXG4gIHJlbW92ZUluaXRpYWxpemUoaW5pdGlhbGl6ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuaW5pdGlhbGl6ZXMuaW5kZXhPZihpbml0aWFsaXplcik7XG4gICAgaWYgKGluZGV4ID4gLTEpIHRoaXMuaW5pdGlhbGl6ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgYWxsIEluaXRpYWxpemVzXG4gICAqIEBtZXRob2QgcmVtb3ZlSW5pdGlhbGl6ZXJzXG4gICAqL1xuICByZW1vdmVBbGxJbml0aWFsaXplcnMoKSB7XG4gICAgVXRpbC5lbXB0eUFycmF5KHRoaXMuaW5pdGlhbGl6ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0aGUgQmVoYXZpb3VyIHRvIHBhcnRpY2xlcztcbiAgICpcbiAgICogeW91IGNhbiB1c2UgQmVoYXZpb3VycyBhcnJheTplbWl0dGVyLmFkZEJlaGF2aW91cihCZWhhdmlvdXIxLEJlaGF2aW91cjIsQmVoYXZpb3VyMyk7XG4gICAqIEBtZXRob2QgYWRkQmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgbGlrZSB0aGlzIG5ldyBDb2xvcigncmFuZG9tJylcbiAgICovXG4gIGFkZEJlaGF2aW91ciguLi5yZXN0KSB7XG4gICAgbGV0IGkgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGxldCBiZWhhdmlvdXIgPSByZXN0W2ldO1xuICAgICAgdGhpcy5iZWhhdmlvdXJzLnB1c2goYmVoYXZpb3VyKTtcbiAgICAgIGlmIChiZWhhdmlvdXIucGFyZW50cykgYmVoYXZpb3VyLnBhcmVudHMucHVzaCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlIHRoZSBCZWhhdmlvdXJcbiAgICogQG1ldGhvZCByZW1vdmVCZWhhdmlvdXJcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciBhIGJlaGF2aW91clxuICAgKi9cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGxldCBpbmRleCA9IHRoaXMuYmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG4gICAgdGhpcy5iZWhhdmlvdXJzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICBpZiAoYmVoYXZpb3VyLnBhcmVudHMpIHtcbiAgICAgIGluZGV4ID0gYmVoYXZpb3VyLnBhcmVudHMuaW5kZXhPZihiZWhhdmlvdXIpO1xuICAgICAgYmVoYXZpb3VyLnBhcmVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlIGFsbCBiZWhhdmlvdXJzXG4gICAqIEBtZXRob2QgcmVtb3ZlQWxsQmVoYXZpb3Vyc1xuICAgKi9cbiAgcmVtb3ZlQWxsQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmVtcHR5QXJyYXkodGhpcy5iZWhhdmlvdXJzKTtcbiAgfVxuXG4gIC8vIGVtaXR0ZXIgdXBkYXRlXG4gIHVwZGF0ZSh0aW1lKSB7XG4gICAgdGhpcy5hZ2UgKz0gdGltZTtcbiAgICBpZiAodGhpcy5hZ2UgPj0gdGhpcy5saWZlIHx8IHRoaXMuZGVhZCkgdGhpcy5kZXN0cm95KCk7XG5cbiAgICB0aGlzLmVtaXR0aW5nKHRpbWUpO1xuICAgIHRoaXMuaW50ZWdyYXRlKHRpbWUpO1xuICB9XG5cbiAgaW50ZWdyYXRlKHRpbWUpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm47XG5cbiAgICBjb25zdCBkYW1waW5nID0gMSAtIHRoaXMuZGFtcGluZztcbiAgICB0aGlzLnBhcmVudC5pbnRlZ3JhdG9yLmNhbGN1bGF0ZSh0aGlzLCB0aW1lLCBkYW1waW5nKTtcblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcbiAgICBsZXQgaSwgcGFydGljbGU7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgcGFydGljbGUgPSB0aGlzLnBhcnRpY2xlc1tpXTtcblxuICAgICAgLy8gcGFydGljbGUgdXBkYXRlXG4gICAgICBwYXJ0aWNsZS51cGRhdGUodGltZSwgaSk7XG4gICAgICB0aGlzLnBhcmVudC5pbnRlZ3JhdG9yLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgZGFtcGluZyk7XG4gICAgICB0aGlzLmRpc3BhdGNoKFwiUEFSVElDTEVfVVBEQVRFXCIsIHBhcnRpY2xlKTtcblxuICAgICAgLy8gY2hlY2sgZGVhZFxuICAgICAgaWYgKHBhcnRpY2xlLmRlYWQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChcIlBBUlRJQ0xFX0RFQURcIiwgcGFydGljbGUpO1xuXG4gICAgICAgIHRoaXMucGFyZW50LnBvb2wuZXhwaXJlKHBhcnRpY2xlKTtcbiAgICAgICAgdGhpcy5wYXJ0aWNsZXMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRpc3BhdGNoKGV2ZW50LCB0YXJnZXQpIHtcbiAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICAgIHRoaXMuYmluZEV2ZW50ICYmIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTtcbiAgfVxuXG4gIGVtaXR0aW5nKHRpbWUpIHtcbiAgICBpZiAodGhpcy5zdG9wZWQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLnRvdGFsVGltZSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHRoaXMuZW1pdFRpbWUgKz0gdGltZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudG90YWxUaW1lID09PSBcIm9uY2VcIikge1xuICAgICAgbGV0IGk7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLnJhdGUuZ2V0VmFsdWUoOTk5OTkpO1xuXG4gICAgICBpZiAobGVuZ3RoID4gMCkgdGhpcy5lbWl0U3BlZWQgPSBsZW5ndGg7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHRoaXMuY3JlYXRlUGFydGljbGUoKTtcbiAgICAgIHRoaXMudG90YWxUaW1lID0gXCJub25lXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdFRpbWUgKz0gdGltZTtcblxuICAgICAgaWYgKHRoaXMuZW1pdFRpbWUgPCB0aGlzLnRvdGFsVGltZSkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLnJhdGUuZ2V0VmFsdWUodGltZSk7XG4gICAgICAgIGxldCBpO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB0aGlzLmVtaXRTcGVlZCA9IGxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNyZWF0ZSBzaW5nbGUgcGFydGljbGU7XG4gICAqXG4gICAqIGNhbiB1c2UgZW1pdCh7eDoxMH0sbmV3IEdyYXZpdHkoMTApLHsncGFydGljbGVVcGRhdGUnLGZ1bn0pIG9yIGVtaXQoW3t4OjEwfSxuZXcgSW5pdGlhbGl6ZV0sbmV3IEdyYXZpdHkoMTApLHsncGFydGljbGVVcGRhdGUnLGZ1bn0pXG4gICAqIEBtZXRob2QgcmVtb3ZlQWxsUGFydGljbGVzXG4gICAqL1xuICBjcmVhdGVQYXJ0aWNsZShpbml0aWFsaXplLCBiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBwYXJ0aWNsZSA9IHRoaXMucGFyZW50LnBvb2wuZ2V0KFBhcnRpY2xlKTtcbiAgICB0aGlzLnNldHVwUGFydGljbGUocGFydGljbGUsIGluaXRpYWxpemUsIGJlaGF2aW91cik7XG4gICAgdGhpcy5kaXNwYXRjaChcIlBBUlRJQ0xFX0NSRUFURURcIiwgcGFydGljbGUpO1xuXG4gICAgcmV0dXJuIHBhcnRpY2xlO1xuICB9XG5cbiAgc2V0dXBQYXJ0aWNsZShwYXJ0aWNsZSwgaW5pdGlhbGl6ZSwgYmVoYXZpb3VyKSB7XG4gICAgbGV0IGluaXRpYWxpemVzID0gdGhpcy5pbml0aWFsaXplcztcbiAgICBsZXQgYmVoYXZpb3VycyA9IHRoaXMuYmVoYXZpb3VycztcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplcyA9IFV0aWwudG9BcnJheShpbml0aWFsaXplKTtcbiAgICBpZiAoYmVoYXZpb3VyKSBiZWhhdmlvdXJzID0gVXRpbC50b0FycmF5KGJlaGF2aW91cik7XG5cbiAgICBwYXJ0aWNsZS5yZXNldCgpO1xuICAgIEluaXRpYWxpemVVdGlsLmluaXRpYWxpemUodGhpcywgcGFydGljbGUsIGluaXRpYWxpemVzKTtcbiAgICBwYXJ0aWNsZS5hZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpO1xuICAgIHBhcnRpY2xlLnBhcmVudCA9IHRoaXM7XG5cbiAgICB0aGlzLnBhcnRpY2xlcy5wdXNoKHBhcnRpY2xlKTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLnN0b3AoKTtcbiAgICBVdGlsLmRlc3Ryb3lBbGwodGhpcy5wYXJ0aWNsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3RvcnkgdGhpcyBFbWl0dGVyXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgdGhpcy5yZW1vdmVBbGxJbml0aWFsaXplcnMoKTtcbiAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcbiAgICB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5yZW1vdmVFbWl0dGVyKHRoaXMpO1xuXG4gICAgdGhpcy5yYXRlID0gbnVsbDtcbiAgICB0aGlzLm9sZCA9IG51bGw7XG4gICAgdGhpcy5yZ2IgPSBudWxsO1xuICAgIHRoaXMudiA9IG51bGw7XG4gICAgdGhpcy5hID0gbnVsbDtcbiAgICB0aGlzLnAgPSBudWxsO1xuICB9XG59XG5cbkV2ZW50RGlzcGF0Y2hlci5iaW5kKEVtaXR0ZXIpO1xuIiwiaW1wb3J0IEVtaXR0ZXIgZnJvbSBcIi4vRW1pdHRlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCZWhhdmlvdXJFbWl0dGVyIGV4dGVuZHMgRW1pdHRlciB7XG4gIC8qKlxuICAgKiBUaGUgQmVoYXZpb3VyRW1pdHRlciBjbGFzcyBpbmhlcml0cyBmcm9tIFByb3Rvbi5FbWl0dGVyXG4gICAqXG4gICAqIHVzZSB0aGUgQmVoYXZpb3VyRW1pdHRlciB5b3UgY2FuIGFkZCBiZWhhdmlvdXJzIHRvIHNlbGY7XG4gICAqIEBjbGFzcyBQcm90b24uQmVoYXZpb3VyRW1pdHRlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmYgdGhlIHBhcmFtZXRlcnMgb2JqZWN0O1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZikge1xuICAgIHN1cGVyKGNvbmYpO1xuXG4gICAgdGhpcy5zZWxmQmVoYXZpb3VycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0aGUgQmVoYXZpb3VyIHRvIGVtaXR0ZXI7XG4gICAqXG4gICAqIHlvdSBjYW4gdXNlIEJlaGF2aW91cnMgYXJyYXk6ZW1pdHRlci5hZGRTZWxmQmVoYXZpb3VyKEJlaGF2aW91cjEsQmVoYXZpb3VyMixCZWhhdmlvdXIzKTtcbiAgICogQG1ldGhvZCBhZGRTZWxmQmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7UHJvdG9uLkJlaGF2aW91cn0gYmVoYXZpb3VyIGxpa2UgdGhpcyBuZXcgUHJvdG9uLkNvbG9yKCdyYW5kb20nKVxuICAgKi9cbiAgYWRkU2VsZkJlaGF2aW91ciguLi5yZXN0KSB7XG4gICAgbGV0IGksXG4gICAgICBsZW5ndGggPSByZXN0Lmxlbmd0aDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGJlaGF2aW91ciA9IHJlc3RbaV07XG4gICAgICB0aGlzLnNlbGZCZWhhdmlvdXJzLnB1c2goYmVoYXZpb3VyKTtcbiAgICAgIGJlaGF2aW91ci5pbml0aWFsaXplKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdGhlIEJlaGF2aW91ciBmb3Igc2VsZlxuICAgKiBAbWV0aG9kIHJlbW92ZVNlbGZCZWhhdmlvdXJcbiAgICogQHBhcmFtIHtQcm90b24uQmVoYXZpb3VyfSBiZWhhdmlvdXIgYSBiZWhhdmlvdXJcbiAgICovXG4gIHJlbW92ZVNlbGZCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGZCZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgdGhpcy5zZWxmQmVoYXZpb3Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgdXBkYXRlKHRpbWUpIHtcbiAgICBzdXBlci51cGRhdGUodGltZSk7XG5cbiAgICBpZiAoIXRoaXMuc2xlZXApIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuc2VsZkJlaGF2aW91cnMubGVuZ3RoO1xuICAgICAgbGV0IGk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnNlbGZCZWhhdmlvdXJzW2ldLmFwcGx5QmVoYXZpb3VyKHRoaXMsIHRpbWUsIGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBFbWl0dGVyIGZyb20gXCIuL0VtaXR0ZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9sbG93RW1pdHRlciBleHRlbmRzIEVtaXR0ZXIge1xuICAvKipcbiAgICogVGhlIEZvbGxvd0VtaXR0ZXIgY2xhc3MgaW5oZXJpdHMgZnJvbSBQcm90b24uRW1pdHRlclxuICAgKlxuICAgKiB1c2UgdGhlIEZvbGxvd0VtaXR0ZXIgd2lsbCBlbWl0IHBhcnRpY2xlIHdoZW4gbW91c2Vtb3ZpbmdcbiAgICpcbiAgICogQGNsYXNzIFByb3Rvbi5Gb2xsb3dFbWl0dGVyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IG1vdXNlVGFyZ2V0IG1vdXNlZXZlbnQncyB0YXJnZXQ7XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBlYXNlIHRoZSBlYXNpbmcgb2YgZm9sbG93aW5nIHNwZWVkO1xuICAgKiBAZGVmYXVsdCAwLjdcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmYgdGhlIHBhcmFtZXRlcnMgb2JqZWN0O1xuICAgKi9cbiAgY29uc3RydWN0b3IobW91c2VUYXJnZXQsIGVhc2UsIGNvbmYpIHtcbiAgICBzdXBlcihjb25mKTtcblxuICAgIHRoaXMubW91c2VUYXJnZXQgPSBVdGlsLmluaXRWYWx1ZShtb3VzZVRhcmdldCwgd2luZG93KTtcbiAgICB0aGlzLmVhc2UgPSBVdGlsLmluaXRWYWx1ZShlYXNlLCAwLjcpO1xuXG4gICAgdGhpcy5fYWxsb3dFbWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW5pdEV2ZW50SGFuZGxlcigpO1xuICB9XG5cbiAgaW5pdEV2ZW50SGFuZGxlcigpIHtcbiAgICB0aGlzLm1vdXNlbW92ZUhhbmRsZXIgPSBlID0+IHRoaXMubW91c2Vtb3ZlLmNhbGwodGhpcywgZSk7XG4gICAgdGhpcy5tb3VzZWRvd25IYW5kbGVyID0gZSA9PiB0aGlzLm1vdXNlZG93bi5jYWxsKHRoaXMsIGUpO1xuICAgIHRoaXMubW91c2V1cEhhbmRsZXIgPSBlID0+IHRoaXMubW91c2V1cC5jYWxsKHRoaXMsIGUpO1xuICAgIHRoaXMubW91c2VUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdXNlbW92ZUhhbmRsZXIsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGFydCBlbWl0IHBhcnRpY2xlXG4gICAqIEBtZXRob2QgZW1pdFxuICAgKi9cbiAgZW1pdCgpIHtcbiAgICB0aGlzLl9hbGxvd0VtaXR0aW5nID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdG9wIGVtaXRpbmdcbiAgICogQG1ldGhvZCBzdG9wXG4gICAqL1xuICBzdG9wKCkge1xuICAgIHRoaXMuX2FsbG93RW1pdHRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIG1vdXNlbW92ZShlKSB7XG4gICAgaWYgKGUubGF5ZXJYIHx8IGUubGF5ZXJYID09PSAwKSB7XG4gICAgICB0aGlzLnAueCArPSAoZS5sYXllclggLSB0aGlzLnAueCkgKiB0aGlzLmVhc2U7XG4gICAgICB0aGlzLnAueSArPSAoZS5sYXllclkgLSB0aGlzLnAueSkgKiB0aGlzLmVhc2U7XG4gICAgfSBlbHNlIGlmIChlLm9mZnNldFggfHwgZS5vZmZzZXRYID09PSAwKSB7XG4gICAgICB0aGlzLnAueCArPSAoZS5vZmZzZXRYIC0gdGhpcy5wLngpICogdGhpcy5lYXNlO1xuICAgICAgdGhpcy5wLnkgKz0gKGUub2Zmc2V0WSAtIHRoaXMucC55KSAqIHRoaXMuZWFzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYWxsb3dFbWl0dGluZykgc3VwZXIuZW1pdChcIm9uY2VcIik7XG4gIH1cblxuICAvKipcbiAgICogRGVzdG9yeSB0aGlzIEVtaXR0ZXJcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLm1vdXNlVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5tb3VzZW1vdmVIYW5kbGVyLCBmYWxzZSk7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGl0IGlzIGEgcGljdHVyZSBvYmplY3RcbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gaXMgb3Igbm9cbiAgICovXG4gIGlzSW1hZ2Uob2JqKSB7XG4gICAgaWYgKCFvYmopIHJldHVybiBmYWxzZTtcbiAgICBpZiAob2JqLl9faXNJbWFnZSkgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCB0YWdOYW1lID0gYCR7b2JqLnRhZ05hbWV9YC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5vZGVOYW1lID0gYCR7b2JqLm5vZGVOYW1lfWAudG9VcHBlckNhc2UoKTtcbiAgICBpZiAobm9kZU5hbWUgPT09IFwiSU1HXCIgfHwgdGFnTmFtZSA9PT0gXCJJTUdcIikge1xuICAgICAgb2JqLl9faXNJbWFnZSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGl0IGlzIGEgc3RyaW5nIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBpcyBvciBub1xuICAgKi9cbiAgaXNTdHJpbmcob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCI7XG4gIH1cbn07XG4iLCJpbXBvcnQgUG9vbCBmcm9tIFwiLi4vY29yZS9Qb29sXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhc2VSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHN0cm9rZSkge1xuICAgIHRoaXMucG9vbCA9IG5ldyBQb29sKCk7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnN0cm9rZSA9IHN0cm9rZTtcbiAgICB0aGlzLmNpcmNsZUNvbmYgPSB7IGlzQ2lyY2xlOiB0cnVlIH07XG5cbiAgICB0aGlzLmluaXRFdmVudEhhbmRsZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBcIkJhc2VSZW5kZXJlclwiO1xuICB9XG5cbiAgc2V0U3Ryb2tlKGNvbG9yID0gXCIjMDAwMDAwXCIsIHRoaW5rbmVzcyA9IDEpIHtcbiAgICB0aGlzLnN0cm9rZSA9IHsgY29sb3IsIHRoaW5rbmVzcyB9O1xuICB9XG5cbiAgaW5pdEV2ZW50SGFuZGxlcigpIHtcbiAgICB0aGlzLl9wcm90b25VcGRhdGVIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5vblByb3RvblVwZGF0ZS5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0aGlzLl9wcm90b25VcGRhdGVBZnRlckhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLm9uUHJvdG9uVXBkYXRlQWZ0ZXIuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fZW1pdHRlckFkZGVkSGFuZGxlciA9IGVtaXR0ZXIgPT4ge1xuICAgICAgdGhpcy5vbkVtaXR0ZXJBZGRlZC5jYWxsKHRoaXMsIGVtaXR0ZXIpO1xuICAgIH07XG5cbiAgICB0aGlzLl9lbWl0dGVyUmVtb3ZlZEhhbmRsZXIgPSBlbWl0dGVyID0+IHtcbiAgICAgIHRoaXMub25FbWl0dGVyUmVtb3ZlZC5jYWxsKHRoaXMsIGVtaXR0ZXIpO1xuICAgIH07XG5cbiAgICB0aGlzLl9wYXJ0aWNsZUNyZWF0ZWRIYW5kbGVyID0gcGFydGljbGUgPT4ge1xuICAgICAgdGhpcy5vblBhcnRpY2xlQ3JlYXRlZC5jYWxsKHRoaXMsIHBhcnRpY2xlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcGFydGljbGVVcGRhdGVIYW5kbGVyID0gcGFydGljbGUgPT4ge1xuICAgICAgdGhpcy5vblBhcnRpY2xlVXBkYXRlLmNhbGwodGhpcywgcGFydGljbGUpO1xuICAgIH07XG5cbiAgICB0aGlzLl9wYXJ0aWNsZURlYWRIYW5kbGVyID0gcGFydGljbGUgPT4ge1xuICAgICAgdGhpcy5vblBhcnRpY2xlRGVhZC5jYWxsKHRoaXMsIHBhcnRpY2xlKTtcbiAgICB9O1xuICB9XG5cbiAgaW5pdChwcm90b24pIHtcbiAgICB0aGlzLnBhcmVudCA9IHByb3RvbjtcblxuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUFJPVE9OX1VQREFURVwiLCB0aGlzLl9wcm90b25VcGRhdGVIYW5kbGVyKTtcbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVfQUZURVJcIiwgdGhpcy5fcHJvdG9uVXBkYXRlQWZ0ZXJIYW5kbGVyKTtcblxuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiRU1JVFRFUl9BRERFRFwiLCB0aGlzLl9lbWl0dGVyQWRkZWRIYW5kbGVyKTtcbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIkVNSVRURVJfUkVNT1ZFRFwiLCB0aGlzLl9lbWl0dGVyUmVtb3ZlZEhhbmRsZXIpO1xuXG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9DUkVBVEVEXCIsIHRoaXMuX3BhcnRpY2xlQ3JlYXRlZEhhbmRsZXIpO1xuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfVVBEQVRFXCIsIHRoaXMuX3BhcnRpY2xlVXBkYXRlSGFuZGxlcik7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9ERUFEXCIsIHRoaXMuX3BhcnRpY2xlRGVhZEhhbmRsZXIpO1xuICB9XG5cbiAgcmVzaXplKHdpZHRoLCBoZWlnaHQpIHt9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZSgpO1xuICAgIHRoaXMucG9vbC5kZXN0cm95KCk7XG4gICAgdGhpcy5wb29sID0gbnVsbDtcbiAgICB0aGlzLmVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZShwcm90b24pIHtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiUFJPVE9OX1VQREFURVwiLCB0aGlzLl9wcm90b25VcGRhdGVIYW5kbGVyKTtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiUFJPVE9OX1VQREFURV9BRlRFUlwiLCB0aGlzLl9wcm90b25VcGRhdGVBZnRlckhhbmRsZXIpO1xuXG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkVNSVRURVJfQURERURcIiwgdGhpcy5fZW1pdHRlckFkZGVkSGFuZGxlcik7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkVNSVRURVJfUkVNT1ZFRFwiLCB0aGlzLl9lbWl0dGVyUmVtb3ZlZEhhbmRsZXIpO1xuXG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX0NSRUFURURcIiwgdGhpcy5fcGFydGljbGVDcmVhdGVkSGFuZGxlcik7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX1VQREFURVwiLCB0aGlzLl9wYXJ0aWNsZVVwZGF0ZUhhbmRsZXIpO1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9ERUFEXCIsIHRoaXMuX3BhcnRpY2xlRGVhZEhhbmRsZXIpO1xuXG4gICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7fVxuICBvblByb3RvblVwZGF0ZUFmdGVyKCkge31cblxuICBvbkVtaXR0ZXJBZGRlZChlbWl0dGVyKSB7fVxuICBvbkVtaXR0ZXJSZW1vdmVkKGVtaXR0ZXIpIHt9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHt9XG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHt9XG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7fVxufVxuIiwiaW1wb3J0IFR5cGVzIGZyb20gXCIuLi91dGlscy9UeXBlc1wiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG4vKipcbiAqIENhbnZhc1JlbmRlcmVyIGNsYXNzIGZvciByZW5kZXJpbmcgcGFydGljbGVzIG9uIGEgY2FudmFzIGVsZW1lbnQuXG4gKiBAZXh0ZW5kcyBCYXNlUmVuZGVyZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICAvKipcbiAgICogQHR5cGUge29iamVjdHxudWxsfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3Ryb2tlO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29udGV4dDtcblxuICAvKipcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGJ1ZmZlckNhY2hlO1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBDYW52YXNSZW5kZXJlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtIVE1MQ2FudmFzRWxlbWVudH0gZWxlbWVudCAtIFRoZSBjYW52YXMgZWxlbWVudCB0byByZW5kZXIgb24uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICB0aGlzLmJ1ZmZlckNhY2hlID0ge307XG4gICAgdGhpcy5uYW1lID0gXCJDYW52YXNSZW5kZXJlclwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2l6ZXMgdGhlIGNhbnZhcyBlbGVtZW50LlxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGggLSBUaGUgbmV3IHdpZHRoIG9mIHRoZSBjYW52YXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgbmV3IGhlaWdodCBvZiB0aGUgY2FudmFzLlxuICAgKi9cbiAgcmVzaXplKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB0aGlzLmVsZW1lbnQud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmVsZW1lbnQuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY2FudmFzIG9uIFByb3RvbiB1cGRhdGUuXG4gICAqL1xuICBvblByb3RvblVwZGF0ZSgpIHtcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuZWxlbWVudC53aWR0aCwgdGhpcy5lbGVtZW50LmhlaWdodCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBwYXJ0aWNsZSBjcmVhdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIGNyZWF0ZWQgcGFydGljbGUuXG4gICAqL1xuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBJbWdVdGlsLmdldEltZ0Zyb21DYWNoZShwYXJ0aWNsZS5ib2R5LCB0aGlzLmFkZEltZzJCb2R5LCBwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLmNvbG9yID0gcGFydGljbGUuY29sb3IgfHwgXCIjZmYwMDAwXCI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgcGFydGljbGUgdXBkYXRlcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIHVwZGF0ZWQgcGFydGljbGUuXG4gICAqL1xuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIGlmIChUeXBlcy5pc0ltYWdlKHBhcnRpY2xlLmJvZHkpKSB7XG4gICAgICAgIHRoaXMuZHJhd0ltYWdlKHBhcnRpY2xlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmF3Q2lyY2xlKHBhcnRpY2xlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBwYXJ0aWNsZSBkZXN0cnVjdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIGRlc3Ryb3llZCBwYXJ0aWNsZS5cbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBpbWFnZSB0byB0aGUgcGFydGljbGUgYm9keS5cbiAgICogQHBhcmFtIHtIVE1MSW1hZ2VFbGVtZW50fSBpbWcgLSBUaGUgaW1hZ2UgdG8gYWRkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gYWRkIHRoZSBpbWFnZSB0by5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGFkZEltZzJCb2R5KGltZywgcGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gaW1nO1xuICB9XG5cbiAgLyoqXG4gICAqIERyYXdzIGFuIGltYWdlIHBhcnRpY2xlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gZHJhdy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRyYXdJbWFnZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IHcgPSAocGFydGljbGUuYm9keS53aWR0aCAqIHBhcnRpY2xlLnNjYWxlKSB8IDA7XG4gICAgY29uc3QgaCA9IChwYXJ0aWNsZS5ib2R5LmhlaWdodCAqIHBhcnRpY2xlLnNjYWxlKSB8IDA7XG4gICAgY29uc3QgeCA9IHBhcnRpY2xlLnAueCAtIHcgLyAyO1xuICAgIGNvbnN0IHkgPSBwYXJ0aWNsZS5wLnkgLSBoIC8gMjtcblxuICAgIGlmICghIXBhcnRpY2xlLmNvbG9yKSB7XG4gICAgICBpZiAoIXBhcnRpY2xlLmRhdGFbXCJidWZmZXJcIl0pIHBhcnRpY2xlLmRhdGEuYnVmZmVyID0gdGhpcy5jcmVhdGVCdWZmZXIocGFydGljbGUuYm9keSk7XG5cbiAgICAgIGNvbnN0IGJ1ZkNvbnRleHQgPSBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICBidWZDb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci53aWR0aCwgcGFydGljbGUuZGF0YS5idWZmZXIuaGVpZ2h0KTtcbiAgICAgIGJ1ZkNvbnRleHQuZ2xvYmFsQWxwaGEgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIGJ1ZkNvbnRleHQuZHJhd0ltYWdlKHBhcnRpY2xlLmJvZHksIDAsIDApO1xuXG4gICAgICBidWZDb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IFwic291cmNlLWF0b3BcIjtcbiAgICAgIGJ1ZkNvbnRleHQuZmlsbFN0eWxlID0gQ29sb3JVdGlsLnJnYlRvSGV4KHBhcnRpY2xlLnJnYik7XG4gICAgICBidWZDb250ZXh0LmZpbGxSZWN0KDAsIDAsIHBhcnRpY2xlLmRhdGEuYnVmZmVyLndpZHRoLCBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci5oZWlnaHQpO1xuICAgICAgYnVmQ29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBcInNvdXJjZS1vdmVyXCI7XG4gICAgICBidWZDb250ZXh0Lmdsb2JhbEFscGhhID0gMTtcblxuICAgICAgdGhpcy5jb250ZXh0LmRyYXdJbWFnZShcbiAgICAgICAgcGFydGljbGUuZGF0YS5idWZmZXIsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIHBhcnRpY2xlLmRhdGEuYnVmZmVyLndpZHRoLFxuICAgICAgICBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci5oZWlnaHQsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHcsXG4gICAgICAgIGhcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGV4dC5zYXZlKCk7XG5cbiAgICAgIHRoaXMuY29udGV4dC5nbG9iYWxBbHBoYSA9IHBhcnRpY2xlLmFscGhhO1xuICAgICAgdGhpcy5jb250ZXh0LnRyYW5zbGF0ZShwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSk7XG4gICAgICB0aGlzLmNvbnRleHQucm90YXRlKE1hdGhVdGlsLmRlZ3JlZVRyYW5zZm9ybShwYXJ0aWNsZS5yb3RhdGlvbikpO1xuICAgICAgdGhpcy5jb250ZXh0LnRyYW5zbGF0ZSgtcGFydGljbGUucC54LCAtcGFydGljbGUucC55KTtcbiAgICAgIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UocGFydGljbGUuYm9keSwgMCwgMCwgcGFydGljbGUuYm9keS53aWR0aCwgcGFydGljbGUuYm9keS5oZWlnaHQsIHgsIHksIHcsIGgpO1xuXG4gICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSAxO1xuICAgICAgdGhpcy5jb250ZXh0LnJlc3RvcmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRHJhd3MgYSBjaXJjdWxhciBwYXJ0aWNsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGRyYXcuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkcmF3Q2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLnJnYikge1xuICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9IGByZ2JhKCR7cGFydGljbGUucmdiLnJ9LCR7cGFydGljbGUucmdiLmd9LCR7cGFydGljbGUucmdiLmJ9LCR7cGFydGljbGUuYWxwaGF9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGV4dC5maWxsU3R5bGUgPSBwYXJ0aWNsZS5jb2xvcjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgdGhpcy5jb250ZXh0LmFyYyhwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSwgcGFydGljbGUucmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIHRoaXMuY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMuc3Ryb2tlLmNvbG9yO1xuICAgICAgdGhpcy5jb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMuc3Ryb2tlLnRoaW5rbmVzcztcbiAgICAgIHRoaXMuY29udGV4dC5zdHJva2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5jb250ZXh0LmZpbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYnVmZmVyIGZvciBpbWFnZSBwYXJ0aWNsZXMuXG4gICAqIEBwYXJhbSB7SFRNTEltYWdlRWxlbWVudH0gaW1hZ2UgLSBUaGUgaW1hZ2UgdG8gY3JlYXRlIGEgYnVmZmVyIGZvci5cbiAgICogQHJldHVybnMge0hUTUxDYW52YXNFbGVtZW50fHVuZGVmaW5lZH0gVGhlIGNyZWF0ZWQgYnVmZmVyIGNhbnZhcy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZUJ1ZmZlcihpbWFnZSkge1xuICAgIGlmIChUeXBlcy5pc0ltYWdlKGltYWdlKSkge1xuICAgICAgY29uc3Qgc2l6ZSA9IGltYWdlLndpZHRoICsgXCJfXCIgKyBpbWFnZS5oZWlnaHQ7XG4gICAgICBsZXQgY2FudmFzID0gdGhpcy5idWZmZXJDYWNoZVtzaXplXTtcblxuICAgICAgaWYgKCFjYW52YXMpIHtcbiAgICAgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2Uud2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XG4gICAgICAgIHRoaXMuYnVmZmVyQ2FjaGVbc2l6ZV0gPSBjYW52YXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYW52YXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSByZW5kZXJlciBhbmQgY2xlYW5zIHVwIHJlc291cmNlcy5cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuYnVmZmVyQ2FjaGUgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi4vdXRpbHMvRG9tVXRpbFwiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIERPTS1iYXNlZCByZW5kZXJlciBmb3IgcGFydGljbGUgc3lzdGVtcy5cbiAqIEBleHRlbmRzIEJhc2VSZW5kZXJlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb21SZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IERvbVJlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gVGhlIEhUTUwgZWxlbWVudCB0byByZW5kZXIgdG8uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gICAgdGhpcy50cmFuc2Zvcm0zZCA9IGZhbHNlO1xuICAgIHRoaXMucG9vbC5jcmVhdGUgPSAoYm9keSwgcGFydGljbGUpID0+IHRoaXMuY3JlYXRlQm9keShib2R5LCBwYXJ0aWNsZSk7XG4gICAgdGhpcy5hZGRJbWcyQm9keSA9IHRoaXMuYWRkSW1nMkJvZHkuYmluZCh0aGlzKTtcblxuICAgIHRoaXMubmFtZSA9IFwiRG9tUmVuZGVyZXJcIjtcbiAgfVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIEltZ1V0aWwuZ2V0SW1nRnJvbUNhY2hlKHBhcnRpY2xlLmJvZHksIHRoaXMuYWRkSW1nMkJvZHksIHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUuYm9keSA9IHRoaXMucG9vbC5nZXQodGhpcy5jaXJjbGVDb25mLCBwYXJ0aWNsZSk7XG4gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocGFydGljbGUuYm9keSk7XG4gICAgfVxuICB9XG5cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmJvZHlSZWFkeShwYXJ0aWNsZSkpIHtcbiAgICAgIGlmICh0aGlzLnRyYW5zZm9ybTNkKSB7XG4gICAgICAgIERvbVV0aWwudHJhbnNmb3JtM2QocGFydGljbGUuYm9keSwgcGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnksIHBhcnRpY2xlLnNjYWxlLCBwYXJ0aWNsZS5yb3RhdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEb21VdGlsLnRyYW5zZm9ybShwYXJ0aWNsZS5ib2R5LCBwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSwgcGFydGljbGUuc2NhbGUsIHBhcnRpY2xlLnJvdGF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcGFydGljbGUuYm9keS5zdHlsZS5vcGFjaXR5ID0gcGFydGljbGUuYWxwaGE7XG5cbiAgICAgIGlmIChwYXJ0aWNsZS5ib2R5LmlzQ2lyY2xlKSB7XG4gICAgICAgIHBhcnRpY2xlLmJvZHkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gcGFydGljbGUuY29sb3IgfHwgXCIjZmYwMDAwXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5ib2R5UmVhZHkocGFydGljbGUpKSB7XG4gICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUuYm9keSk7XG4gICAgICB0aGlzLnBvb2wuZXhwaXJlKHBhcnRpY2xlLmJvZHkpO1xuICAgICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYm9keVJlYWR5KHBhcnRpY2xlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBwYXJ0aWNsZS5ib2R5ID09PSBcIm9iamVjdFwiICYmIHBhcnRpY2xlLmJvZHkgJiYgIXBhcnRpY2xlLmJvZHkuaXNJbm5lcjtcbiAgfVxuXG4gIC8vIHByaXZhdGUgbWV0aG9kXG4gIGFkZEltZzJCb2R5KGltZywgcGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuZGVhZCkgcmV0dXJuO1xuICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KGltZywgcGFydGljbGUpO1xuICAgIERvbVV0aWwucmVzaXplKHBhcnRpY2xlLmJvZHksIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocGFydGljbGUuYm9keSk7XG4gIH1cblxuICBjcmVhdGVCb2R5KGJvZHksIHBhcnRpY2xlKSB7XG4gICAgaWYgKGJvZHkuaXNDaXJjbGUpIHJldHVybiB0aGlzLmNyZWF0ZUNpcmNsZShwYXJ0aWNsZSk7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3ByaXRlKGJvZHksIHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8vIHByaXZhdGUgbWV0aG9kc1xuICBjcmVhdGVDaXJjbGUocGFydGljbGUpIHtcbiAgICBjb25zdCBkb20gPSBEb21VdGlsLmNyZWF0ZURpdihgJHtwYXJ0aWNsZS5pZH1fZG9tYCwgMiAqIHBhcnRpY2xlLnJhZGl1cywgMiAqIHBhcnRpY2xlLnJhZGl1cyk7XG4gICAgZG9tLnN0eWxlLmJvcmRlclJhZGl1cyA9IGAke3BhcnRpY2xlLnJhZGl1c31weGA7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGRvbS5zdHlsZS5ib3JkZXJDb2xvciA9IHRoaXMuc3Ryb2tlLmNvbG9yO1xuICAgICAgZG9tLnN0eWxlLmJvcmRlcldpZHRoID0gYCR7dGhpcy5zdHJva2UudGhpbmtuZXNzfXB4YDtcbiAgICB9XG4gICAgZG9tLmlzQ2lyY2xlID0gdHJ1ZTtcblxuICAgIHJldHVybiBkb207XG4gIH1cblxuICBjcmVhdGVTcHJpdGUoYm9keSwgcGFydGljbGUpIHtcbiAgICBjb25zdCB1cmwgPSB0eXBlb2YgYm9keSA9PT0gXCJzdHJpbmdcIiA/IGJvZHkgOiBib2R5LnNyYztcbiAgICBjb25zdCBkb20gPSBEb21VdGlsLmNyZWF0ZURpdihgJHtwYXJ0aWNsZS5pZH1fZG9tYCwgYm9keS53aWR0aCwgYm9keS5oZWlnaHQpO1xuICAgIGRvbS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dXJsfSlgO1xuXG4gICAgcmV0dXJuIGRvbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcmVuZGVyZXIgYW5kIGNsZWFucyB1cCByZXNvdXJjZXMuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc2VsUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzdHJva2UpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuc3Ryb2tlID0gc3Ryb2tlO1xuICAgIHRoaXMubmFtZSA9IFwiRWFzZWxSZW5kZXJlclwiO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgdGhpcy5jcmVhdGVTcHJpdGUocGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUNpcmNsZShwYXJ0aWNsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LmFkZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICB9XG5cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnggPSBwYXJ0aWNsZS5wLng7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnkgPSBwYXJ0aWNsZS5wLnk7XG5cbiAgICAgIHBhcnRpY2xlLmJvZHkuYWxwaGEgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIHBhcnRpY2xlLmJvZHkuc2NhbGVYID0gcGFydGljbGUuYm9keS5zY2FsZVkgPSBwYXJ0aWNsZS5zY2FsZTtcbiAgICAgIHBhcnRpY2xlLmJvZHkucm90YXRpb24gPSBwYXJ0aWNsZS5yb3RhdGlvbjtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnBhcmVudCAmJiBwYXJ0aWNsZS5ib2R5LnBhcmVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocGFydGljbGUuZ3JhcGhpY3MpIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuZ3JhcGhpY3MpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZVxuICBjcmVhdGVTcHJpdGUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldChwYXJ0aWNsZS5ib2R5KTtcblxuICAgIGlmIChwYXJ0aWNsZS5ib2R5LnBhcmVudCkgcmV0dXJuO1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5W1wiaW1hZ2VcIl0pIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkucmVnWCA9IHBhcnRpY2xlLmJvZHkuaW1hZ2Uud2lkdGggLyAyO1xuICAgICAgcGFydGljbGUuYm9keS5yZWdZID0gcGFydGljbGUuYm9keS5pbWFnZS5oZWlnaHQgLyAyO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNpcmNsZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGdyYXBoaWNzID0gdGhpcy5wb29sLmdldCh3aW5kb3cuY3JlYXRlanMuR3JhcGhpY3MpO1xuXG4gICAgaWYgKHRoaXMuc3Ryb2tlKSB7XG4gICAgICBpZiAoVHlwZXMuaXNTdHJpbmcodGhpcy5zdHJva2UpKSB7XG4gICAgICAgIGdyYXBoaWNzLmJlZ2luU3Ryb2tlKHRoaXMuc3Ryb2tlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyYXBoaWNzLmJlZ2luU3Ryb2tlKFwiIzAwMDAwMFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZ3JhcGhpY3MuYmVnaW5GaWxsKHBhcnRpY2xlLmNvbG9yIHx8IFwiI2ZmMDAwMFwiKS5kcmF3Q2lyY2xlKDAsIDAsIHBhcnRpY2xlLnJhZGl1cyk7XG4gICAgY29uc3Qgc2hhcGUgPSB0aGlzLnBvb2wuZ2V0KHdpbmRvdy5jcmVhdGVqcy5TaGFwZSwgW2dyYXBoaWNzXSk7XG5cbiAgICBwYXJ0aWNsZS5ib2R5ID0gc2hhcGU7XG4gICAgcGFydGljbGUuZ3JhcGhpY3MgPSBncmFwaGljcztcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgfVxufVxuIiwiaW1wb3J0IFJlY3RhbmdsZSBmcm9tIFwiLi4vbWF0aC9SZWN0YW5nbGVcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBpeGVsLWJhc2VkIHJlbmRlcmVyIGZvciBwYXJ0aWNsZSBzeXN0ZW1zLlxuICogQGV4dGVuZHMgQmFzZVJlbmRlcmVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBpeGVsUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQaXhlbFJlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSBlbGVtZW50IC0gVGhlIGNhbnZhcyBlbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICogQHBhcmFtIHtSZWN0YW5nbGV9IFtyZWN0YW5nbGVdIC0gVGhlIHJlY3RhbmdsZSBkZWZpbmluZyB0aGUgcmVuZGVyaW5nIGFyZWEuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCByZWN0YW5nbGUpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBudWxsO1xuICAgIHRoaXMucmVjdGFuZ2xlID0gcmVjdGFuZ2xlO1xuICAgIHRoaXMuY3JlYXRlSW1hZ2VEYXRhKHJlY3RhbmdsZSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIlBpeGVsUmVuZGVyZXJcIjtcbiAgfVxuXG4gIHJlc2l6ZSh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdGhpcy5lbGVtZW50LndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5lbGVtZW50LmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIGNyZWF0ZUltYWdlRGF0YShyZWN0YW5nbGUpIHtcbiAgICB0aGlzLnJlY3RhbmdsZSA9IHJlY3RhbmdsZSA/IHJlY3RhbmdsZSA6IG5ldyBSZWN0YW5nbGUoMCwgMCwgdGhpcy5lbGVtZW50LndpZHRoLCB0aGlzLmVsZW1lbnQuaGVpZ2h0KTtcbiAgICB0aGlzLmltYWdlRGF0YSA9IHRoaXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodGhpcy5yZWN0YW5nbGUud2lkdGgsIHRoaXMucmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgdGhpcy5jb250ZXh0LnB1dEltYWdlRGF0YSh0aGlzLmltYWdlRGF0YSwgdGhpcy5yZWN0YW5nbGUueCwgdGhpcy5yZWN0YW5nbGUueSk7XG4gIH1cblxuICBvblByb3RvblVwZGF0ZSgpIHtcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJSZWN0KHRoaXMucmVjdGFuZ2xlLngsIHRoaXMucmVjdGFuZ2xlLnksIHRoaXMucmVjdGFuZ2xlLndpZHRoLCB0aGlzLnJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gdGhpcy5jb250ZXh0LmdldEltYWdlRGF0YShcbiAgICAgIHRoaXMucmVjdGFuZ2xlLngsXG4gICAgICB0aGlzLnJlY3RhbmdsZS55LFxuICAgICAgdGhpcy5yZWN0YW5nbGUud2lkdGgsXG4gICAgICB0aGlzLnJlY3RhbmdsZS5oZWlnaHRcbiAgICApO1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGVBZnRlcigpIHtcbiAgICB0aGlzLmNvbnRleHQucHV0SW1hZ2VEYXRhKHRoaXMuaW1hZ2VEYXRhLCB0aGlzLnJlY3RhbmdsZS54LCB0aGlzLnJlY3RhbmdsZS55KTtcbiAgfVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7fVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5pbWFnZURhdGEpIHtcbiAgICAgIHRoaXMuc2V0UGl4ZWwoXG4gICAgICAgIHRoaXMuaW1hZ2VEYXRhLFxuICAgICAgICAocGFydGljbGUucC54IC0gdGhpcy5yZWN0YW5nbGUueCkgPj4gMCxcbiAgICAgICAgKHBhcnRpY2xlLnAueSAtIHRoaXMucmVjdGFuZ2xlLnkpID4+IDAsXG4gICAgICAgIHBhcnRpY2xlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHNldFBpeGVsKGltYWdlZGF0YSwgeCwgeSwgcGFydGljbGUpIHtcbiAgICBjb25zdCByZ2IgPSBwYXJ0aWNsZS5yZ2I7XG4gICAgaWYgKHggPCAwIHx8IHggPiB0aGlzLmVsZW1lbnQud2lkdGggfHwgeSA8IDAgfHwgeSA+IHRoaXMuZWxlbWVudC5oZWlnaHQpIHJldHVybjtcblxuICAgIGNvbnN0IGkgPSAoKHkgPj4gMCkgKiBpbWFnZWRhdGEud2lkdGggKyAoeCA+PiAwKSkgKiA0O1xuICAgIGltYWdlZGF0YS5kYXRhW2ldID0gcmdiLnI7XG4gICAgaW1hZ2VkYXRhLmRhdGFbaSArIDFdID0gcmdiLmc7XG4gICAgaW1hZ2VkYXRhLmRhdGFbaSArIDJdID0gcmdiLmI7XG4gICAgaW1hZ2VkYXRhLmRhdGFbaSArIDNdID0gcGFydGljbGUuYWxwaGEgKiAyNTU7XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge31cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIHJlbmRlcmVyIGFuZCBjbGVhbnMgdXAgcmVzb3VyY2VzLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5zdHJva2UgPSBudWxsO1xuICAgIHRoaXMuY29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBudWxsO1xuICAgIHRoaXMucmVjdGFuZ2xlID0gbnVsbDtcbiAgfVxufVxuIiwiaW1wb3J0IFR5cGVzIGZyb20gXCIuLi91dGlscy9UeXBlc1wiO1xuaW1wb3J0IENvbG9yVXRpbCBmcm9tIFwiLi4vdXRpbHMvQ29sb3JVdGlsXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmxldCBQSVhJQ2xhc3M7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIFBJWEktYmFzZWQgcmVuZGVyZXIgZm9yIHBhcnRpY2xlIHN5c3RlbXMuXG4gKiBAZXh0ZW5kcyBCYXNlUmVuZGVyZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGl4aVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUGl4aVJlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge1BJWEkuQ29udGFpbmVyfSBlbGVtZW50IC0gVGhlIFBJWEkgY29udGFpbmVyIHRvIHJlbmRlciB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBbc3Ryb2tlXSAtIFRoZSBzdHJva2UgY29sb3IgZm9yIHBhcnRpY2xlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHN0cm9rZSkge1xuICAgIHN1cGVyKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5zdHJva2UgPSBzdHJva2U7XG4gICAgdGhpcy5jb2xvciA9IGZhbHNlO1xuICAgIHRoaXMuc2V0Q29sb3IgPSBmYWxzZTtcbiAgICB0aGlzLmJsZW5kTW9kZSA9IG51bGw7XG4gICAgdGhpcy5wb29sLmNyZWF0ZSA9IChib2R5LCBwYXJ0aWNsZSkgPT4gdGhpcy5jcmVhdGVCb2R5KGJvZHksIHBhcnRpY2xlKTtcbiAgICB0aGlzLnNldFBJWEkod2luZG93LlBJWEkpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJQaXhpUmVuZGVyZXJcIjtcbiAgfVxuXG4gIHNldFBJWEkoUElYSSkge1xuICAgIHRyeSB7XG4gICAgICBQSVhJQ2xhc3MgPSBQSVhJIHx8IHsgU3ByaXRlOiB7fSB9O1xuICAgICAgdGhpcy5jcmVhdGVGcm9tSW1hZ2UgPSBQSVhJQ2xhc3MuU3ByaXRlLmZyb20gfHwgUElYSUNsYXNzLlNwcml0ZS5mcm9tSW1hZ2U7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlKCkge31cblxuICAvKipcbiAgICogQHBhcmFtIHBhcnRpY2xlXG4gICAqL1xuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldChwYXJ0aWNsZS5ib2R5LCBwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHRoaXMuY2lyY2xlQ29uZiwgcGFydGljbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJsZW5kTW9kZSkge1xuICAgICAgcGFydGljbGUuYm9keS5ibGVuZE1vZGUgPSB0aGlzLmJsZW5kTW9kZTtcbiAgICB9XG5cbiAgICB0aGlzLmVsZW1lbnQuYWRkQ2hpbGQocGFydGljbGUuYm9keSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBhcnRpY2xlXG4gICAqL1xuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0ocGFydGljbGUsIHBhcnRpY2xlLmJvZHkpO1xuXG4gICAgaWYgKHRoaXMuc2V0Q29sb3IgPT09IHRydWUgfHwgdGhpcy5jb2xvciA9PT0gdHJ1ZSkge1xuICAgICAgcGFydGljbGUuYm9keS50aW50ID0gQ29sb3JVdGlsLmdldEhleDE2RnJvbVBhcnRpY2xlKHBhcnRpY2xlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBhcnRpY2xlXG4gICAqL1xuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICB0aGlzLnBvb2wuZXhwaXJlKHBhcnRpY2xlLmJvZHkpO1xuICAgIHBhcnRpY2xlLmJvZHkgPSBudWxsO1xuICB9XG5cbiAgdHJhbnNmb3JtKHBhcnRpY2xlLCB0YXJnZXQpIHtcbiAgICB0YXJnZXQueCA9IHBhcnRpY2xlLnAueDtcbiAgICB0YXJnZXQueSA9IHBhcnRpY2xlLnAueTtcblxuICAgIHRhcmdldC5hbHBoYSA9IHBhcnRpY2xlLmFscGhhO1xuXG4gICAgdGFyZ2V0LnNjYWxlLnggPSBwYXJ0aWNsZS5zY2FsZTtcbiAgICB0YXJnZXQuc2NhbGUueSA9IHBhcnRpY2xlLnNjYWxlO1xuXG4gICAgLy8gdXNpbmcgY2FjaGVkIHZlcnNpb24gb2YgTWF0aFV0aWwuUElfMTgwIGZvciBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UuXG4gICAgdGFyZ2V0LnJvdGF0aW9uID0gcGFydGljbGUucm90YXRpb24gKiBNYXRoVXRpbC5QSV8xODA7IC8vIE1hdGhVdGlsLlBJXzE4MDtcbiAgfVxuXG4gIGNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpIHtcbiAgICBpZiAoYm9keS5pc0NpcmNsZSkgcmV0dXJuIHRoaXMuY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKTtcbiAgICBlbHNlIHJldHVybiB0aGlzLmNyZWF0ZVNwcml0ZShib2R5KTtcbiAgfVxuXG4gIGNyZWF0ZVNwcml0ZShib2R5KSB7XG4gICAgY29uc3Qgc3ByaXRlID0gYm9keS5pc0lubmVyID8gdGhpcy5jcmVhdGVGcm9tSW1hZ2UoYm9keS5zcmMpIDogbmV3IFBJWElDbGFzcy5TcHJpdGUoYm9keSk7XG5cbiAgICBzcHJpdGUuYW5jaG9yLnggPSAwLjU7XG4gICAgc3ByaXRlLmFuY2hvci55ID0gMC41O1xuXG4gICAgcmV0dXJuIHNwcml0ZTtcbiAgfVxuXG4gIGNyZWF0ZUNpcmNsZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGdyYXBoaWNzID0gbmV3IFBJWElDbGFzcy5HcmFwaGljcygpO1xuXG4gICAgaWYgKHRoaXMuc3Ryb2tlKSB7XG4gICAgICBjb25zdCBzdHJva2UgPSBUeXBlcy5pc1N0cmluZyh0aGlzLnN0cm9rZSkgPyB0aGlzLnN0cm9rZSA6IDB4MDAwMDAwO1xuICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2Uoc3Ryb2tlKTtcbiAgICB9XG5cbiAgICBncmFwaGljcy5iZWdpbkZpbGwocGFydGljbGUuY29sb3IgfHwgMHgwMDhjZWQpO1xuICAgIGdyYXBoaWNzLmRyYXdDaXJjbGUoMCwgMCwgcGFydGljbGUucmFkaXVzKTtcbiAgICBncmFwaGljcy5lbmRGaWxsKCk7XG5cbiAgICByZXR1cm4gZ3JhcGhpY3M7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIHJlbmRlcmVyIGFuZCBjbGVhbnMgdXAgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0ge0FycmF5PFBhcnRpY2xlPn0gcGFydGljbGVzIC0gVGhlIHBhcnRpY2xlcyB0byBjbGVhbiB1cC5cbiAgICovXG4gIGRlc3Ryb3kocGFydGljbGVzKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgbGV0IGkgPSBwYXJ0aWNsZXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGxldCBwYXJ0aWNsZSA9IHBhcnRpY2xlc1tpXTtcbiAgICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBNYXQzIGZyb20gXCIuLi9tYXRoL01hdDNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTVN0YWNrIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tYXRzID0gW107XG4gICAgdGhpcy5zaXplID0gMDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykgdGhpcy5tYXRzLnB1c2goTWF0My5jcmVhdGUoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdKSk7XG4gIH1cblxuICBzZXQobSwgaSkge1xuICAgIGlmIChpID09PSAwKSBNYXQzLnNldChtLCB0aGlzLm1hdHNbMF0pO1xuICAgIGVsc2UgTWF0My5tdWx0aXBseSh0aGlzLm1hdHNbaSAtIDFdLCBtLCB0aGlzLm1hdHNbaV0pO1xuXG4gICAgdGhpcy5zaXplID0gTWF0aC5tYXgodGhpcy5zaXplLCBpICsgMSk7XG4gIH1cblxuICBwdXNoKG0pIHtcbiAgICBpZiAodGhpcy5zaXplID09PSAwKSBNYXQzLnNldChtLCB0aGlzLm1hdHNbMF0pO1xuICAgIGVsc2UgTWF0My5tdWx0aXBseSh0aGlzLm1hdHNbdGhpcy5zaXplIC0gMV0sIG0sIHRoaXMubWF0c1t0aGlzLnNpemVdKTtcblxuICAgIHRoaXMuc2l6ZSsrO1xuICB9XG5cbiAgcG9wKCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB0aGlzLnNpemUtLTtcbiAgfVxuXG4gIHRvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRzW3RoaXMuc2l6ZSAtIDFdO1xuICB9XG59XG4iLCJpbXBvcnQgTWF0MyBmcm9tIFwiLi4vbWF0aC9NYXQzXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBNU3RhY2sgZnJvbSBcIi4uL3V0aWxzL01TdGFja1wiO1xuaW1wb3J0IERvbVV0aWwgZnJvbSBcIi4uL3V0aWxzL0RvbVV0aWxcIjtcbmltcG9ydCBXZWJHTFV0aWwgZnJvbSBcIi4uL3V0aWxzL1dlYkdMVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIFdlYkdMLWJhc2VkIHJlbmRlcmVyIGZvciBwYXJ0aWNsZSBzeXN0ZW1zLlxuICogQGV4dGVuZHMgQmFzZVJlbmRlcmVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYkdMUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWJHTFJlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSBlbGVtZW50IC0gVGhlIGNhbnZhcyBlbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuZ2wgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dChcImV4cGVyaW1lbnRhbC13ZWJnbFwiLCB7IGFudGlhbGlhczogdHJ1ZSwgc3RlbmNpbDogZmFsc2UsIGRlcHRoOiBmYWxzZSB9KTtcbiAgICBpZiAoIXRoaXMuZ2wpIGFsZXJ0KFwiU29ycnkgeW91ciBicm93c2VyIGRvIG5vdCBzdXBwZXN0IFdlYkdMIVwiKTtcblxuICAgIHRoaXMuaW5pdFZhcigpO1xuICAgIHRoaXMuc2V0TWF4UmFkaXVzKCk7XG4gICAgdGhpcy5pbml0U2hhZGVycygpO1xuICAgIHRoaXMuaW5pdEJ1ZmZlcnMoKTtcblxuICAgIHRoaXMuZ2wuYmxlbmRFcXVhdGlvbih0aGlzLmdsLkZVTkNfQUREKTtcbiAgICB0aGlzLmdsLmJsZW5kRnVuYyh0aGlzLmdsLlNSQ19BTFBIQSwgdGhpcy5nbC5PTkVfTUlOVVNfU1JDX0FMUEhBKTtcbiAgICB0aGlzLmdsLmVuYWJsZSh0aGlzLmdsLkJMRU5EKTtcbiAgICB0aGlzLmFkZEltZzJCb2R5ID0gdGhpcy5hZGRJbWcyQm9keS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJXZWJHTFJlbmRlcmVyXCI7XG4gIH1cblxuICBpbml0KHByb3Rvbikge1xuICAgIHN1cGVyLmluaXQocHJvdG9uKTtcbiAgICB0aGlzLnJlc2l6ZSh0aGlzLmVsZW1lbnQud2lkdGgsIHRoaXMuZWxlbWVudC5oZWlnaHQpO1xuICB9XG5cbiAgcmVzaXplKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB0aGlzLnVtYXRbNF0gPSAtMjtcbiAgICB0aGlzLnVtYXRbN10gPSAxO1xuXG4gICAgdGhpcy5zbWF0WzBdID0gMSAvIHdpZHRoO1xuICAgIHRoaXMuc21hdFs0XSA9IDEgLyBoZWlnaHQ7XG5cbiAgICB0aGlzLm1zdGFjay5zZXQodGhpcy51bWF0LCAwKTtcbiAgICB0aGlzLm1zdGFjay5zZXQodGhpcy5zbWF0LCAxKTtcblxuICAgIHRoaXMuZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgdGhpcy5lbGVtZW50LndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5lbGVtZW50LmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIHNldE1heFJhZGl1cyhyYWRpdXMpIHtcbiAgICB0aGlzLmNpcmNsZUNhbnZhc1VSTCA9IHRoaXMuY3JlYXRlQ2lyY2xlKHJhZGl1cyk7XG4gIH1cblxuICBnZXRWZXJ0ZXhTaGFkZXIoKSB7XG4gICAgY29uc3QgdnNTb3VyY2UgPSBbXG4gICAgICBcInVuaWZvcm0gdmVjMiB2aWV3cG9ydDtcIixcbiAgICAgIFwiYXR0cmlidXRlIHZlYzIgYVZlcnRleFBvc2l0aW9uO1wiLFxuICAgICAgXCJhdHRyaWJ1dGUgdmVjMiBhVGV4dHVyZUNvb3JkO1wiLFxuICAgICAgXCJ1bmlmb3JtIG1hdDMgdE1hdDtcIixcbiAgICAgIFwidmFyeWluZyB2ZWMyIHZUZXh0dXJlQ29vcmQ7XCIsXG4gICAgICBcInZhcnlpbmcgZmxvYXQgYWxwaGE7XCIsXG4gICAgICBcInZvaWQgbWFpbigpIHtcIixcbiAgICAgIFwidmVjMyB2ID0gdE1hdCAqIHZlYzMoYVZlcnRleFBvc2l0aW9uLCAxLjApO1wiLFxuICAgICAgXCJnbF9Qb3NpdGlvbiA9IHZlYzQodi54LCB2LnksIDAsIDEpO1wiLFxuICAgICAgXCJ2VGV4dHVyZUNvb3JkID0gYVRleHR1cmVDb29yZDtcIixcbiAgICAgIFwiYWxwaGEgPSB0TWF0WzBdWzJdO1wiLFxuICAgICAgXCJ9XCJcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIHZzU291cmNlO1xuICB9XG5cbiAgZ2V0RnJhZ21lbnRTaGFkZXIoKSB7XG4gICAgY29uc3QgZnNTb3VyY2UgPSBbXG4gICAgICBcInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1wiLFxuICAgICAgXCJ2YXJ5aW5nIHZlYzIgdlRleHR1cmVDb29yZDtcIixcbiAgICAgIFwidmFyeWluZyBmbG9hdCBhbHBoYTtcIixcbiAgICAgIFwidW5pZm9ybSBzYW1wbGVyMkQgdVNhbXBsZXI7XCIsXG4gICAgICBcInVuaWZvcm0gdmVjNCBjb2xvcjtcIixcbiAgICAgIFwidW5pZm9ybSBib29sIHVzZVRleHR1cmU7XCIsXG4gICAgICBcInVuaWZvcm0gdmVjMyB1Q29sb3I7XCIsXG4gICAgICBcInZvaWQgbWFpbigpIHtcIixcbiAgICAgIFwidmVjNCB0ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVNhbXBsZXIsIHZUZXh0dXJlQ29vcmQpO1wiLFxuICAgICAgXCJnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlQ29sb3IgKiB2ZWM0KHVDb2xvciwgMS4wKTtcIixcbiAgICAgIFwiZ2xfRnJhZ0NvbG9yLncgKj0gYWxwaGE7XCIsXG4gICAgICBcIn1cIlxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgICByZXR1cm4gZnNTb3VyY2U7XG4gIH1cblxuICBpbml0VmFyKCkge1xuICAgIHRoaXMubXN0YWNrID0gbmV3IE1TdGFjaygpO1xuICAgIHRoaXMudW1hdCA9IE1hdDMuY3JlYXRlKFsyLCAwLCAxLCAwLCAtMiwgMCwgLTEsIDEsIDFdKTtcbiAgICB0aGlzLnNtYXQgPSBNYXQzLmNyZWF0ZShbMSAvIDEwMCwgMCwgMSwgMCwgMSAvIDEwMCwgMCwgMCwgMCwgMV0pO1xuICAgIHRoaXMudGV4dHVyZWJ1ZmZlcnMgPSB7fTtcbiAgfVxuXG4gIGJsZW5kRXF1YXRpb24oQSkge1xuICAgIHRoaXMuZ2wuYmxlbmRFcXVhdGlvbih0aGlzLmdsW0FdKTtcbiAgfVxuXG4gIGJsZW5kRnVuYyhBLCBCKSB7XG4gICAgdGhpcy5nbC5ibGVuZEZ1bmModGhpcy5nbFtBXSwgdGhpcy5nbFtCXSk7XG4gIH1cblxuICBnZXRTaGFkZXIoZ2wsIHN0ciwgZnMpIHtcbiAgICBjb25zdCBzaGFkZXIgPSBmcyA/IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpIDogZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpO1xuXG4gICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgc3RyKTtcbiAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcik7XG5cbiAgICBpZiAoIWdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKSkge1xuICAgICAgYWxlcnQoZ2wuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzaGFkZXI7XG4gIH1cblxuICBpbml0U2hhZGVycygpIHtcbiAgICBjb25zdCBmcmFnbWVudFNoYWRlciA9IHRoaXMuZ2V0U2hhZGVyKHRoaXMuZ2wsIHRoaXMuZ2V0RnJhZ21lbnRTaGFkZXIoKSwgdHJ1ZSk7XG4gICAgY29uc3QgdmVydGV4U2hhZGVyID0gdGhpcy5nZXRTaGFkZXIodGhpcy5nbCwgdGhpcy5nZXRWZXJ0ZXhTaGFkZXIoKSwgZmFsc2UpO1xuXG4gICAgdGhpcy5zcHJvZ3JhbSA9IHRoaXMuZ2wuY3JlYXRlUHJvZ3JhbSgpO1xuICAgIHRoaXMuZ2wuYXR0YWNoU2hhZGVyKHRoaXMuc3Byb2dyYW0sIHZlcnRleFNoYWRlcik7XG4gICAgdGhpcy5nbC5hdHRhY2hTaGFkZXIodGhpcy5zcHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpO1xuICAgIHRoaXMuZ2wubGlua1Byb2dyYW0odGhpcy5zcHJvZ3JhbSk7XG5cbiAgICBpZiAoIXRoaXMuZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcih0aGlzLnNwcm9ncmFtLCB0aGlzLmdsLkxJTktfU1RBVFVTKSkgYWxlcnQoXCJDb3VsZCBub3QgaW5pdGlhbGlzZSBzaGFkZXJzXCIpO1xuXG4gICAgdGhpcy5nbC51c2VQcm9ncmFtKHRoaXMuc3Byb2dyYW0pO1xuICAgIHRoaXMuc3Byb2dyYW0udnBhID0gdGhpcy5nbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcImFWZXJ0ZXhQb3NpdGlvblwiKTtcbiAgICB0aGlzLnNwcm9ncmFtLnRjYSA9IHRoaXMuZ2wuZ2V0QXR0cmliTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJhVGV4dHVyZUNvb3JkXCIpO1xuICAgIHRoaXMuZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodGhpcy5zcHJvZ3JhbS50Y2EpO1xuICAgIHRoaXMuZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodGhpcy5zcHJvZ3JhbS52cGEpO1xuXG4gICAgdGhpcy5zcHJvZ3JhbS50TWF0VW5pZm9ybSA9IHRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwidE1hdFwiKTtcbiAgICB0aGlzLnNwcm9ncmFtLnNhbXBsZXJVbmlmb3JtID0gdGhpcy5nbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJ1U2FtcGxlclwiKTtcbiAgICB0aGlzLnNwcm9ncmFtLnVzZVRleCA9IHRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwidXNlVGV4dHVyZVwiKTtcbiAgICB0aGlzLnNwcm9ncmFtLmNvbG9yID0gdGhpcy5nbC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJ1Q29sb3JcIik7XG4gICAgdGhpcy5nbC51bmlmb3JtMWkodGhpcy5zcHJvZ3JhbS51c2VUZXgsIDEpO1xuICB9XG5cbiAgaW5pdEJ1ZmZlcnMoKSB7XG4gICAgY29uc3QgdnMgPSBbMCwgMywgMSwgMCwgMiwgM107XG4gICAgbGV0IGlkeDtcblxuICAgIHRoaXMudW5pdElCdWZmZXIgPSB0aGlzLmdsLmNyZWF0ZUJ1ZmZlcigpO1xuICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLnVuaXRJQnVmZmVyKTtcbiAgICB0aGlzLmdsLmJ1ZmZlckRhdGEodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQxNkFycmF5KHZzKSwgdGhpcy5nbC5TVEFUSUNfRFJBVyk7XG5cbiAgICBsZXQgaTtcbiAgICBsZXQgaWRzID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKSBpZHMucHVzaChpKTtcbiAgICBpZHggPSBuZXcgVWludDE2QXJyYXkoaWRzKTtcblxuICAgIHRoaXMudW5pdEkzMyA9IHRoaXMuZ2wuY3JlYXRlQnVmZmVyKCk7XG4gICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMudW5pdEkzMyk7XG4gICAgdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGlkeCwgdGhpcy5nbC5TVEFUSUNfRFJBVyk7XG5cbiAgICBpZHMgPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIGlkcy5wdXNoKGksIGkgKyAxLCBpICsgMik7XG4gICAgaWR4ID0gbmV3IFVpbnQxNkFycmF5KGlkcyk7XG5cbiAgICB0aGlzLnN0cmlwQnVmZmVyID0gdGhpcy5nbC5jcmVhdGVCdWZmZXIoKTtcbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdGhpcy5zdHJpcEJ1ZmZlcik7XG4gICAgdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGlkeCwgdGhpcy5nbC5TVEFUSUNfRFJBVyk7XG4gIH1cblxuICBjcmVhdGVDaXJjbGUocmFpZHVzKSB7XG4gICAgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMgPSBXZWJHTFV0aWwubmhwb3QoVXRpbC5pbml0VmFsdWUocmFpZHVzLCAzMikpO1xuICAgIGNvbnN0IGNhbnZhcyA9IERvbVV0aWwuY3JlYXRlQ2FudmFzKFwiY2lyY2xlX2NhbnZhc1wiLCB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cyAqIDIsIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzICogMik7XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG5cbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQuYXJjKHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzLCB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cywgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gXCIjRkZGXCI7XG4gICAgY29udGV4dC5maWxsKCk7XG5cbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpO1xuICB9XG5cbiAgZHJhd0ltZzJDYW52YXMocGFydGljbGUpIHtcbiAgICBjb25zdCBfdyA9IHBhcnRpY2xlLmJvZHkud2lkdGg7XG4gICAgY29uc3QgX2ggPSBwYXJ0aWNsZS5ib2R5LmhlaWdodDtcblxuICAgIGNvbnN0IF93aWR0aCA9IFdlYkdMVXRpbC5uaHBvdChwYXJ0aWNsZS5ib2R5LndpZHRoKTtcbiAgICBjb25zdCBfaGVpZ2h0ID0gV2ViR0xVdGlsLm5ocG90KHBhcnRpY2xlLmJvZHkuaGVpZ2h0KTtcblxuICAgIGNvbnN0IF9zY2FsZVggPSBwYXJ0aWNsZS5ib2R5LndpZHRoIC8gX3dpZHRoO1xuICAgIGNvbnN0IF9zY2FsZVkgPSBwYXJ0aWNsZS5ib2R5LmhlaWdodCAvIF9oZWlnaHQ7XG5cbiAgICBpZiAoIXRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdKVxuICAgICAgdGhpcy50ZXh0dXJlYnVmZmVyc1twYXJ0aWNsZS5kYXRhLnNyY10gPSBbXG4gICAgICAgIHRoaXMuZ2wuY3JlYXRlVGV4dHVyZSgpLFxuICAgICAgICB0aGlzLmdsLmNyZWF0ZUJ1ZmZlcigpLFxuICAgICAgICB0aGlzLmdsLmNyZWF0ZUJ1ZmZlcigpXG4gICAgICBdO1xuXG4gICAgcGFydGljbGUuZGF0YS50ZXh0dXJlID0gdGhpcy50ZXh0dXJlYnVmZmVyc1twYXJ0aWNsZS5kYXRhLnNyY11bMF07XG4gICAgcGFydGljbGUuZGF0YS52Y0J1ZmZlciA9IHRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdWzFdO1xuICAgIHBhcnRpY2xlLmRhdGEudGNCdWZmZXIgPSB0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXVsyXTtcblxuICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkFSUkFZX0JVRkZFUiwgcGFydGljbGUuZGF0YS50Y0J1ZmZlcik7XG4gICAgdGhpcy5nbC5idWZmZXJEYXRhKFxuICAgICAgdGhpcy5nbC5BUlJBWV9CVUZGRVIsXG4gICAgICBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuMCwgX3NjYWxlWCwgMC4wLCAwLjAsIF9zY2FsZVksIF9zY2FsZVksIF9zY2FsZVldKSxcbiAgICAgIHRoaXMuZ2wuU1RBVElDX0RSQVdcbiAgICApO1xuICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkFSUkFZX0JVRkZFUiwgcGFydGljbGUuZGF0YS52Y0J1ZmZlcik7XG4gICAgdGhpcy5nbC5idWZmZXJEYXRhKFxuICAgICAgdGhpcy5nbC5BUlJBWV9CVUZGRVIsXG4gICAgICBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuMCwgX3csIDAuMCwgMC4wLCBfaCwgX3csIF9oXSksXG4gICAgICB0aGlzLmdsLlNUQVRJQ19EUkFXXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBwYXJ0aWNsZS5kYXRhLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgY29uc3QgZGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIF93aWR0aCwgX2hlaWdodCk7XG5cbiAgICB0aGlzLmdsLmJpbmRUZXh0dXJlKHRoaXMuZ2wuVEVYVFVSRV8yRCwgcGFydGljbGUuZGF0YS50ZXh0dXJlKTtcbiAgICB0aGlzLmdsLnRleEltYWdlMkQodGhpcy5nbC5URVhUVVJFXzJELCAwLCB0aGlzLmdsLlJHQkEsIHRoaXMuZ2wuUkdCQSwgdGhpcy5nbC5VTlNJR05FRF9CWVRFLCBkYXRhKTtcbiAgICB0aGlzLmdsLnRleFBhcmFtZXRlcmkodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLmdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgdGhpcy5nbC5MSU5FQVIpO1xuICAgIHRoaXMuZ2wudGV4UGFyYW1ldGVyaSh0aGlzLmdsLlRFWFRVUkVfMkQsIHRoaXMuZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCB0aGlzLmdsLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCk7XG4gICAgdGhpcy5nbC5nZW5lcmF0ZU1pcG1hcCh0aGlzLmdsLlRFWFRVUkVfMkQpO1xuXG4gICAgcGFydGljbGUuZGF0YS50ZXh0dXJlTG9hZGVkID0gdHJ1ZTtcbiAgICBwYXJ0aWNsZS5kYXRhLnRleHR1cmVXaWR0aCA9IF93O1xuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZUhlaWdodCA9IF9oO1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7XG4gICAgLy8gdGhpcy5nbC5jbGVhckNvbG9yKDAsIDAsIDAsIDEpO1xuICAgIC8vIHRoaXMuZ2wuY2xlYXIodGhpcy5nbC5DT0xPUl9CVUZGRVJfQklUIHwgdGhpcy5nbC5ERVBUSF9CVUZGRVJfQklUKTtcbiAgfVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuZGF0YS50ZXh0dXJlTG9hZGVkID0gZmFsc2U7XG4gICAgcGFydGljbGUuZGF0YS50bWF0ID0gTWF0My5jcmVhdGUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLnRtYXRbOF0gPSAxO1xuICAgIHBhcnRpY2xlLmRhdGEuaW1hdCA9IE1hdDMuY3JlYXRlKCk7XG4gICAgcGFydGljbGUuZGF0YS5pbWF0WzhdID0gMTtcblxuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBJbWdVdGlsLmdldEltZ0Zyb21DYWNoZShwYXJ0aWNsZS5ib2R5LCB0aGlzLmFkZEltZzJCb2R5LCBwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEltZ1V0aWwuZ2V0SW1nRnJvbUNhY2hlKHRoaXMuY2lyY2xlQ2FudmFzVVJMLCB0aGlzLmFkZEltZzJCb2R5LCBwYXJ0aWNsZSk7XG4gICAgICBwYXJ0aWNsZS5kYXRhLm9sZFNjYWxlID0gcGFydGljbGUucmFkaXVzIC8gdGhpcy5jaXJjbGVDYW52YXNSYWRpdXM7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJpdmF0ZVxuICBhZGRJbWcyQm9keShpbWcsIHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmRlYWQpIHJldHVybjtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gaW1nO1xuICAgIHBhcnRpY2xlLmRhdGEuc3JjID0gaW1nLnNyYztcbiAgICBwYXJ0aWNsZS5kYXRhLmNhbnZhcyA9IEltZ1V0aWwuZ2V0Q2FudmFzRnJvbUNhY2hlKGltZyk7XG4gICAgcGFydGljbGUuZGF0YS5vbGRTY2FsZSA9IDE7XG5cbiAgICB0aGlzLmRyYXdJbWcyQ2FudmFzKHBhcnRpY2xlKTtcbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuZGF0YS50ZXh0dXJlTG9hZGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZU1hdHJpeChwYXJ0aWNsZSk7XG5cbiAgICAgIHRoaXMuZ2wudW5pZm9ybTNmKHRoaXMuc3Byb2dyYW0uY29sb3IsIHBhcnRpY2xlLnJnYi5yIC8gMjU1LCBwYXJ0aWNsZS5yZ2IuZyAvIDI1NSwgcGFydGljbGUucmdiLmIgLyAyNTUpO1xuICAgICAgdGhpcy5nbC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuc3Byb2dyYW0udE1hdFVuaWZvcm0sIGZhbHNlLCB0aGlzLm1zdGFjay50b3AoKSk7XG5cbiAgICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkFSUkFZX0JVRkZFUiwgcGFydGljbGUuZGF0YS52Y0J1ZmZlcik7XG4gICAgICB0aGlzLmdsLnZlcnRleEF0dHJpYlBvaW50ZXIodGhpcy5zcHJvZ3JhbS52cGEsIDIsIHRoaXMuZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTtcbiAgICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkFSUkFZX0JVRkZFUiwgcGFydGljbGUuZGF0YS50Y0J1ZmZlcik7XG4gICAgICB0aGlzLmdsLnZlcnRleEF0dHJpYlBvaW50ZXIodGhpcy5zcHJvZ3JhbS50Y2EsIDIsIHRoaXMuZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTtcbiAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCBwYXJ0aWNsZS5kYXRhLnRleHR1cmUpO1xuICAgICAgdGhpcy5nbC51bmlmb3JtMWkodGhpcy5zcHJvZ3JhbS5zYW1wbGVyVW5pZm9ybSwgMCk7XG4gICAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdGhpcy51bml0SUJ1ZmZlcik7XG5cbiAgICAgIHRoaXMuZ2wuZHJhd0VsZW1lbnRzKHRoaXMuZ2wuVFJJQU5HTEVTLCA2LCB0aGlzLmdsLlVOU0lHTkVEX1NIT1JULCAwKTtcbiAgICAgIHRoaXMubXN0YWNrLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7fVxuXG4gIHVwZGF0ZU1hdHJpeChwYXJ0aWNsZSkge1xuICAgIGNvbnN0IG1vdmVPcmlnaW5NYXRyaXggPSBXZWJHTFV0aWwubWFrZVRyYW5zbGF0aW9uKFxuICAgICAgLXBhcnRpY2xlLmRhdGEudGV4dHVyZVdpZHRoIC8gMixcbiAgICAgIC1wYXJ0aWNsZS5kYXRhLnRleHR1cmVIZWlnaHQgLyAyXG4gICAgKTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbk1hdHJpeCA9IFdlYkdMVXRpbC5tYWtlVHJhbnNsYXRpb24ocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpO1xuXG4gICAgY29uc3QgYW5nZWwgPSBwYXJ0aWNsZS5yb3RhdGlvbiAqIE1hdGhVdGlsLlBJXzE4MDtcbiAgICBjb25zdCByb3RhdGlvbk1hdHJpeCA9IFdlYkdMVXRpbC5tYWtlUm90YXRpb24oYW5nZWwpO1xuXG4gICAgY29uc3Qgc2NhbGUgPSBwYXJ0aWNsZS5zY2FsZSAqIHBhcnRpY2xlLmRhdGEub2xkU2NhbGU7XG4gICAgY29uc3Qgc2NhbGVNYXRyaXggPSBXZWJHTFV0aWwubWFrZVNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gICAgbGV0IG1hdHJpeCA9IFdlYkdMVXRpbC5tYXRyaXhNdWx0aXBseShtb3ZlT3JpZ2luTWF0cml4LCBzY2FsZU1hdHJpeCk7XG5cbiAgICBtYXRyaXggPSBXZWJHTFV0aWwubWF0cml4TXVsdGlwbHkobWF0cml4LCByb3RhdGlvbk1hdHJpeCk7XG4gICAgbWF0cml4ID0gV2ViR0xVdGlsLm1hdHJpeE11bHRpcGx5KG1hdHJpeCwgdHJhbnNsYXRpb25NYXRyaXgpO1xuXG4gICAgTWF0My5pbnZlcnNlKG1hdHJpeCwgcGFydGljbGUuZGF0YS5pbWF0KTtcbiAgICBtYXRyaXhbMl0gPSBwYXJ0aWNsZS5hbHBoYTtcblxuICAgIHRoaXMubXN0YWNrLnB1c2gobWF0cml4KTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuZ2wgPSBudWxsO1xuICAgIHRoaXMubXN0YWNrID0gbnVsbDtcbiAgICB0aGlzLnVtYXQgPSBudWxsO1xuICAgIHRoaXMuc21hdCA9IG51bGw7XG4gICAgdGhpcy50ZXh0dXJlYnVmZmVycyA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGN1c3RvbSByZW5kZXJlciB0aGF0IGV4dGVuZHMgdGhlIEJhc2VSZW5kZXJlci5cbiAqIEBleHRlbmRzIEJhc2VSZW5kZXJlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21SZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEN1c3RvbVJlbmRlcmVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gVGhlIEhUTUwgZWxlbWVudCB0byByZW5kZXIgdG8uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVuZGVyZXIuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSBcIkN1c3RvbVJlbmRlcmVyXCI7XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaW5lIHpvbmUgZm9yIHBhcnRpY2xlIHN5c3RlbXMuXG4gKiBAZXh0ZW5kcyBab25lXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmVab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IExpbmVab25lLlxuICAgKiBAcGFyYW0ge251bWJlcn0geDEgLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkxIC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeDJdIC0gVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgc2Vjb25kIHBvaW50LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3kyXSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkaXJlY3Rpb249XCI+XCJdIC0gVGhlIGRpcmVjdGlvbiBvZiB0aGUgbGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHgxLCB5MSwgeDIsIHkyLCBkaXJlY3Rpb24gPSBcIj5cIikge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAoeDIgLSB4MSA+PSAwKSB7XG4gICAgICB0aGlzLngxID0geDE7XG4gICAgICB0aGlzLnkxID0geTE7XG4gICAgICB0aGlzLngyID0geDI7XG4gICAgICB0aGlzLnkyID0geTI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMueDEgPSB4MjtcbiAgICAgIHRoaXMueTEgPSB5MjtcbiAgICAgIHRoaXMueDIgPSB4MTtcbiAgICAgIHRoaXMueTIgPSB5MTtcbiAgICB9XG5cbiAgICB0aGlzLmR4ID0gdGhpcy54MiAtIHRoaXMueDE7XG4gICAgdGhpcy5keSA9IHRoaXMueTIgLSB0aGlzLnkxO1xuXG4gICAgdGhpcy5taW54ID0gTWF0aC5taW4odGhpcy54MSwgdGhpcy54Mik7XG4gICAgdGhpcy5taW55ID0gTWF0aC5taW4odGhpcy55MSwgdGhpcy55Mik7XG4gICAgdGhpcy5tYXh4ID0gTWF0aC5tYXgodGhpcy54MSwgdGhpcy54Mik7XG4gICAgdGhpcy5tYXh5ID0gTWF0aC5tYXgodGhpcy55MSwgdGhpcy55Mik7XG5cbiAgICB0aGlzLmRvdCA9IHRoaXMueDIgKiB0aGlzLnkxIC0gdGhpcy54MSAqIHRoaXMueTI7XG4gICAgdGhpcy54eHl5ID0gdGhpcy5keCAqIHRoaXMuZHggKyB0aGlzLmR5ICogdGhpcy5keTtcblxuICAgIHRoaXMuZ3JhZGllbnQgPSB0aGlzLmdldEdyYWRpZW50KCk7XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gVXRpbC5pbml0VmFsdWUoZGlyZWN0aW9uLCBcIj5cIik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHJhbmRvbSBwb3NpdGlvbiBvbiB0aGUgbGluZS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBBIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIHJhbmRvbSBwb3NpdGlvbi5cbiAgICovXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb20oKTtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54MSArIHRoaXMucmFuZG9tICogdGhpcy5sZW5ndGggKiBNYXRoLmNvcyh0aGlzLmdyYWRpZW50KTtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55MSArIHRoaXMucmFuZG9tICogdGhpcy5sZW5ndGggKiBNYXRoLnNpbih0aGlzLmdyYWRpZW50KTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoaWNoIHNpZGUgb2YgdGhlIGxpbmUgYSBwb2ludCBpcyBvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBvaW50IGlzIG9uIHRoZSBwb3NpdGl2ZSBzaWRlIG9mIHRoZSBsaW5lLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBnZXREaXJlY3Rpb24oeCwgeSkge1xuICAgIGNvbnN0IEEgPSB0aGlzLmR5O1xuICAgIGNvbnN0IEIgPSAtdGhpcy5keDtcbiAgICBjb25zdCBDID0gdGhpcy5kb3Q7XG4gICAgY29uc3QgRCA9IEIgPT09IDAgPyAxIDogQjtcblxuICAgIGlmICgoQSAqIHggKyBCICogeSArIEMpICogRCA+IDApIHJldHVybiB0cnVlO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIG9mIGEgcG9pbnQgZnJvbSB0aGUgbGluZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGRpc3RhbmNlIGZyb20gdGhlIHBvaW50IHRvIHRoZSBsaW5lLlxuICAgKi9cbiAgZ2V0RGlzdGFuY2UoeCwgeSkge1xuICAgIGNvbnN0IEEgPSB0aGlzLmR5O1xuICAgIGNvbnN0IEIgPSAtdGhpcy5keDtcbiAgICBjb25zdCBDID0gdGhpcy5kb3Q7XG4gICAgY29uc3QgRCA9IEEgKiB4ICsgQiAqIHkgKyBDO1xuXG4gICAgcmV0dXJuIEQgLyBNYXRoLnNxcnQodGhpcy54eHl5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBzeW1tZXRyaWMgdmVjdG9yIG9mIGEgZ2l2ZW4gdmVjdG9yIHdpdGggcmVzcGVjdCB0byB0aGUgbGluZS5cbiAgICogQHBhcmFtIHtWZWN0b3IyRH0gdiAtIFRoZSB2ZWN0b3IgdG8gcmVmbGVjdC5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBUaGUgcmVmbGVjdGVkIHZlY3Rvci5cbiAgICovXG4gIGdldFN5bW1ldHJpYyh2KSB7XG4gICAgY29uc3QgdGhhMiA9IHYuZ2V0R3JhZGllbnQoKTtcbiAgICBjb25zdCB0aGExID0gdGhpcy5nZXRHcmFkaWVudCgpO1xuICAgIGNvbnN0IHRoYSA9IDIgKiAodGhhMSAtIHRoYTIpO1xuXG4gICAgY29uc3Qgb2xkeCA9IHYueDtcbiAgICBjb25zdCBvbGR5ID0gdi55O1xuXG4gICAgdi54ID0gb2xkeCAqIE1hdGguY29zKHRoYSkgLSBvbGR5ICogTWF0aC5zaW4odGhhKTtcbiAgICB2LnkgPSBvbGR4ICogTWF0aC5zaW4odGhhKSArIG9sZHkgKiBNYXRoLmNvcyh0aGEpO1xuXG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZ3JhZGllbnQgKGFuZ2xlKSBvZiB0aGUgbGluZS5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGdyYWRpZW50IG9mIHRoZSBsaW5lIGluIHJhZGlhbnMuXG4gICAqL1xuICBnZXRHcmFkaWVudCgpIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuMih0aGlzLmR5LCB0aGlzLmR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYXJ0aWNsZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZiB0aGUgbGluZS5cbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXJ0aWNsZSBpcyB3aXRoaW4gcmFuZ2UsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHJhbmdlT3V0KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmFicyh0aGlzLmdldEdyYWRpZW50KCkpO1xuXG4gICAgaWYgKGFuZ2xlIDw9IE1hdGhVdGlsLlBJIC8gNCkge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueCA8PSB0aGlzLm1heHggJiYgcGFydGljbGUucC54ID49IHRoaXMubWlueCkgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJ0aWNsZS5wLnkgPD0gdGhpcy5tYXh5ICYmIHBhcnRpY2xlLnAueSA+PSB0aGlzLm1pbnkpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBsZW5ndGggb2YgdGhlIGxpbmUuXG4gICAqL1xuICBnZXRMZW5ndGgoKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLmR4ICogdGhpcy5keCArIHRoaXMuZHkgKiB0aGlzLmR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHBhcnRpY2xlIGNyb3NzaW5nIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBjcm9zc1R5cGUuXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGNoZWNrIGZvciBjcm9zc2luZy5cbiAgICovXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImRlYWRcIikge1xuICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSBcIj5cIiB8fCB0aGlzLmRpcmVjdGlvbiA9PT0gXCJSXCIgfHwgdGhpcy5kaXJlY3Rpb24gPT09IFwicmlnaHRcIiB8fCB0aGlzLmRpcmVjdGlvbiA9PT0gXCJkb3duXCIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlT3V0KHBhcnRpY2xlKSkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5nZXREaXJlY3Rpb24ocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5yYW5nZU91dChwYXJ0aWNsZSkpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLmdldERpcmVjdGlvbihwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSkpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiYm91bmRcIikge1xuICAgICAgaWYgKCF0aGlzLnJhbmdlT3V0KHBhcnRpY2xlKSkgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5nZXREaXN0YW5jZShwYXJ0aWNsZS5wLngsIHBhcnRpY2xlLnAueSkgPD0gcGFydGljbGUucmFkaXVzKSB7XG4gICAgICAgIGlmICh0aGlzLmR4ID09PSAwKSB7XG4gICAgICAgICAgcGFydGljbGUudi54ICo9IC0xO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHkgPT09IDApIHtcbiAgICAgICAgICBwYXJ0aWNsZS52LnkgKj0gLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nZXRTeW1tZXRyaWMocGFydGljbGUudik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImNyb3NzXCIpIHtcbiAgICAgIGlmICh0aGlzLmFsZXJ0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJTb3JyeSwgTGluZVpvbmUgZG9lcyBub3Qgc3VwcG9ydCBjcm9zcyBtZXRob2QhXCIpO1xuICAgICAgICB0aGlzLmFsZXJ0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgWm9uZSBmcm9tIFwiLi9ab25lXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY2lyY3VsYXIgem9uZSBpbiBhIDJEIHNwYWNlLlxuICogQGV4dGVuZHMgWm9uZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaXJjbGVab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENpcmNsZVpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgY2lyY2xlJ3MgY2VudGVyLlxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGNpcmNsZSdzIGNlbnRlci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpdXNdIC0gVGhlIHJhZGl1cyBvZiB0aGUgY2lyY2xlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSwgcmFkaXVzKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLnJhZGl1cyA9IHJhZGl1cztcbiAgICB0aGlzLmFuZ2xlID0gMDtcbiAgICB0aGlzLmNlbnRlciA9IHsgeCwgeSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSByYW5kb20gcG9zaXRpb24gd2l0aGluIHRoZSBjaXJjbGUuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IEFuIG9iamVjdCB3aXRoIHggYW5kIHkgY29vcmRpbmF0ZXMuXG4gICAqL1xuICBnZXRQb3NpdGlvbigpIHtcbiAgICB0aGlzLmFuZ2xlID0gTWF0aFV0aWwuUEl4MiAqIE1hdGgucmFuZG9tKCk7XG4gICAgdGhpcy5yYW5kb21SYWRpdXMgPSBNYXRoLnJhbmRvbSgpICogdGhpcy5yYWRpdXM7XG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueCArIHRoaXMucmFuZG9tUmFkaXVzICogTWF0aC5jb3ModGhpcy5hbmdsZSk7XG4gICAgdGhpcy52ZWN0b3IueSA9IHRoaXMueSArIHRoaXMucmFuZG9tUmFkaXVzICogTWF0aC5zaW4odGhpcy5hbmdsZSk7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY2VudGVyIG9mIHRoZSBjaXJjbGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIG5ldyB4LWNvb3JkaW5hdGUgb2YgdGhlIGNlbnRlci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgbmV3IHktY29vcmRpbmF0ZSBvZiB0aGUgY2VudGVyLlxuICAgKi9cbiAgc2V0Q2VudGVyKHgsIHkpIHtcbiAgICB0aGlzLmNlbnRlci54ID0geDtcbiAgICB0aGlzLmNlbnRlci55ID0geTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHBhcnRpY2xlIGNyb3NzaW5nIGJlaGF2aW9yLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gY2hlY2sgZm9yIGNyb3NzaW5nLlxuICAgKi9cbiAgY3Jvc3NpbmcocGFydGljbGUpIHtcbiAgICBjb25zdCBkID0gcGFydGljbGUucC5kaXN0YW5jZVRvKHRoaXMuY2VudGVyKTtcblxuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmIChkIC0gcGFydGljbGUucmFkaXVzID4gdGhpcy5yYWRpdXMpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiYm91bmRcIikge1xuICAgICAgaWYgKGQgKyBwYXJ0aWNsZS5yYWRpdXMgPj0gdGhpcy5yYWRpdXMpIHRoaXMuZ2V0U3ltbWV0cmljKHBhcnRpY2xlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImNyb3NzXCIpIHtcbiAgICAgIGlmICh0aGlzLmFsZXJ0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJTb3JyeSwgQ2lyY2xlWm9uZSBkb2VzIG5vdCBzdXBwb3J0IGNyb3NzIG1ldGhvZCFcIik7XG4gICAgICAgIHRoaXMuYWxlcnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgc3ltbWV0cmljIHBvc2l0aW9uIG9mIGEgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBjYWxjdWxhdGUgc3ltbWV0cnkgZm9yLlxuICAgKi9cbiAgZ2V0U3ltbWV0cmljKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgdGhhMiA9IHBhcnRpY2xlLnYuZ2V0R3JhZGllbnQoKTtcbiAgICBjb25zdCB0aGExID0gdGhpcy5nZXRHcmFkaWVudChwYXJ0aWNsZSk7XG5cbiAgICBjb25zdCB0aGEgPSAyICogKHRoYTEgLSB0aGEyKTtcbiAgICBjb25zdCBvbGR4ID0gcGFydGljbGUudi54O1xuICAgIGNvbnN0IG9sZHkgPSBwYXJ0aWNsZS52Lnk7XG5cbiAgICBwYXJ0aWNsZS52LnggPSBvbGR4ICogTWF0aC5jb3ModGhhKSAtIG9sZHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHBhcnRpY2xlLnYueSA9IG9sZHggKiBNYXRoLnNpbih0aGEpICsgb2xkeSAqIE1hdGguY29zKHRoYSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZ3JhZGllbnQgZm9yIGEgcGFydGljbGUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBjYWxjdWxhdGUgdGhlIGdyYWRpZW50IGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGNhbGN1bGF0ZWQgZ3JhZGllbnQuXG4gICAqL1xuICBnZXRHcmFkaWVudChwYXJ0aWNsZSkge1xuICAgIHJldHVybiAtTWF0aFV0aWwuUElfMiArIE1hdGguYXRhbjIocGFydGljbGUucC55IC0gdGhpcy5jZW50ZXIueSwgcGFydGljbGUucC54IC0gdGhpcy5jZW50ZXIueCk7XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcmVjdGFuZ3VsYXIgem9uZSBmb3IgcGFydGljbGUgc3lzdGVtcy5cbiAqIEBleHRlbmRzIFpvbmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjdFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUmVjdFpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbd2lkdGhdIC0gVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaGVpZ2h0XSAtIFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHgsIHksIHdpZHRoID0gMjAwLCBoZWlnaHQgPSAyMDApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmFuZG9tIHBvc2l0aW9uIHdpdGhpbiB0aGUgcmVjdGFuZ3VsYXIgem9uZS5cbiAgICogQHJldHVybnMge1ZlY3RvcjJEfSBBIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIHJhbmRvbSBwb3NpdGlvbi5cbiAgICovXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMudmVjdG9yLnggPSB0aGlzLnggKyBNYXRoLnJhbmRvbSgpICogdGhpcy53aWR0aDtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55ICsgTWF0aC5yYW5kb20oKSAqIHRoaXMuaGVpZ2h0O1xuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHBhcnRpY2xlIGNyb3NzaW5nIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBjcm9zc1R5cGUuXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGNoZWNrIGZvciBjcm9zc2luZy5cbiAgICovXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgLy8gcGFydGljbGUgZGVhZCB6b25lXG4gICAgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImRlYWRcIikge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueCArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueCkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICBlbHNlIGlmIChwYXJ0aWNsZS5wLnggLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnggKyB0aGlzLndpZHRoKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcblxuICAgICAgaWYgKHBhcnRpY2xlLnAueSArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueSkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICBlbHNlIGlmIChwYXJ0aWNsZS5wLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnkgKyB0aGlzLmhlaWdodCkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gcGFydGljbGUgYm91bmQgem9uZVxuICAgIGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmIChwYXJ0aWNsZS5wLnggLSBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLngpIHtcbiAgICAgICAgcGFydGljbGUucC54ID0gdGhpcy54ICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgICBwYXJ0aWNsZS52LnggKj0gLTE7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpY2xlLnAueCArIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueCArIHRoaXMud2lkdGgpIHtcbiAgICAgICAgcGFydGljbGUucC54ID0gdGhpcy54ICsgdGhpcy53aWR0aCAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgICAgcGFydGljbGUudi54ICo9IC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFydGljbGUucC55IC0gcGFydGljbGUucmFkaXVzIDwgdGhpcy55KSB7XG4gICAgICAgIHBhcnRpY2xlLnAueSA9IHRoaXMueSArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgICAgcGFydGljbGUudi55ICo9IC0xO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnkgKyB0aGlzLmhlaWdodCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnkgPSB0aGlzLnkgKyB0aGlzLmhlaWdodCAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgICAgcGFydGljbGUudi55ICo9IC0xO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcnRpY2xlIGNyb3NzIHpvbmVcbiAgICBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJjcm9zc1wiKSB7XG4gICAgICBpZiAocGFydGljbGUucC54ICsgcGFydGljbGUucmFkaXVzIDwgdGhpcy54ICYmIHBhcnRpY2xlLnYueCA8PSAwKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCArIHRoaXMud2lkdGggKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpY2xlLnAueCAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueCArIHRoaXMud2lkdGggJiYgcGFydGljbGUudi54ID49IDApIHtcbiAgICAgICAgcGFydGljbGUucC54ID0gdGhpcy54IC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFydGljbGUucC55ICsgcGFydGljbGUucmFkaXVzIDwgdGhpcy55ICYmIHBhcnRpY2xlLnYueSA8PSAwKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueSA9IHRoaXMueSArIHRoaXMuaGVpZ2h0ICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnkgKyB0aGlzLmhlaWdodCAmJiBwYXJ0aWNsZS52LnkgPj0gMCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnkgPSB0aGlzLnkgLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgWm9uZSBmcm9tIFwiLi9ab25lXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB6b25lIGJhc2VkIG9uIGltYWdlIGRhdGEuXG4gKiBAZXh0ZW5kcyBab25lXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEltYWdlWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBJbWFnZVpvbmUuXG4gICAqIEBwYXJhbSB7SW1hZ2VEYXRhfSBpbWFnZURhdGEgLSBUaGUgaW1hZ2UgZGF0YSB0byB1c2UgZm9yIHRoZSB6b25lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3g9MF0gLSBUaGUgeC1jb29yZGluYXRlIG9mZnNldC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5PTBdIC0gVGhlIHktY29vcmRpbmF0ZSBvZmZzZXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZD0yXSAtIFRoZSBzYW1wbGluZyBkZW5zaXR5LlxuICAgKi9cbiAgY29uc3RydWN0b3IoaW1hZ2VEYXRhLCB4LCB5LCBkKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlc2V0KGltYWdlRGF0YSwgeCwgeSwgZCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBJbWFnZVpvbmUgd2l0aCBuZXcgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtJbWFnZURhdGF9IGltYWdlRGF0YSAtIFRoZSBpbWFnZSBkYXRhIHRvIHVzZSBmb3IgdGhlIHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeD0wXSAtIFRoZSB4LWNvb3JkaW5hdGUgb2Zmc2V0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3k9MF0gLSBUaGUgeS1jb29yZGluYXRlIG9mZnNldC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkPTJdIC0gVGhlIHNhbXBsaW5nIGRlbnNpdHkuXG4gICAqL1xuICByZXNldChpbWFnZURhdGEsIHgsIHksIGQpIHtcbiAgICB0aGlzLmltYWdlRGF0YSA9IGltYWdlRGF0YTtcbiAgICB0aGlzLnggPSBVdGlsLmluaXRWYWx1ZSh4LCAwKTtcbiAgICB0aGlzLnkgPSBVdGlsLmluaXRWYWx1ZSh5LCAwKTtcbiAgICB0aGlzLmQgPSBVdGlsLmluaXRWYWx1ZShkLCAyKTtcblxuICAgIHRoaXMudmVjdG9ycyA9IFtdO1xuICAgIHRoaXMuc2V0VmVjdG9ycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdmVjdG9ycyBiYXNlZCBvbiB0aGUgaW1hZ2UgZGF0YS5cbiAgICogQHJldHVybnMge09iamVjdH0gVGhlIHZlY3RvciBvYmplY3QuXG4gICAqL1xuICBzZXRWZWN0b3JzKCkge1xuICAgIGxldCBpLCBqO1xuICAgIGNvbnN0IGxlbmd0aDEgPSB0aGlzLmltYWdlRGF0YS53aWR0aDtcbiAgICBjb25zdCBsZW5ndGgyID0gdGhpcy5pbWFnZURhdGEuaGVpZ2h0O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDE7IGkgKz0gdGhpcy5kKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbGVuZ3RoMjsgaiArPSB0aGlzLmQpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gKChqID4+IDApICogbGVuZ3RoMSArIChpID4+IDApKSAqIDQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VEYXRhLmRhdGFbaW5kZXggKyAzXSA+IDApIHtcbiAgICAgICAgICB0aGlzLnZlY3RvcnMucHVzaCh7IHg6IGkgKyB0aGlzLngsIHk6IGogKyB0aGlzLnkgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcG9pbnQgaXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIGltYWdlLlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4LWNvb3JkaW5hdGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHktY29vcmRpbmF0ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBvaW50IGlzIHdpdGhpbiBib3VuZHMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGdldEJvdW5kKHgsIHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICgoeSA+PiAwKSAqIHRoaXMuaW1hZ2VEYXRhLndpZHRoICsgKHggPj4gMCkpICogNDtcbiAgICByZXR1cm4gdGhpcy5pbWFnZURhdGEuZGF0YVtpbmRleCArIDNdID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmFuZG9tIHBvc2l0aW9uIHdpdGhpbiB0aGUgaW1hZ2Ugem9uZS5cbiAgICogQHJldHVybnMge09iamVjdH0gQSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBwb3NpdGlvbi5cbiAgICovXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHZlY3RvciA9IFV0aWwuZ2V0UmFuZEZyb21BcnJheSh0aGlzLnZlY3RvcnMpO1xuICAgIHJldHVybiB0aGlzLnZlY3Rvci5jb3B5KHZlY3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29sb3IgYXQgYSBzcGVjaWZpYyBwb2ludCBpbiB0aGUgaW1hZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHgtY29vcmRpbmF0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeS1jb29yZGluYXRlLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyByLCBnLCBiLCBhbmQgYSB2YWx1ZXMuXG4gICAqL1xuICBnZXRDb2xvcih4LCB5KSB7XG4gICAgeCAtPSB0aGlzLng7XG4gICAgeSAtPSB0aGlzLnk7XG4gICAgY29uc3QgaSA9ICgoeSA+PiAwKSAqIHRoaXMuaW1hZ2VEYXRhLndpZHRoICsgKHggPj4gMCkpICogNDtcblxuICAgIHJldHVybiB7XG4gICAgICByOiB0aGlzLmltYWdlRGF0YS5kYXRhW2ldLFxuICAgICAgZzogdGhpcy5pbWFnZURhdGEuZGF0YVtpICsgMV0sXG4gICAgICBiOiB0aGlzLmltYWdlRGF0YS5kYXRhW2kgKyAyXSxcbiAgICAgIGE6IHRoaXMuaW1hZ2VEYXRhLmRhdGFbaSArIDNdXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHBhcnRpY2xlIGNyb3NzaW5nIGJlaGF2aW9yLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gY2hlY2sgZm9yIGNyb3NzaW5nLlxuICAgKi9cbiAgY3Jvc3NpbmcocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiZGVhZFwiKSB7XG4gICAgICBwYXJ0aWNsZS5kZWFkID0gdGhpcy5nZXRCb3VuZChwYXJ0aWNsZS5wLnggLSB0aGlzLngsIHBhcnRpY2xlLnAueSAtIHRoaXMueSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJib3VuZFwiKSB7XG4gICAgICBpZiAoIXRoaXMuZ2V0Qm91bmQocGFydGljbGUucC54IC0gdGhpcy54LCBwYXJ0aWNsZS5wLnkgLSB0aGlzLnkpKSBwYXJ0aWNsZS52Lm5lZ2F0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgSW1hZ2Vab25lIGFuZCBjbGVhbnMgdXAgcmVzb3VyY2VzLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBDaXJjbGVab25lIGZyb20gXCIuLi96b25lL0NpcmNsZVpvbmVcIjtcbmltcG9ydCBQb2ludFpvbmUgZnJvbSBcIi4uL3pvbmUvUG9pbnRab25lXCI7XG5pbXBvcnQgTGluZVpvbmUgZnJvbSBcIi4uL3pvbmUvTGluZVpvbmVcIjtcbmltcG9ydCBSZWN0Wm9uZSBmcm9tIFwiLi4vem9uZS9SZWN0Wm9uZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFkZEV2ZW50TGlzdGVuZXIocHJvdG9uLCBmdW5jKSB7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFX0FGVEVSXCIsICgpID0+IGZ1bmMoKSk7XG4gIH0sXG5cbiAgZ2V0U3R5bGUoY29sb3IgPSBcIiNmZjAwMDBcIikge1xuICAgIGNvbnN0IHJnYiA9IENvbG9yVXRpbC5oZXhUb1JnYihjb2xvcik7XG4gICAgcmV0dXJuIGByZ2JhKCR7cmdiLnJ9LCAke3JnYi5nfSwgJHtyZ2IuYn0sIDAuNSlgO1xuICB9LFxuXG4gIGRyYXdab25lKHByb3RvbiwgY2FudmFzLCB6b25lLCBjbGVhcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRTdHlsZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHByb3RvbiwgKCkgPT4ge1xuICAgICAgaWYgKGNsZWFyKSBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBpZiAoem9uZSBpbnN0YW5jZW9mIFBvaW50Wm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHN0eWxlO1xuICAgICAgICBjb250ZXh0LmFyYyh6b25lLngsIHpvbmUueSwgMTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICB9IGVsc2UgaWYgKHpvbmUgaW5zdGFuY2VvZiBMaW5lWm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQubW92ZVRvKHpvbmUueDEsIHpvbmUueTEpO1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh6b25lLngyLCB6b25lLnkyKTtcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgIH0gZWxzZSBpZiAoem9uZSBpbnN0YW5jZW9mIFJlY3Rab25lKSB7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBzdHlsZTtcbiAgICAgICAgY29udGV4dC5kcmF3UmVjdCh6b25lLngsIHpvbmUueSwgem9uZS53aWR0aCwgem9uZS5oZWlnaHQpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfSBlbHNlIGlmICh6b25lIGluc3RhbmNlb2YgQ2lyY2xlWm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQuYXJjKHpvbmUueCwgem9uZS55LCB6b25lLnJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIGRyYXdFbWl0dGVyKHByb3RvbiwgY2FudmFzLCBlbWl0dGVyLCBjbGVhcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRTdHlsZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHByb3RvbiwgKCkgPT4ge1xuICAgICAgaWYgKGNsZWFyKSBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBzdHlsZTtcbiAgICAgIGNvbnRleHQuYXJjKGVtaXR0ZXIucC54LCBlbWl0dGVyLnAueSwgMTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9KTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJpcG90IiwibGVuZ3RoIiwibmhwb3QiLCJpIiwibWFrZVRyYW5zbGF0aW9uIiwidHgiLCJ0eSIsIm1ha2VSb3RhdGlvbiIsImFuZ2xlSW5SYWRpYW5zIiwiYyIsIk1hdGgiLCJjb3MiLCJzIiwic2luIiwibWFrZVNjYWxlIiwic3giLCJzeSIsIm1hdHJpeE11bHRpcGx5IiwiYSIsImIiLCJhMDAiLCJhMDEiLCJhMDIiLCJhMTAiLCJhMTEiLCJhMTIiLCJhMjAiLCJhMjEiLCJhMjIiLCJiMDAiLCJiMDEiLCJiMDIiLCJiMTAiLCJiMTEiLCJiMTIiLCJiMjAiLCJiMjEiLCJiMjIiLCJjcmVhdGVDYW52YXMiLCJpZCIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJkb20iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm9wYWNpdHkiLCJ0cmFuc2Zvcm0iLCJjcmVhdGVEaXYiLCJyZXNpemUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luVG9wIiwiZGl2IiwieCIsInkiLCJzY2FsZSIsInJvdGF0ZSIsIndpbGxDaGFuZ2UiLCJjc3MzIiwidHJhbnNmb3JtM2QiLCJrZXkiLCJ2YWwiLCJia2V5IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJpbWdzQ2FjaGUiLCJjYW52YXNDYWNoZSIsImNhbnZhc0lkIiwiZ2V0SW1hZ2VEYXRhIiwiY29udGV4dCIsImltYWdlIiwicmVjdCIsImRyYXdJbWFnZSIsImltYWdlZGF0YSIsImNsZWFyUmVjdCIsImdldEltZ0Zyb21DYWNoZSIsImltZyIsImNhbGxiYWNrIiwicGFyYW0iLCJzcmMiLCJJbWFnZSIsIm9ubG9hZCIsImUiLCJ0YXJnZXQiLCJnZXRDYW52YXNGcm9tQ2FjaGUiLCJXZWJHTFV0aWwiLCJjYW52YXMiLCJEb21VdGlsIiwiZ2V0Q29udGV4dCIsImluaXRWYWx1ZSIsInZhbHVlIiwiZGVmYXVsdHMiLCJ1bmRlZmluZWQiLCJpc0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZW1wdHlBcnJheSIsImFyciIsInRvQXJyYXkiLCJzbGljZUFycmF5IiwiYXJyMSIsImluZGV4IiwiYXJyMiIsInB1c2giLCJnZXRSYW5kRnJvbUFycmF5IiwiZmxvb3IiLCJyYW5kb20iLCJlbXB0eU9iamVjdCIsIm9iaiIsImlnbm9yZSIsImluZGV4T2YiLCJjbGFzc0FwcGx5IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiRmFjdG9yeUZ1bmMiLCJiaW5kIiwiYXBwbHkiLCJjb25jYXQiLCJJbWdVdGlsIiwiZGVzdHJveUFsbCIsImRlc3Ryb3kiLCJhc3NpZ24iLCJzb3VyY2UiLCJoYXNPd25Qcm9wZXJ0eSIsImlkc01hcCIsIlB1aWQiLCJfaW5kZXgiLCJfY2FjaGUiLCJ0eXBlIiwiZ2V0SWQiLCJ1aWQiLCJnZXRJZEZyb21DYWNoZSIsImlzQm9keSIsImlzSW5uZXIiLCJnZXRUYXJnZXQiLCJQb29sIiwibnVtIiwidG90YWwiLCJjYWNoZSIsIl9wcm90byIsImdldCIsInBhcmFtcyIsInAiLCJfX3B1aWQiLCJwb3AiLCJjcmVhdGVPckNsb25lIiwiZXhwaXJlIiwiZ2V0Q2FjaGUiLCJjcmVhdGUiLCJVdGlsIiwiY2xvbmUiLCJnZXRDb3VudCIsImNvdW50IiwiU3RhdHMiLCJwcm90b24iLCJjb250YWluZXIiLCJlbWl0dGVySW5kZXgiLCJyZW5kZXJlckluZGV4IiwidXBkYXRlIiwiYm9keSIsImFkZCIsImVtaXR0ZXIiLCJnZXRFbWl0dGVyIiwicmVuZGVyZXIiLCJnZXRSZW5kZXJlciIsInN0ciIsImVtaXR0ZXJzIiwiZW1pdFNwZWVkIiwiZ2V0RW1pdHRlclBvcyIsImluaXRpYWxpemVzIiwiY29uY2F0QXJyIiwiYmVoYXZpb3VycyIsIm5hbWUiLCJnZXRDcmVhdGVkTnVtYmVyIiwicG9vbCIsImlubmVySFRNTCIsIl90aGlzIiwiY3NzVGV4dCIsImpvaW4iLCJhZGRFdmVudExpc3RlbmVyIiwiYmciLCJjb2xvciIsInBhcmVudE5vZGUiLCJhcHBlbmRDaGlsZCIsInJlbmRlcmVycyIsInJlc3VsdCIsImNwb29sIiwicm91bmQiLCJyZW1vdmVDaGlsZCIsIkV2ZW50RGlzcGF0Y2hlciIsIl9saXN0ZW5lcnMiLCJkaXNwYXRjaEV2ZW50IiwiaGFzRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVBbGxFdmVudExpc3RlbmVycyIsImxpc3RlbmVyIiwic3BsaWNlIiwibGlzdGVuZXJzIiwiaGFuZGxlciIsIlBJIiwiSU5GSU5JVFkiLCJJbmZpbml0eSIsIk1hdGhVdGlsIiwiUEl4MiIsIlBJXzIiLCJQSV8xODAiLCJOMTgwX1BJIiwiaXNJbmZpbml0eSIsInJhbmRvbUFUb0IiLCJpc0ludCIsInJhbmRvbUZsb2F0aW5nIiwiY2VudGVyIiwiZiIsInJhbmRvbUNvbG9yIiwic2xpY2UiLCJyYW5kb21ab25lIiwiZGlzcGxheSIsImsiLCJkaWdpdHMiLCJwb3ciLCJkZWdyZWVUcmFuc2Zvcm0iLCJ0b0NvbG9yMTYiLCJJbnRlZ3JhdGlvbiIsImNhbGN1bGF0ZSIsInBhcnRpY2xlcyIsInRpbWUiLCJkYW1waW5nIiwiZXVsZXJJbnRlZ3JhdGUiLCJwYXJ0aWNsZSIsInNsZWVwIiwib2xkIiwiY29weSIsInYiLCJtdWx0aXBseVNjYWxhciIsIm1hc3MiLCJjbGVhciIsIlByb3RvbiIsImludGVncmF0aW9uVHlwZSIsIm5vdyIsInRoZW4iLCJlbGFwc2VkIiwic3RhdHMiLCJFVUxFUiIsImludGVncmF0b3IiLCJfZnBzIiwiX2ludGVydmFsIiwiREVGQVVMVF9JTlRFUlZBTCIsImFkZFJlbmRlcmVyIiwicmVuZGVyIiwiaW5pdCIsInJlbW92ZVJlbmRlcmVyIiwicmVtb3ZlIiwiYWRkRW1pdHRlciIsInBhcmVudCIsIkVNSVRURVJfQURERUQiLCJyZW1vdmVFbWl0dGVyIiwiRU1JVFRFUl9SRU1PVkVEIiwiUFJPVE9OX1VQREFURSIsIlVTRV9DTE9DSyIsIkRhdGUiLCJnZXRUaW1lIiwiYW1lbmRDaGFuZ2VUYWJzQnVnIiwiZW1pdHRlcnNVcGRhdGUiLCJQUk9UT05fVVBEQVRFX0FGVEVSIiwiZ2V0QWxsUGFydGljbGVzIiwiZGVzdHJveUFsbEVtaXR0ZXJzIiwiZGVzdHJveU90aGVyIiwic2V0VGltZW91dCIsIl9jcmVhdGVDbGFzcyIsInNldCIsImZwcyIsIk1FQVNVUkUiLCJSSzIiLCJQQVJUSUNMRV9DUkVBVEVEIiwiUEFSVElDTEVfVVBEQVRFIiwiUEFSVElDTEVfU0xFRVAiLCJQQVJUSUNMRV9ERUFEIiwiUmdiIiwiciIsImciLCJyZXNldCIsIlNwYW4iLCJnZXRWYWx1ZSIsInNldFNwYW5WYWx1ZSIsImdldFNwYW5WYWx1ZSIsInBhbiIsImhhc1Byb3AiLCJzZXRQcm9wIiwicHJvcHMiLCJwcm9wIiwic2V0VmVjdG9yVmFsIiwiY29uZiIsImVhc2VMaW5lYXIiLCJlYXNlSW5RdWFkIiwiZWFzZU91dFF1YWQiLCJlYXNlSW5PdXRRdWFkIiwiZWFzZUluQ3ViaWMiLCJlYXNlT3V0Q3ViaWMiLCJlYXNlSW5PdXRDdWJpYyIsImVhc2VJblF1YXJ0IiwiZWFzZU91dFF1YXJ0IiwiZWFzZUluT3V0UXVhcnQiLCJlYXNlSW5TaW5lIiwiZWFzZU91dFNpbmUiLCJlYXNlSW5PdXRTaW5lIiwiZWFzZUluRXhwbyIsImVhc2VPdXRFeHBvIiwiZWFzZUluT3V0RXhwbyIsImVhc2VJbkNpcmMiLCJzcXJ0IiwiZWFzZU91dENpcmMiLCJlYXNlSW5PdXRDaXJjIiwiZWFzZUluQmFjayIsImVhc2VPdXRCYWNrIiwiZWFzZUluT3V0QmFjayIsImdldEVhc2luZyIsImVhc2UiLCJWZWN0b3IyRCIsInNldFgiLCJzZXRZIiwiZ2V0R3JhZGllbnQiLCJhdGFuMiIsInciLCJhZGRWZWN0b3JzIiwiYWRkWFkiLCJzdWIiLCJzdWJWZWN0b3JzIiwiZGl2aWRlU2NhbGFyIiwibmVnYXRlIiwiZG90IiwibGVuZ3RoU3EiLCJub3JtYWxpemUiLCJkaXN0YW5jZVRvIiwiZGlzdGFuY2VUb1NxdWFyZWQiLCJ0aGEiLCJkeCIsImR5IiwibGVycCIsImFscGhhIiwiZXF1YWxzIiwiUGFydGljbGUiLCJkYXRhIiwicmdiIiwiUHJvcFV0aWwiLCJnZXREaXJlY3Rpb24iLCJsaWZlIiwiYWdlIiwiZGVhZCIsInNwcml0ZSIsImVuZXJneSIsInJhZGl1cyIsInJvdGF0aW9uIiwiZWFzaW5nIiwicmVtb3ZlQWxsQmVoYXZpb3VycyIsImFwcGx5QmVoYXZpb3VycyIsIm1heCIsImFwcGx5QmVoYXZpb3VyIiwiYWRkQmVoYXZpb3VyIiwiYmVoYXZpb3VyIiwicGFyZW50cyIsImluaXRpYWxpemUiLCJhZGRCZWhhdmlvdXJzIiwicmVtb3ZlQmVoYXZpb3VyIiwiaGV4VG9SZ2IiLCJoIiwiaGV4MTYiLCJzdWJzdHJpbmciLCJwYXJzZUludCIsInJnYlRvSGV4IiwicmJnIiwiZ2V0SGV4MTZGcm9tUGFydGljbGUiLCJOdW1iZXIiLCJQb2xhcjJEIiwiYWJzIiwic2V0UiIsInNldFRoYSIsInRvVmVjdG9yIiwiZ2V0WCIsImdldFkiLCJNYXQzIiwibWF0MyIsIm1hdCIsIkZsb2F0MzJBcnJheSIsIm1hdDEiLCJtYXQyIiwibXVsdGlwbHkiLCJpbnZlcnNlIiwiZCIsIm11bHRpcGx5VmVjMiIsIm0iLCJ2ZWMiLCJBcnJheVNwYW4iLCJfU3BhbiIsIl9pbmhlcml0c0xvb3NlIiwiX2FyciIsImNyZWF0ZUFycmF5U3BhbiIsIlJlY3RhbmdsZSIsImJvdHRvbSIsInJpZ2h0IiwiY29udGFpbnMiLCJSYXRlIiwibnVtcGFuIiwidGltZXBhbiIsIm51bVBhbiIsInRpbWVQYW4iLCJzdGFydFRpbWUiLCJuZXh0VGltZSIsIkluaXRpYWxpemUiLCJMaWZlIiwiX0luaXRpYWxpemUiLCJsaWZlUGFuIiwiWm9uZSIsInZlY3RvciIsImNyb3NzVHlwZSIsImFsZXJ0IiwiZ2V0UG9zaXRpb24iLCJjcm9zc2luZyIsIlBvaW50Wm9uZSIsIl9ab25lIiwiY29uc29sZSIsImVycm9yIiwiUG9zaXRpb24iLCJ6b25lIiwiVmVsb2NpdHkiLCJycGFuIiwidGhhcGFuIiwiclBhbiIsInRoYVBhbiIsIm5vcm1hbGl6ZVZlbG9jaXR5IiwidnIiLCJwb2xhcjJkIiwiTWFzcyIsIm1hc3NQYW4iLCJSYWRpdXMiLCJvbGRSYWRpdXMiLCJCb2R5IiwiaW1hZ2VUYXJnZXQiLCJpbm5lciIsIkJlaGF2aW91ciIsIm5vcm1hbGl6ZUZvcmNlIiwiZm9yY2UiLCJub3JtYWxpemVWYWx1ZSIsIkZvcmNlIiwiX0JlaGF2aW91ciIsImZ4IiwiZnkiLCJBdHRyYWN0aW9uIiwidGFyZ2V0UG9zaXRpb24iLCJyYWRpdXNTcSIsImF0dHJhY3Rpb25Gb3JjZSIsIlJhbmRvbURyaWZ0IiwiZHJpZnRYIiwiZHJpZnRZIiwiZGVsYXkiLCJwYW5Gb2NlIiwiR3Jhdml0eSIsIl9Gb3JjZSIsIkNvbGxpc2lvbiIsIm5ld1Bvb2wiLCJjb2xsaXNpb25Qb29sIiwiZGVsdGEiLCJvdGhlclBhcnRpY2xlIiwib3ZlcmxhcCIsInRvdGFsTWFzcyIsImF2ZXJhZ2VNYXNzMSIsImF2ZXJhZ2VNYXNzMiIsImRpc3RhbmNlIiwiQ3Jvc3Nab25lIiwiQWxwaGEiLCJzYW1lIiwiYWxwaGFBIiwiYWxwaGFCIiwiU2NhbGUiLCJzY2FsZUEiLCJzY2FsZUIiLCJSb3RhdGUiLCJpbmZsdWVuY2UiLCJyb3RhdGlvbkEiLCJyb3RhdGlvbkIiLCJDb2xvciIsImNvbG9yQSIsIkNvbG9yVXRpbCIsImNvbG9yQiIsIkNIQU5HSU5HIiwiQ3ljbG9uZSIsImFuZ2xlIiwic2V0QW5nbGVBbmRGb3JjZSIsInNwYW4iLCJTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImNhbmdsZSIsImN5Y2xvbmUiLCJncmFkaWVudCIsIlJlcHVsc2lvbiIsIl9BdHRyYWN0aW9uIiwiR3Jhdml0eVdlbGwiLCJjZW50ZXJQb2ludCIsImRpc3RhbmNlVmVjIiwiZGlzdGFuY2VTcSIsImZhY3RvciIsImJpbmRFbWl0dGVyIiwiRW1pdHRlciIsIl9QYXJ0aWNsZSIsImVtaXRUaW1lIiwidG90YWxUaW1lIiwicmF0ZSIsImVtaXQiLCJzdG9wZWQiLCJpc05hTiIsInN0b3AiLCJwcmVFbWl0Iiwib2xkU3RvcGVkIiwib2xkRW1pdFRpbWUiLCJvbGRUb3RhbFRpbWUiLCJzdGVwIiwicmVtb3ZlQWxsUGFydGljbGVzIiwiYWRkU2VsZkluaXRpYWxpemUiLCJhZGRJbml0aWFsaXplIiwiX2xlbiIsImFyZ3VtZW50cyIsInJlc3QiLCJBcnJheSIsIl9rZXkiLCJyZW1vdmVJbml0aWFsaXplIiwiaW5pdGlhbGl6ZXIiLCJyZW1vdmVBbGxJbml0aWFsaXplcnMiLCJfbGVuMiIsIl9rZXkyIiwiZW1pdHRpbmciLCJpbnRlZ3JhdGUiLCJkaXNwYXRjaCIsImV2ZW50IiwiYmluZEV2ZW50IiwiY3JlYXRlUGFydGljbGUiLCJzZXR1cFBhcnRpY2xlIiwiSW5pdGlhbGl6ZVV0aWwiLCJCZWhhdmlvdXJFbWl0dGVyIiwiX0VtaXR0ZXIiLCJzZWxmQmVoYXZpb3VycyIsImFkZFNlbGZCZWhhdmlvdXIiLCJyZW1vdmVTZWxmQmVoYXZpb3VyIiwiRm9sbG93RW1pdHRlciIsIm1vdXNlVGFyZ2V0Iiwid2luZG93IiwiX2FsbG93RW1pdHRpbmciLCJpbml0RXZlbnRIYW5kbGVyIiwiX3RoaXMyIiwibW91c2Vtb3ZlSGFuZGxlciIsIm1vdXNlbW92ZSIsIm1vdXNlZG93bkhhbmRsZXIiLCJtb3VzZWRvd24iLCJtb3VzZXVwSGFuZGxlciIsIm1vdXNldXAiLCJsYXllclgiLCJsYXllclkiLCJvZmZzZXRYIiwib2Zmc2V0WSIsImlzSW1hZ2UiLCJfX2lzSW1hZ2UiLCJ0YWdOYW1lIiwibm9kZU5hbWUiLCJpc1N0cmluZyIsIkJhc2VSZW5kZXJlciIsImVsZW1lbnQiLCJzdHJva2UiLCJjaXJjbGVDb25mIiwiaXNDaXJjbGUiLCJzZXRTdHJva2UiLCJ0aGlua25lc3MiLCJfcHJvdG9uVXBkYXRlSGFuZGxlciIsIm9uUHJvdG9uVXBkYXRlIiwiX3Byb3RvblVwZGF0ZUFmdGVySGFuZGxlciIsIm9uUHJvdG9uVXBkYXRlQWZ0ZXIiLCJfZW1pdHRlckFkZGVkSGFuZGxlciIsIm9uRW1pdHRlckFkZGVkIiwiX2VtaXR0ZXJSZW1vdmVkSGFuZGxlciIsIm9uRW1pdHRlclJlbW92ZWQiLCJfcGFydGljbGVDcmVhdGVkSGFuZGxlciIsIm9uUGFydGljbGVDcmVhdGVkIiwiX3BhcnRpY2xlVXBkYXRlSGFuZGxlciIsIm9uUGFydGljbGVVcGRhdGUiLCJfcGFydGljbGVEZWFkSGFuZGxlciIsIm9uUGFydGljbGVEZWFkIiwiQ2FudmFzUmVuZGVyZXIiLCJfQmFzZVJlbmRlcmVyIiwiYnVmZmVyQ2FjaGUiLCJhZGRJbWcyQm9keSIsIlR5cGVzIiwiZHJhd0NpcmNsZSIsImJ1ZmZlciIsImNyZWF0ZUJ1ZmZlciIsImJ1ZkNvbnRleHQiLCJnbG9iYWxBbHBoYSIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZpbGxTdHlsZSIsImZpbGxSZWN0Iiwic2F2ZSIsInRyYW5zbGF0ZSIsInJlc3RvcmUiLCJiZWdpblBhdGgiLCJhcmMiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsImNsb3NlUGF0aCIsImZpbGwiLCJzaXplIiwiRG9tUmVuZGVyZXIiLCJjcmVhdGVCb2R5IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsImJvZHlSZWFkeSIsImJhY2tncm91bmRDb2xvciIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZVNwcml0ZSIsImJvcmRlclJhZGl1cyIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJ1cmwiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJFYXNlbFJlbmRlcmVyIiwiYWRkQ2hpbGQiLCJzY2FsZVgiLCJzY2FsZVkiLCJncmFwaGljcyIsInJlZ1giLCJyZWdZIiwiY3JlYXRlanMiLCJHcmFwaGljcyIsImJlZ2luU3Ryb2tlIiwiYmVnaW5GaWxsIiwic2hhcGUiLCJTaGFwZSIsIlBpeGVsUmVuZGVyZXIiLCJyZWN0YW5nbGUiLCJpbWFnZURhdGEiLCJjcmVhdGVJbWFnZURhdGEiLCJwdXRJbWFnZURhdGEiLCJzZXRQaXhlbCIsIlBJWElDbGFzcyIsIlBpeGlSZW5kZXJlciIsInNldENvbG9yIiwiYmxlbmRNb2RlIiwic2V0UElYSSIsIlBJWEkiLCJTcHJpdGUiLCJjcmVhdGVGcm9tSW1hZ2UiLCJmcm9tIiwiZnJvbUltYWdlIiwidGludCIsImFuY2hvciIsImVuZEZpbGwiLCJNU3RhY2siLCJtYXRzIiwidG9wIiwiV2ViR0xSZW5kZXJlciIsImdsIiwiYW50aWFsaWFzIiwic3RlbmNpbCIsImRlcHRoIiwiaW5pdFZhciIsInNldE1heFJhZGl1cyIsImluaXRTaGFkZXJzIiwiaW5pdEJ1ZmZlcnMiLCJibGVuZEVxdWF0aW9uIiwiRlVOQ19BREQiLCJibGVuZEZ1bmMiLCJTUkNfQUxQSEEiLCJPTkVfTUlOVVNfU1JDX0FMUEhBIiwiZW5hYmxlIiwiQkxFTkQiLCJ1bWF0Iiwic21hdCIsIm1zdGFjayIsInZpZXdwb3J0IiwiY2lyY2xlQ2FudmFzVVJMIiwiZ2V0VmVydGV4U2hhZGVyIiwidnNTb3VyY2UiLCJnZXRGcmFnbWVudFNoYWRlciIsImZzU291cmNlIiwidGV4dHVyZWJ1ZmZlcnMiLCJBIiwiQiIsImdldFNoYWRlciIsImZzIiwic2hhZGVyIiwiY3JlYXRlU2hhZGVyIiwiRlJBR01FTlRfU0hBREVSIiwiVkVSVEVYX1NIQURFUiIsInNoYWRlclNvdXJjZSIsImNvbXBpbGVTaGFkZXIiLCJnZXRTaGFkZXJQYXJhbWV0ZXIiLCJDT01QSUxFX1NUQVRVUyIsImdldFNoYWRlckluZm9Mb2ciLCJmcmFnbWVudFNoYWRlciIsInZlcnRleFNoYWRlciIsInNwcm9ncmFtIiwiY3JlYXRlUHJvZ3JhbSIsImF0dGFjaFNoYWRlciIsImxpbmtQcm9ncmFtIiwiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsIkxJTktfU1RBVFVTIiwidXNlUHJvZ3JhbSIsInZwYSIsImdldEF0dHJpYkxvY2F0aW9uIiwidGNhIiwiZW5hYmxlVmVydGV4QXR0cmliQXJyYXkiLCJ0TWF0VW5pZm9ybSIsImdldFVuaWZvcm1Mb2NhdGlvbiIsInNhbXBsZXJVbmlmb3JtIiwidXNlVGV4IiwidW5pZm9ybTFpIiwidnMiLCJpZHgiLCJ1bml0SUJ1ZmZlciIsImJpbmRCdWZmZXIiLCJFTEVNRU5UX0FSUkFZX0JVRkZFUiIsImJ1ZmZlckRhdGEiLCJVaW50MTZBcnJheSIsIlNUQVRJQ19EUkFXIiwiaWRzIiwidW5pdEkzMyIsInN0cmlwQnVmZmVyIiwicmFpZHVzIiwiY2lyY2xlQ2FudmFzUmFkaXVzIiwidG9EYXRhVVJMIiwiZHJhd0ltZzJDYW52YXMiLCJfdyIsIl9oIiwiX3dpZHRoIiwiX2hlaWdodCIsIl9zY2FsZVgiLCJfc2NhbGVZIiwiY3JlYXRlVGV4dHVyZSIsInRleHR1cmUiLCJ2Y0J1ZmZlciIsInRjQnVmZmVyIiwiQVJSQVlfQlVGRkVSIiwiYmluZFRleHR1cmUiLCJURVhUVVJFXzJEIiwidGV4SW1hZ2UyRCIsIlJHQkEiLCJVTlNJR05FRF9CWVRFIiwidGV4UGFyYW1ldGVyaSIsIlRFWFRVUkVfTUFHX0ZJTFRFUiIsIkxJTkVBUiIsIlRFWFRVUkVfTUlOX0ZJTFRFUiIsIkxJTkVBUl9NSVBNQVBfTkVBUkVTVCIsImdlbmVyYXRlTWlwbWFwIiwidGV4dHVyZUxvYWRlZCIsInRleHR1cmVXaWR0aCIsInRleHR1cmVIZWlnaHQiLCJ0bWF0IiwiaW1hdCIsIm9sZFNjYWxlIiwidXBkYXRlTWF0cml4IiwidW5pZm9ybTNmIiwidW5pZm9ybU1hdHJpeDNmdiIsInZlcnRleEF0dHJpYlBvaW50ZXIiLCJGTE9BVCIsImRyYXdFbGVtZW50cyIsIlRSSUFOR0xFUyIsIlVOU0lHTkVEX1NIT1JUIiwibW92ZU9yaWdpbk1hdHJpeCIsInRyYW5zbGF0aW9uTWF0cml4IiwiYW5nZWwiLCJyb3RhdGlvbk1hdHJpeCIsInNjYWxlTWF0cml4IiwibWF0cml4IiwiQ3VzdG9tUmVuZGVyZXIiLCJMaW5lWm9uZSIsIngxIiwieTEiLCJ4MiIsInkyIiwiZGlyZWN0aW9uIiwibWlueCIsIm1pbiIsIm1pbnkiLCJtYXh4IiwibWF4eSIsInh4eXkiLCJnZXRMZW5ndGgiLCJDIiwiRCIsImdldERpc3RhbmNlIiwiZ2V0U3ltbWV0cmljIiwidGhhMiIsInRoYTEiLCJvbGR4Iiwib2xkeSIsInJhbmdlT3V0IiwiQ2lyY2xlWm9uZSIsInJhbmRvbVJhZGl1cyIsInNldENlbnRlciIsIlJlY3Rab25lIiwiSW1hZ2Vab25lIiwidmVjdG9ycyIsInNldFZlY3RvcnMiLCJqIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJnZXRCb3VuZCIsImdldENvbG9yIiwiZnVuYyIsImdldFN0eWxlIiwiZHJhd1pvbmUiLCJtb3ZlVG8iLCJsaW5lVG8iLCJkcmF3UmVjdCIsImRyYXdFbWl0dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrQkFBZTtFQUNiO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNB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 +//# sourceMappingURL=proton.web.js.map diff --git a/build/proton.web.js.map b/build/proton.web.js.map new file mode 100644 index 0000000..419ccd5 --- /dev/null +++ b/build/proton.web.js.map @@ -0,0 +1 @@ +{"version":3,"file":"proton.web.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/math/Span.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/emitter/BehaviourEmitter.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/render/PixiRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number | undefined} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n /**\n * Sets the frames per second (FPS) for the Proton system.\n * @param {number|string} fps - The desired FPS. Use \"auto\" for default behavior, or a number for a specific FPS.\n */\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n /**\n * Gets the current frames per second (FPS) setting.\n * @returns {number|string} The current FPS setting. Returns \"auto\" if set to default, or a number representing the specific FPS.\n */\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a span of values or an array.\n */\nexport default class Span {\n /**\n * @type {boolean}\n * @private\n */\n isArray;\n\n /**\n * @type {number|number[]}\n * @private\n */\n a;\n\n /**\n * @type {number}\n * @private\n */\n b;\n\n /**\n * @type {boolean}\n * @private\n */\n center;\n\n /**\n * Creates a new Span instance.\n * @param {number|number[]} a - The first value or an array of values.\n * @param {number} [b] - The second value (if a is not an array).\n * @param {boolean} [center=false] - Whether to use center-based calculation.\n */\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n /**\n * Gets a value from the span.\n * @param {boolean} [isInt=false] - Whether to return an integer value.\n * @returns {number} A random value from the span.\n */\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object.\n * @param {*|Span} a - The first value or a Span object.\n * @param {*} [b] - The second value.\n * @param {*} [c] - The third value.\n * @returns {Span} A new Span instance.\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter.\n * @param {*|Span} pan - The value or Span to get the value from.\n * @returns {*} The value of Span OR the parameter if it is not a Span.\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"../math/Span\";\n\nexport default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n /** @type {number} */\n x;\n\n /** @type {number} */\n y;\n\n /**\n * Creates a new Vector2D instance.\n * @param {number} [x=0] - The x coordinate.\n * @param {number} [y=0] - The y coordinate.\n */\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n /**\n * Sets the x and y components of this vector.\n * @param {number} x - The x coordinate.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets the x component of this vector.\n * @param {number} x - The x coordinate.\n * @returns {Vector2D} This vector.\n */\n setX(x) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets the y component of this vector.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n\n /**\n * Calculates the gradient (angle) of this vector.\n * @returns {number} The gradient in radians.\n */\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n /**\n * Copies the values of another vector to this one.\n * @param {Vector2D} v - The vector to copy from.\n * @returns {Vector2D} This vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n /**\n * Adds another vector to this one.\n * @param {Vector2D} v - The vector to add.\n * @param {Vector2D} [w] - An optional second vector to add.\n * @returns {Vector2D} This vector.\n */\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n /**\n * Adds scalar values to this vector's components.\n * @param {number} a - Value to add to x.\n * @param {number} b - Value to add to y.\n * @returns {Vector2D} This vector.\n */\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n /**\n * Adds two vectors and sets the result to this vector.\n * @param {Vector2D} a - The first vector to add.\n * @param {Vector2D} b - The second vector to add.\n * @returns {Vector2D} This vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n /**\n * Subtracts another vector from this one.\n * @param {Vector2D} v - The vector to subtract.\n * @param {Vector2D} [w] - An optional second vector to subtract.\n * @returns {Vector2D} This vector.\n */\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n /**\n * Subtracts one vector from another and sets the result to this vector.\n * @param {Vector2D} a - The vector to subtract from.\n * @param {Vector2D} b - The vector to subtract.\n * @returns {Vector2D} This vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n /**\n * Divides this vector by a scalar.\n * @param {number} s - The scalar to divide by.\n * @returns {Vector2D} This vector.\n */\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n /**\n * Multiplies this vector by a scalar.\n * @param {number} s - The scalar to multiply by.\n * @returns {Vector2D} This vector.\n */\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n /**\n * Negates this vector (inverts its direction).\n * @returns {Vector2D} This vector.\n */\n negate() {\n return this.multiplyScalar(-1);\n }\n\n /**\n * Calculates the dot product of this vector with another.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n /**\n * Calculates the squared length of this vector.\n * @returns {number} The squared length.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n /**\n * Calculates the length of this vector.\n * @returns {number} The length.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n /**\n * Normalizes this vector (makes it unit length).\n * @returns {Vector2D} This vector.\n */\n normalize() {\n return this.divideScalar(this.length());\n }\n\n /**\n * Calculates the distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n /**\n * Rotates this vector by an angle.\n * @param {number} tha - The angle to rotate by (in radians).\n * @returns {Vector2D} This vector.\n */\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n /**\n * Calculates the squared distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n /**\n * Linearly interpolates this vector toward another vector.\n * @param {Vector2D} v - The target vector.\n * @param {number} alpha - The interpolation factor (0-1).\n * @returns {Vector2D} This vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n /**\n * Checks if this vector is equal to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {boolean} True if the vectors are equal, false otherwise.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n /**\n * Sets this vector to zero.\n * @returns {Vector2D} This vector.\n */\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n /**\n * Creates a new vector with the same x and y values as this one.\n * @returns {Vector2D} A new Vector2D instance.\n */\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","import Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a particle in a particle system.\n * @class Particle\n */\nexport default class Particle {\n /** @type {string} The unique identifier of the particle */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */\n old = null;\n\n /** @type {object} Custom data associated with the particle */\n data = null;\n\n /** @type {Behaviour[]} Array of behaviours applied to the particle */\n behaviours = null;\n\n /** @type {Vector2D} Current position of the particle */\n p = null;\n\n /** @type {Vector2D} Current velocity of the particle */\n v = null;\n\n /** @type {Vector2D} Current acceleration of the particle */\n a = null;\n\n /** @type {Rgb} Color of the particle */\n rgb = null;\n\n /**\n * Creates a new Particle instance.\n * @param {Object} [conf] Configuration object for the particle\n */\n constructor(conf) {\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n /**\n * Gets the direction of the particle's movement in degrees.\n * @returns {number} The direction in degrees\n */\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n /**\n * Resets the particle to its initial state.\n * @returns {Particle} The particle instance\n */\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n /**\n * Updates the particle's state.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n /**\n * Applies all behaviours attached to the particle.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * Adds a behaviour to the particle.\n * @param {Behaviour} behaviour The behaviour to add\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * Adds multiple behaviours to the particle.\n * @param {Behaviour[]} behaviours An array of behaviours to add\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n /**\n * Removes a specific behaviour from the particle.\n * @param {Behaviour} behaviour The behaviour to remove\n */\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n /**\n * Removes all behaviours from the particle.\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destroys the particle, removing all behaviours and setting it as dead.\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\n/**\n * Represents an ArraySpan, a subclass of Span that works with arrays.\n * @extends Span\n */\nexport default class ArraySpan extends Span {\n /**\n * Creates an instance of ArraySpan.\n * @param {Array|*|any} arr - The array or value to be converted to an array.\n */\n constructor(arr) {\n super();\n this._arr = Util.toArray(arr);\n }\n\n /**\n * Gets a random value from the array.\n * If the value is \"random\" or \"Random\", it returns a random color.\n * @returns {*} A random value from the array or a random color.\n */\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Creates an ArraySpan instance from the given array.\n * If the input is already an ArraySpan instance, it returns the input.\n * @static\n * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance.\n * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy.\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\n/**\n * Rate class for controlling particle emission rate.\n */\nexport default class Rate {\n /**\n * @type {Span}\n * @private\n */\n numPan;\n\n /**\n * @type {Span}\n * @private\n */\n timePan;\n\n /**\n * @type {number}\n * @private\n */\n startTime;\n\n /**\n * @type {number}\n * @private\n */\n nextTime;\n\n /**\n * Creates a new Rate instance.\n * The number of particles per second emission (a [particle]/b [s]).\n * @param {Array|number|Span} [numpan=1] - The number of particles for each emission.\n * @param {Array|number|Span} [timepan=1] - The time interval between each emission.\n * @example\n * // Create a rate of 10-20 particles every 0.1-0.25 seconds\n * new Rate(new Span(10, 20), new Span(0.1, 0.25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n /**\n * Initializes the rate.\n * @private\n */\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n /**\n * Gets the number of particles to emit based on the elapsed time.\n * @param {number} time - The elapsed time since the last update.\n * @returns {number} The number of particles to emit.\n */\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Life class for initializing particle lifetime.\n * @extends Initialize\n */\nexport default class Life extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n lifePan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Life instance.\n * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range.\n * @param {number} [b] - The upper bound of the lifetime range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n /**\n * Initializes the lifetime of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a point zone in a 2D space.\n * @extends Zone\n */\nexport default class PointZone extends Zone {\n /**\n * Creates a new PointZone.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n */\n constructor(x, y) {\n super();\n\n /**\n * The x-coordinate of the point.\n * @type {number}\n */\n this.x = x;\n\n /**\n * The y-coordinate of the point.\n * @type {number}\n */\n this.y = y;\n }\n\n /**\n * Gets the position of the point.\n * @returns {Object} An object representing the position vector.\n */\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n /**\n * This method is not supported for PointZone.\n * @param {Object} particle - The particle object (unused).\n */\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Position class for initializing particle positions.\n * @extends Initialize\n */\nexport default class Position extends Initialize {\n /**\n * @type {PointZone|any}\n * @private\n */\n zone;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Position instance.\n * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n /**\n * Initializes the particle's position.\n * @param {object} target - The particle to initialize.\n * @param {object} target.p - The particle's position object.\n * @param {number} target.p.x - The particle's x coordinate.\n * @param {number} target.p.y - The particle's y coordinate.\n */\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Velocity class for initializing particle velocities.\n * @extends Initialize\n */\nexport default class Velocity extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n rPan;\n\n /**\n * @type {Span}\n * @private\n */\n thaPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Velocity instance.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n /**\n * Resets the velocity parameters.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n /**\n * Normalizes the velocity value.\n * @param {number} vr - The velocity value to normalize.\n * @returns {number} The normalized velocity value.\n * @private\n */\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n /**\n * Initializes the particle's velocity.\n * @param {object} target - The particle to initialize.\n */\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Mass class for initializing particle mass.\n * @extends Initialize\n */\nexport default class Mass extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n massPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Mass instance.\n * @param {number|Span} a - The mass value or the lower bound of the mass range.\n * @param {number} [b] - The upper bound of the mass range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n /**\n * Initializes the mass of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Radius class for initializing particle radius.\n * @extends Initialize\n */\nexport default class Radius extends Initialize {\n /**\n * @type {Span}\n */\n radius;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Radius instance.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n this.name = \"Radius\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n /**\n * Initializes the particle's radius.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Body class for initializing particle bodies.\n * @extends Initialize\n */\nexport default class Body extends Initialize {\n /**\n * @type {ArraySpan}\n * @private\n */\n image;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Body instance.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body.\n * @param {number} [w=20] - The width of the particle body.\n * @param {number} [h] - The height of the particle body. Defaults to the width if not provided.\n */\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n /**\n * Initializes the particle's body.\n * @param {object} particle - The particle to initialize.\n */\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n /**\n * Sets the span value for the image.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value.\n * @returns {ArraySpan} The ArraySpan instance.\n * @private\n */\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\n/**\n * The Behaviour class is the base for the other Behaviour\n * @class\n */\nexport default class Behaviour {\n static id = 0;\n\n /**\n * Create a new Behaviour instance\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's decaying trend, for example ease.easeOutQuart\n */\n constructor(life, easing) {\n /**\n * The behaviour's life\n * @type {number}\n */\n this.life = Util.initValue(life, Infinity);\n\n /**\n * The behaviour's easing function\n * @type {function}\n */\n this.easing = ease.getEasing(easing);\n\n /**\n * The behaviour's current age\n * @type {number}\n */\n this.age = 0;\n\n /**\n * The behaviour's current energy\n * @type {number}\n */\n this.energy = 1;\n\n /**\n * Whether the behaviour is dead\n * @type {boolean}\n */\n this.dead = false;\n\n /**\n * The behaviour's parent emitters\n * @type {Array}\n */\n this.parents = [];\n\n /**\n * The behaviour's unique id\n * @type {string}\n */\n this.id = `Behaviour_${Behaviour.id++}`;\n\n /**\n * The behaviour's name\n * @type {string}\n */\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n * @param {number} [life=Infinity] - This behaviour's new life\n * @param {string} [easing='easeLinear'] - This behaviour's new easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100\n * @param {Proton.Vector2D} force - The force to normalize\n * @returns {Proton.Vector2D} The normalized force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100\n * @param {number} value - The value to normalize\n * @returns {number} The normalized value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for a particle\n * @param {Proton.Particle} particle - The particle to initialize\n */\n initialize(particle) {}\n\n /**\n * Compute the behaviour's life cycle\n * @param {Proton.Particle} particle - The particle to calculate for\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour to a particle\n * @param {Proton.Particle} particle - The particle to apply the behaviour to\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destroy this behaviour\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Attraction behavior for particles.\n * This behaviour makes particles follow a specific target position.\n * @extends Behaviour\n */\nexport default class Attraction extends Behaviour {\n /**\n * Creates an instance of Attraction.\n * @param {Vector2D} targetPosition - The attraction point coordinates.\n * @param {number} [force=100] - The strength of the attraction force.\n * @param {number} [radius=1000] - The radius of influence for the attraction.\n * @param {number} [life=Infinity] - The life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The easing function for this behaviour.\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n /**\n * The target position for attraction.\n * @type {Vector2D}\n */\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n\n /**\n * The radius of influence for the attraction.\n * @type {number}\n */\n this.radius = Util.initValue(radius, 1000);\n\n /**\n * The strength of the attraction force.\n * @type {number}\n */\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n /**\n * The squared radius (for optimization).\n * @type {number}\n */\n this.radiusSq = this.radius * this.radius;\n\n /**\n * The attraction force vector.\n * @type {Vector2D}\n */\n this.attractionForce = new Vector2D();\n\n /**\n * The squared length of the attraction force.\n * @type {number}\n */\n this.lengthSq = 0;\n\n /**\n * The name of the behaviour.\n * @type {string}\n */\n this.name = \"Attraction\";\n }\n\n /**\n * Resets the behaviour's parameters.\n * @param {Vector2D} targetPosition - The new attraction point coordinates.\n * @param {number} [force=100] - The new strength of the attraction force.\n * @param {number} [radius=1000] - The new radius of influence for the attraction.\n * @param {number} [life=Infinity] - The new life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour.\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Alpha behaviour for controlling particle opacity over time.\n * @extends Behaviour\n */\nexport default class Alpha extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Alpha instance.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's alpha values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * Applies the alpha behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Scale behaviour for controlling particle size over time.\n * @extends Behaviour\n */\nexport default class Scale extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Scale instance.\n * @param {number|Span} [a=1] - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} a - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's scale values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Applies the scale behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Rotate behaviour for controlling particle rotation.\n * @extends Behaviour\n */\nexport default class Rotate extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n * @private\n */\n style;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Rotate instance.\n * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {string|number|Span} [a='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the behaviour's parameters for a particle.\n * @param {object} particle - The particle to initialize.\n * @param {number} particle.rotation - The particle's rotation.\n * @param {object} particle.data - The particle's data object.\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {object} particle - The particle to apply the behaviour to.\n * @param {number} time - The integrate time (1/ms).\n * @param {number} index - The particle index.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} [a] the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} [b] the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\n/**\n * The opposite of Attraction - turns the force\n *\n * @class\n * @extends Proton.Attraction\n * @memberof! Proton#\n * @alias Proton.Repulsion\n */\nexport default class Repulsion extends Attraction {\n /**\n * Creates a new Repulsion behaviour instance\n *\n * @constructor\n * @param {Proton.Vector2D} targetPosition - The repulsion point coordinates\n * @param {number} [force=100] - The strength of the repulsion force\n * @param {number} [radius=1000] - The radius of influence for the repulsion\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's easing function\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n /**\n * The strength of the repulsion force\n * @type {number}\n */\n this.force *= -1;\n\n /**\n * The name of the behaviour\n * @type {string}\n */\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @param {Proton.Vector2D} targetPosition - The new repulsion point coordinates\n * @param {number} [force=100] - The new strength of the repulsion force\n * @param {number} [radius=1000] - The new radius of influence for the repulsion\n * @param {number} [life=Infinity] - The new behaviour's life\n * @param {string} [easing='easeLinear'] - The new behaviour's easing function\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number | String} [totalTime] begin emit time;\n * @param {String | boolean} [life] the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n const particles = this.particles;\n const len = particles.length;\n \n // Just mark all as dead in a tight loop\n for (let i = 0; i < len; i++) {\n particles[i].dead = true;\n }\n \n // Don't actually remove from array here - that will happen in next integrate() call\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) {\n this.destroy();\n return;\n }\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n // Optimization for 500k particles: Use fast iteration with minimal GC impact\n const particles = this.particles;\n const length = particles.length;\n const parent = this.parent;\n const pool = parent.pool;\n const integrator = parent.integrator;\n const shouldDispatchUpdates = Boolean(this.parent || this.bindEvent);\n \n // Optimization: Use swap-and-pop method for removing dead particles\n // This is much faster than splice for large arrays\n let aliveCount = length;\n let i = 0;\n\n // Single-pass particle update with efficient removal\n while (i < aliveCount) {\n const particle = particles[i];\n \n // Fast update and check for dead particles\n particle.update(time, i);\n integrator.calculate(particle, time, damping);\n \n // Dispatch update events only if needed and not too many particles\n // Skip event dispatching for extremely large particle counts\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n }\n \n // Check if particle is dead\n if (particle.dead) {\n // Dispatch death events only when needed and not too many particles\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n }\n \n // Fast removal: swap with the last alive particle and decrement counter\n // This avoids expensive array splicing\n aliveCount--;\n if (i < aliveCount) {\n // Only swap if this isn't already the last particle\n particles[i] = particles[aliveCount];\n particles[aliveCount] = particle;\n \n // Return to pool\n pool.expire(particle);\n continue; // Don't increment i, process the swapped particle\n } else {\n // Last particle case\n pool.expire(particle);\n }\n }\n i++;\n }\n \n // If we have dead particles at the end, remove them all at once\n if (aliveCount < length) {\n particles.length = aliveCount; // Truncate the array (much faster than multiple splices)\n }\n }\n\n dispatch(event, target) {\n // Optimize by skipping work if no listeners\n if (!this.parent && !this.bindEvent) return;\n \n // For performance with many particles, only dispatch certain events\n if (this.particles && this.particles.length > 50000) {\n // With very large particle counts, only dispatch critical events\n if (event !== \"PARTICLE_CREATED\" && event !== \"PARTICLE_DEAD\") {\n return;\n }\n }\n \n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.stoped) return;\n\n // Maximum particles to emit in a single frame to prevent lag spikes\n const MAX_EMIT_PER_FRAME = 10000;\n\n // Direct property access for performance\n let emitTime = this.emitTime;\n const totalTime = this.totalTime;\n \n if (totalTime === \"none\") {\n this.emitTime = emitTime + time;\n return;\n } \n \n if (totalTime === \"once\") {\n // Fast path for \"once\" emission\n let numToEmit = this.rate.getValue(99999);\n \n // Cap emission count to prevent frame drops\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n // Log warning only in development if trying to emit too many at once\n if (process && process.env && process.env.NODE_ENV === 'development') {\n console.warn(`Attempting to emit ${numToEmit} particles at once, capped to ${MAX_EMIT_PER_FRAME}`);\n }\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n if (numToEmit <= 0) return;\n \n // Cache emission speed and emit particles\n this.emitSpeed = numToEmit;\n \n // Use the optimized method for bulk creation\n this._fastCreateParticles(numToEmit);\n \n // Mark as completed\n this.totalTime = \"none\";\n return;\n }\n \n // Regular emission logic - extreme optimization\n emitTime += time;\n this.emitTime = emitTime;\n \n if (emitTime < totalTime) {\n // Get particle count using rate\n let numToEmit = this.rate.getValue(time);\n \n if (numToEmit <= 0) return;\n \n // Cap emission to prevent lag spikes\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n this.emitSpeed = numToEmit;\n \n // Use fastest particle creation method\n this._fastCreateParticles(numToEmit);\n }\n }\n\n /**\n * Ultra-fast particle creation - no optional parameters, minimal overhead\n * @param {Number} count - Number of particles to create\n * @private\n */\n _fastCreateParticles(count) {\n // Early exit for zero count\n if (count <= 0 || !this.parent) return;\n \n // Direct property access - avoid repeated lookups\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n const initializes = this.initializes;\n const behaviours = this.behaviours;\n \n // Emergency circuit breaker - prevent memory issues when too many particles\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + count > MAX_SAFE_PARTICLES) {\n count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (count <= 0) return; // Already at max capacity\n }\n \n // Use faster bulk retrieval if available\n let particles;\n if (pool.getBulk) {\n // Get multiple particles at once from pool\n particles = pool.getBulk(Particle, count);\n \n // Fast-path batch initialization\n this._initializeParticlesBulk(particles, initializes, behaviours);\n } else {\n // Fast path direct initialization - optimized for huge particle counts\n this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours);\n }\n }\n \n /**\n * High-speed loop for creating many particles\n * @private\n */\n _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) {\n // Pre-calculate array growth to avoid resizing\n const newLength = particlesArr.length + count;\n \n // Handle array growth efficiently for large particle counts\n if (particlesArr.length === 0 && count > 10000) {\n try {\n // Try to preallocate the array with correct capacity\n particlesArr.length = count;\n particlesArr.length = 0; // Reset but keep capacity\n } catch (e) {\n // Ignore if this optimization isn't supported\n }\n }\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // Minimal particle creation loop - optimized for speed\n let i = 0;\n let particle;\n \n // Using while loop (faster than for loop in many JS engines)\n while (i < count) {\n // Get from pool\n particle = pool.get(Particle);\n \n // Fastest possible reset\n particle.reset();\n \n // Direct initialize call with cached values\n InitializeUtil.initialize(this, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = this;\n \n // Push to array\n particlesArr.push(particle);\n \n // Only dispatch if absolutely necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n \n /**\n * Bulk initialization for particles - more efficient for large batches\n * @private\n */\n _initializeParticlesBulk(particles, initializes, behaviours) {\n const count = particles.length;\n const particlesArr = this.particles;\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // One-time binding of this context for the loop\n const emitter = this;\n \n // Bulk initialize particles\n for (let i = 0; i < count; i++) {\n const particle = particles[i];\n \n // Initialize the particle directly\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Set properties\n particle.parent = emitter;\n \n // Add behaviors - use direct array if possible for better performance\n particle.addBehaviours(behaviours);\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Only dispatch if necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n }\n }\n\n /**\n * High-performance batch particle creation for large quantities\n * @param {Number} length - Number of particles to create\n * @param {Object|Array} [initialize] - Initialization parameters\n * @param {Object|Array} [behaviour] - Behavior parameters\n */\n createParticlesBatch(length, initialize, behaviour) {\n // Immediate redirect to fast creation when no custom initializers/behaviors\n if (!initialize && !behaviour) {\n this._fastCreateParticles(length);\n return;\n }\n \n // For huge batches, split into smaller chunks\n const BATCH_SIZE = 5000;\n \n if (length > BATCH_SIZE && length > 10000) {\n // Process in chunks for very large particle counts\n for (let i = 0; i < length; i += BATCH_SIZE) {\n const chunkSize = Math.min(BATCH_SIZE, length - i);\n this._createParticleChunk(chunkSize, initialize, behaviour);\n }\n } else {\n // Process all at once for smaller batches\n this._createParticleChunk(length, initialize, behaviour);\n }\n }\n \n /**\n * Internal method to create a chunk of particles\n * @private\n */\n _createParticleChunk(length, initialize, behaviour) {\n // Early exit for zero particles\n if (length <= 0) return;\n \n // Cache values for reuse\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n \n // Check if we'd exceed max safe count\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + length > MAX_SAFE_PARTICLES) {\n length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (length <= 0) return;\n }\n \n // Only calculate this once outside the loop\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Pre-bind functions and cache properties for the loop\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n const emitter = this;\n \n // Pre-allocate capacity if possible\n if (Array.prototype.reserve) {\n const newCapacity = particlesArr.length + length;\n if (particlesArr.capacity < newCapacity) {\n particlesArr.reserve(newCapacity);\n }\n }\n \n // Creation loop - unrolled for performance\n let i = 0;\n let particle;\n \n // Fast loop with minimal overhead\n while (i < length) {\n particle = pool.get(Particle);\n \n // Fastest reset possible\n particle.reset();\n \n // Initialize using cached values\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = emitter;\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Dispatch only if needed\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n\n /**\n * Creates a single particle - now optimized for performance\n * but batch methods should be preferred for multiple particles\n */\n createParticle(initialize, behaviour) {\n // Fast path when we have a parent\n if (!this.parent) return null;\n \n const particle = this.parent.pool.get(Particle);\n \n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize and add behaviors\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array - directly push to avoid function call\n this.particles.push(particle);\n \n // Only dispatch if needed and not too many particles\n if ((this.parent || this.bindEvent) && this.particles.length < 10000) {\n this.dispatch(\"PARTICLE_CREATED\", particle);\n }\n\n return particle;\n }\n\n /**\n * Sets up a particle with initialization and behavior.\n * @deprecated Use direct methods instead for better performance\n */\n setupParticle(particle, initialize, behaviour) {\n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array\n this.particles.push(particle);\n }\n\n /**\n * Removes all particles and stops the emitter.\n */\n remove() {\n this.stop();\n \n // More efficient particle cleanup\n const particles = this.particles;\n const len = particles.length;\n \n // Return all particles to pool\n if (this.parent && this.parent.pool) {\n const pool = this.parent.pool;\n for (let i = 0; i < len; i++) {\n pool.expire(particles[i]);\n }\n }\n \n // Clear array in one operation\n particles.length = 0;\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * CanvasRenderer class for rendering particles on a canvas element.\n * @extends BaseRenderer\n */\nexport default class CanvasRenderer extends BaseRenderer {\n /**\n * @type {object|null}\n * @private\n */\n stroke;\n\n /**\n * @type {CanvasRenderingContext2D}\n * @private\n */\n context;\n\n /**\n * @type {object}\n * @private\n */\n bufferCache;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new CanvasRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render on.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n /**\n * Resizes the canvas element.\n * @param {number} width - The new width of the canvas.\n * @param {number} height - The new height of the canvas.\n */\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n /**\n * Clears the canvas on Proton update.\n */\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n /**\n * Handles particle creation.\n * @param {object} particle - The created particle.\n */\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n /**\n * Handles particle updates.\n * @param {object} particle - The updated particle.\n */\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n /**\n * Handles particle destruction.\n * @param {object} particle - The destroyed particle.\n */\n onParticleDead(particle) {\n particle.body = null;\n }\n\n /**\n * Adds an image to the particle body.\n * @param {HTMLImageElement} img - The image to add.\n * @param {object} particle - The particle to add the image to.\n * @private\n */\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n /**\n * Draws an image particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n /**\n * Draws a circular particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n /**\n * Creates a buffer for image particles.\n * @param {HTMLImageElement} image - The image to create a buffer for.\n * @returns {HTMLCanvasElement|undefined} The created buffer canvas.\n * @private\n */\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a DOM-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class DomRenderer extends BaseRenderer {\n /**\n * Creates a new DomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(window.createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(window.createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a pixel-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixelRenderer extends BaseRenderer {\n /**\n * Creates a new PixelRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n * @param {Rectangle} [rectangle] - The rectangle defining the rendering area.\n */\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.element.height) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\nimport Pool from \"../core/Pool\";\n\nlet PIXIClass;\n\n// Counter to generate unique IDs for each renderer instance\nlet rendererIdCounter = 0;\n\n/**\n * A specialized pool that ensures particles are never shared between different emitters\n */\nclass EmitterAwarePool extends Pool {\n constructor() {\n super();\n // Store pools by emitter ID to ensure separation\n this.emitterPools = new Map();\n }\n\n /**\n * Get an item from the pool, ensuring it's specific to the emitter\n */\n get(target, params, emitterId) {\n // Ensure we have a valid emitter ID\n emitterId = emitterId || (params && params.parent && params.parent.id) || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n const emitterPool = this.emitterPools.get(emitterId);\n \n // Get from the emitter-specific pool or create new\n let p;\n if (emitterPool.length > 0) {\n p = emitterPool.pop();\n } else {\n p = this.createOrClone(target, params);\n // Tag with emitter ID for tracking\n p.__emitterId = emitterId;\n }\n \n return p;\n }\n\n /**\n * Return an item to its emitter-specific pool\n */\n expire(target, emitterId) {\n if (!emitterId && target.__emitterId) {\n emitterId = target.__emitterId;\n }\n \n // Default to the general pool if no emitter ID is found\n emitterId = emitterId || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n // Return to the emitter-specific pool\n return this.emitterPools.get(emitterId).push(target);\n }\n\n /**\n * Clean up all pools\n */\n destroy() {\n super.destroy();\n \n // Clear all emitter-specific pools\n this.emitterPools.forEach(pool => {\n pool.length = 0;\n });\n \n this.emitterPools.clear();\n this.emitterPools = null;\n }\n}\n\n/**\n * Represents a PIXI-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixiRenderer extends BaseRenderer {\n /**\n * Creates a new PixiRenderer instance.\n * @param {PIXI.Container} element - The PIXI container to render to.\n * @param {string|number} [stroke] - The stroke color for particles.\n */\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n \n // Assign a unique ID to this renderer instance\n this.rendererId = ++rendererIdCounter;\n \n // Create a new emitter-aware pool for this renderer\n this.pixiPool = new EmitterAwarePool();\n this.pixiPool.create = (body, particle) => this.createBody(body, particle);\n \n // Track emitters and their particles\n this.emitterMap = new Map();\n \n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n onEmitterAdded(emitter) {\n // Add emitter to tracking map\n if (!this.emitterMap.has(emitter.id)) {\n this.emitterMap.set(emitter.id, new Set());\n }\n }\n\n onEmitterRemoved(emitter) {\n // Clean up emitter's tracked particles\n if (this.emitterMap.has(emitter.id)) {\n this.emitterMap.delete(emitter.id);\n }\n }\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n // Get the emitter ID for this particle and store it directly on the particle\n const emitterId = particle.parent ? particle.parent.id : 'orphaned';\n \n // Store emitter ID directly on the particle for when parent reference is lost\n particle.__emitterId = emitterId;\n \n if (particle.body) {\n particle.body = this.pixiPool.get(particle.body, particle, emitterId);\n } else {\n particle.body = this.pixiPool.get(this.circleConf, particle, emitterId);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n // Track this particle with its emitter\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).add(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n if (!particle.body) return;\n \n this.element.removeChild(particle.body);\n \n // Use the cached emitter ID instead of accessing parent which might be null\n const emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned');\n \n // Return to the emitter-specific pool\n this.pixiPool.expire(particle.body, emitterId);\n \n // Remove from tracked particles\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).delete(particle);\n }\n \n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n target.rotation = particle.rotation * MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.set(0.5, 0.5);\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n \n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.lineStyle(1, stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n * @param {Array} particles - The particles to clean up.\n */\n destroy(particles) {\n super.destroy();\n\n // Clean up tracking maps\n this.emitterMap.clear();\n this.emitterMap = null;\n\n // Clean up the instance-specific particle pool\n this.pixiPool.destroy();\n this.pixiPool = null;\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n particle.body.destroy({ children: true });\n }\n }\n }\n}","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a WebGL-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class WebGLRenderer extends BaseRenderer {\n /**\n * Creates a new WebGLRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n */\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a custom renderer that extends the BaseRenderer.\n * @extends BaseRenderer\n */\nexport default class CustomRenderer extends BaseRenderer {\n /**\n * Creates a new CustomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n /**\n * The name of the renderer.\n * @type {string}\n */\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\n\n/**\n * Represents a line zone for particle systems.\n * @extends Zone\n */\nexport default class LineZone extends Zone {\n /**\n * Creates a new LineZone.\n * @param {number} x1 - The x-coordinate of the first point.\n * @param {number} y1 - The y-coordinate of the first point.\n * @param {number} [x2] - The x-coordinate of the second point.\n * @param {number} [y2] - The y-coordinate of the second point.\n * @param {string} [direction=\">\"] - The direction of the line.\n */\n constructor(x1, y1, x2, y2, direction = \">\") {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n /**\n * Gets a random position on the line.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n /**\n * Determines which side of the line a point is on.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} True if the point is on the positive side of the line, false otherwise.\n */\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n /**\n * Calculates the distance of a point from the line.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {number} The distance from the point to the line.\n */\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n /**\n * Calculates the symmetric vector of a given vector with respect to the line.\n * @param {Vector2D} v - The vector to reflect.\n * @returns {Vector2D} The reflected vector.\n */\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n /**\n * Gets the gradient (angle) of the line.\n * @returns {number} The gradient of the line in radians.\n */\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n /**\n * Checks if a particle is outside the range of the line.\n * @param {Particle} particle - The particle to check.\n * @returns {boolean} True if the particle is within range, false otherwise.\n */\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n /**\n * Gets the length of the line.\n * @returns {number} The length of the line.\n */\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a circular zone in a 2D space.\n * @extends Zone\n */\nexport default class CircleZone extends Zone {\n /**\n * Creates a new CircleZone.\n * @param {number} x - The x-coordinate of the circle's center.\n * @param {number} y - The y-coordinate of the circle's center.\n * @param {number} [radius] - The radius of the circle.\n */\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n /**\n * Gets a random position within the circle.\n * @returns {Object} An object with x and y coordinates.\n */\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n /**\n * Sets the center of the circle.\n * @param {number} x - The new x-coordinate of the center.\n * @param {number} y - The new y-coordinate of the center.\n */\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n /**\n * Calculates the symmetric position of a particle.\n * @param {Object} particle - The particle to calculate symmetry for.\n */\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n /**\n * Calculates the gradient for a particle.\n * @param {Object} particle - The particle to calculate the gradient for.\n * @returns {number} The calculated gradient.\n */\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a rectangular zone for particle systems.\n * @extends Zone\n */\nexport default class RectZone extends Zone {\n /**\n * Creates a new RectZone.\n * @param {number} x - The x-coordinate of the top-left corner of the rectangle.\n * @param {number} y - The y-coordinate of the top-left corner of the rectangle.\n * @param {number} [width] - The width of the rectangle.\n * @param {number} [height] - The height of the rectangle.\n */\n constructor(x, y, width = 200, height = 200) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Gets a random position within the rectangular zone.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n return this.vector;\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\n/**\n * Represents a zone based on image data.\n * @extends Zone\n */\nexport default class ImageZone extends Zone {\n /**\n * Creates an ImageZone.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n /**\n * Resets the ImageZone with new parameters.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n /**\n * Sets up vectors based on the image data.\n * @returns {Object} The vector object.\n */\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n /**\n * Checks if a point is within the bounds of the image.\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @returns {boolean} True if the point is within bounds, false otherwise.\n */\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n return this.imageData.data[index + 3] > 0;\n }\n\n /**\n * Gets a random position within the image zone.\n * @returns {Object} A vector representing the position.\n */\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n /**\n * Gets the color at a specific point in the image.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} An object containing r, g, b, and a values.\n */\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n particle.dead = this.getBound(particle.p.x - this.x, particle.p.y - this.y);\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n /**\n * Destroys the ImageZone and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n"],"names":["ipot","length","nhpot","i","makeTranslation","tx","ty","makeRotation","angleInRadians","c","Math","cos","s","sin","makeScale","sx","sy","matrixMultiply","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","getImageData","context","image","rect","drawImage","imagedata","clearRect","getImgFromCache","img","callback","param","src","Image","onload","e","target","getCanvasFromCache","WebGLUtil","canvas","DomUtil","getContext","initValue","value","defaults","undefined","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","FactoryFunc","bind","apply","concat","ImgUtil","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","_proto","get","params","p","__puid","pop","createOrClone","expire","getCache","create","Util","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","cssText","join","addEventListener","bg","color","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","INFINITY","Infinity","MathUtil","PIx2","PI_2","PI_180","N180_PI","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","_createClass","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","Span","getValue","setSpanValue","getSpanValue","pan","hasProp","setProp","props","prop","setVectorVal","conf","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","ease","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","PropUtil","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","d","multiplyVec2","m","vec","ArraySpan","_Span","_arr","_inheritsLoose","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","_Behaviour","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","ColorUtil","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","_Attraction","GravityWell","centerPoint","distanceVec","distanceSq","factor","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","len","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","shouldDispatchUpdates","Boolean","bindEvent","aliveCount","dispatch","event","MAX_EMIT_PER_FRAME","numToEmit","process","env","NODE_ENV","warn","_fastCreateParticles","particlesArr","MAX_SAFE_PARTICLES","getBulk","_initializeParticlesBulk","_createParticlesLoop","shouldDispatch","dispatchFn","InitializeUtil","createParticlesBatch","BATCH_SIZE","chunkSize","min","_createParticleChunk","reserve","newCapacity","capacity","createParticle","setupParticle","BehaviourEmitter","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","isImage","__isImage","tagName","nodeName","isString","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","Types","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","PIXIClass","rendererIdCounter","EmitterAwarePool","_Pool","emitterPools","Map","emitterId","has","emitterPool","__emitterId","forEach","PixiRenderer","setColor","blendMode","rendererId","pixiPool","emitterMap","setPIXI","PIXI","_proto2","Sprite","createFromImage","from","Set","delete","tint","anchor","lineStyle","endFill","children","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","vsSource","getFragmentShader","fsSource","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","vs","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","miny","maxx","maxy","xxyy","getLength","C","D","getDistance","getSymmetric","tha2","tha1","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter"],"mappings":"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"} \ No newline at end of file diff --git a/build/proton.web.min.js b/build/proton.web.min.js index 8e7bd96..c5adb88 100644 --- a/build/proton.web.min.js +++ b/build/proton.web.min.js @@ -1,5 +1,5 @@ /*! -* Proton v7.1.3 +* Proton v7.2.0 * https://github.com/drawcall/Proton * * Copyright 2013-2025, drawcall @@ -7,5 +7,5 @@ * http://www.opensource.org/licenses/mit-license * */ -this.Proton=function(){"use strict";function t(t,e){for(var i=0;i>e;return t+1},a=function(t,e){return[1,0,0,0,1,0,t,e,1]},s=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},o=function(t,e){return[t,0,0,0,e,0,0,0,1]},h=function(t,e){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+n*f+r*m,i*d+n*g+r*v,i*p+n*y+r*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},l={createCanvas:function(t,e,i,n){void 0===n&&(n="absolute");var r=document.createElement("canvas");return r.id=t,r.width=e,r.height=i,r.style.opacity=0,r.style.position=n,this.transform(r,-500,-500,0,0),r},createDiv:function(t,e,i){var n=document.createElement("div");return n.id=t,n.style.position="absolute",this.resize(n,e,i),n},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,n,r){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+n+") rotate("+r+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,n,r){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+n+") rotate("+r+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var n=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+n]=i,t.style["Moz"+n]=i,t.style["O"+n]=i,t.style["ms"+n]=i,t.style[""+e]=i}},c={},u={},d=0,p=function(t,e,i){t.drawImage(e,i.x,i.y);var n=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),n},f=function(t,e,i){var n="string"==typeof t?t:t.src;if(c[n])e(c[n],i);else{var r=new Image;r.onload=function(t){c[n]=t.target,e(c[n],i)},r.src=n}},g=function(t,e,i){var n=t.src;if(!u[n]){var a=r(t.width),s=r(t.height),o=l.createCanvas("proton_canvas_cache_"+ ++d,a,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),u[n]=o}return e&&e(u[n],i),u[n]},y={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},sliceArray:function(t,e,i){this.emptyArray(i);for(var n=e;n-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return p(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},m={},v={_index:0,_cache:{},id:function(t){return void 0!==m[t]&&null!==m[t]||(m[t]=0),t+"_"+m[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},b=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var n;return i=i||t.__puid||v.getId(t),(n=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,n},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?y.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),x=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),n=this.getRenderer(),r="";switch(this.type){case 2:r+="emitter:"+this.proton.emitters.length+"
",i&&(r+="em speed:"+i.emitSpeed+"
"),i&&(r+="pos:"+this.getEmitterPos(i));break;case 3:i&&(r+="initializes:"+i.initializes.length+"
"),i&&(r+=''+this.concatArr(i.initializes)+"
"),i&&(r+="behaviours:"+i.behaviours.length+"
"),i&&(r+=''+this.concatArr(i.behaviours)+"
");break;case 4:n&&(r+=n.name+"
"),n&&(r+="body:"+this.getCreatedNumber(n)+"
");break;default:r+="particles:"+this.proton.getCount()+"
",r+="pool:"+this.proton.pool.getCount()+"
",r+="total:"+this.proton.pool.total}this.container.innerHTML=r},e.add=function(t,e){var i=this;if(!this.container){var n,r;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:n="#201",r="#f08";break;case 3:n="#020",r="#0f0";break;default:n="#002",r="#0ff"}this.container.style["background-color"]=n,this.container.style.color=r}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(e.DEFAULT_INTERVAL),this.dispatchEvent(e.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(e.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(e.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){e.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){y.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),y.destroyAll(e.emitters),y.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=e,(n=[{key:"fps",get:function(){return this._fps},set:function(t){this._fps=t,this._interval="auto"===t?e.DEFAULT_INTERVAL:T.floor(1/t,7)}}])&&t(i.prototype,n),r&&t(i,r),e}();_.USE_CLOCK=!1,_.MEASURE=100,_.EULER="euler",_.RK2="runge-kutta2",_.PARTICLE_CREATED="PARTICLE_CREATED",_.PARTICLE_UPDATE="PARTICLE_UPDATE",_.PARTICLE_SLEEP="PARTICLE_SLEEP",_.PARTICLE_DEAD="PARTICLE_DEAD",_.EMITTER_ADDED="EMITTER_ADDED",_.EMITTER_REMOVED="EMITTER_REMOVED",_.PROTON_UPDATE="PROTON_UPDATE",_.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",_.DEFAULT_INTERVAL=.0167,_.amendChangeTabsBug=!0,E.bind(_);var w=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),C=function(){function t(t,e,i){this.isArray=void 0,this.a=void 0,this.b=void 0,this.center=void 0,y.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=y.initValue(t,1),this.b=y.initValue(e,this.a),this.center=y.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?y.getRandFromArray(this.a):this.center?T.randomFloating(this.a,this.b,t):T.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,n){return e instanceof t?e:void 0===i?new t(e):void 0===n?new t(e,i):new t(e,i,n)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),I={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=C.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},S={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*T.PI_2)},easeOutSine:function(t){return Math.sin(t*T.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},D=function(){function t(t,e){this.x=void 0,this.y=void 0,this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?T.PI_2:this.y<0?-T.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),V=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=v.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new D,this.v=new D,this.a=new D,this.old.p=new D,this.old.v=new D,this.old.a=new D,this.rgb=new w,this.reset(),t&&I.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*T.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=S.easeLinear,this.rgb.reset(),y.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){y.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),M={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},B=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new D(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),L={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*n+u*s,i[1]=c*r+u*o,i[2]=a*d,i[3]=p*n+f*s,i[4]=p*r+f*o,i[6]=g*n+y*s+h,i[7]=g*r+y*o+l,i},inverse:function(t,e){var i,n=t[0],r=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(n*l+r*c),e[0]=l*i,e[1]=-r*i,e[3]=c*i,e[4]=n*i,e[6]=u*i,e[7]=(-h*n+r*o)*i,e},multiplyVec2:function(t,e,i){var n=e[0],r=e[1];return i[0]=n*t[0]+r*t[3]+t[6],i[1]=n*t[1]+r*t[4]+t[7],i}},U=function(t){function i(e){var i;return(i=t.call(this)||this)._arr=y.toArray(e),i}return e(i,t),i.prototype.getValue=function(){var t=y.getRandFromArray(this._arr);return"random"===t||"Random"===t?T.randomColor():t},i.createArraySpan=function(t){return t?t instanceof i?t:new i(t):null},i}(C),F=function(){function t(t,e,i,n){this.x=t,this.y=e,this.width=i,this.height=n,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),z=function(){function t(t,e){this.numPan=void 0,this.timePan=void 0,this.startTime=void 0,this.nextTime=void 0,this.numPan=C.setSpanValue(y.initValue(t,1)),this.timePan=C.setSpanValue(y.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),O=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),k=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).lifePan=void 0,r.name=void 0,r.lifePan=C.setSpanValue(e,i,n),r.name="Life",r}return e(i,t),i.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},i}(O),N=function(){function t(){this.vector=new D(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),H=function(t){function i(e,i){var n;return(n=t.call(this)||this).x=e,n.y=i,n}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},n.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},i}(N),q=function(t){function i(e){var i;return(i=t.call(this)||this).zone=void 0,i.name=void 0,i.zone=y.initValue(e,new H),i.name="Position",i}e(i,t);var n=i.prototype;return n.reset=function(t){this.zone=y.initValue(t,new H)},n.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},i}(O),G=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).rPan=void 0,r.thaPan=void 0,r.name=void 0,r.rPan=C.setSpanValue(e),r.thaPan=C.setSpanValue(i),r.type=y.initValue(n,"vector"),r.name="Velocity",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.rPan=C.setSpanValue(t),this.thaPan=C.setSpanValue(e),this.type=y.initValue(i,"vector")},n.normalizeVelocity=function(t){return t*_.MEASURE},n.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new B(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*T.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},i}(O),X=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).massPan=void 0,r.name=void 0,r.massPan=C.setSpanValue(e,i,n),r.name="Mass",r}return e(i,t),i.prototype.initialize=function(t){t.mass=this.massPan.getValue()},i}(O),Y=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).radius=void 0,r.name=void 0,r.radius=C.setSpanValue(e,i,n),r.name="Radius",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.radius=C.setSpanValue(t,e,i)},n.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},i}(O),j=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).image=void 0,r.name=void 0,r.image=r.setSpanValue(e),r.w=y.initValue(i,20),r.h=y.initValue(n,r.w),r.name="Body",r}e(i,t);var n=i.prototype;return n.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},n.setSpanValue=function(t){return t instanceof U?t:new U(t)},i}(O),W=function(){function t(e,i){this.life=y.initValue(e,1/0),this.easing=S.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=y.initValue(t,1/0),this.easing=S.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(_.MEASURE)},e.normalizeValue=function(t){return t*_.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var n=this.easing(t.age/t.life);this.energy=Math.max(1-n,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();W.id=0;var Z=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).force=a.normalizeForce(new D(e,i)),a.name="Force",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.force=this.normalizeForce(new D(e,i)),n&&t.prototype.reset.call(this,n,r)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},i}(W),Q=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).targetPosition=y.initValue(e,new D),s.radius=y.initValue(n,1e3),s.force=y.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new D,s.lengthSq=0,s.name="Attraction",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.targetPosition=y.initValue(e,new D),this.radius=y.initValue(n,1e3),this.force=y.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new D,this.lengthSq=0,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq=this.delay&&(t.a.addXY(T.randomAToB(-this.panFoce.x,this.panFoce.x),T.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},i}(W),J=function(t){function i(e,i,n){var r;return(r=t.call(this,0,e,i,n)||this).name="Gravity",r}return e(i,t),i.prototype.reset=function(e,i,n){t.prototype.reset.call(this,0,e,i,n)},i}(Z),$=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).reset(e,i,n),s.newPool=[],s.pool=[],s.name="Collision",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.emitter=y.initValue(e,null),this.mass=y.initValue(i,!0),this.callback=y.initValue(n,null),this.collisionPool=[],this.delta=new D,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.emitter?y.sliceArray(this.emitter.particles,i,this.newPool):y.sliceArray(this.pool,i,this.newPool);var n,r,a,s,o,h,l,c=this.newPool.length;for(l=0;lr;)t-=r,this.update(r);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=n},n.removeAllParticles=function(){for(var t=this.particles.length;t--;)this.particles[t].dead=!0},n.addSelfInitialize=function(t){t.init&&t.init(this)},n.addInitialize=function(){for(var t=arguments.length,e=new Array(t),i=0;i-1&&this.initializes.splice(e,1)},n.removeAllInitializers=function(){y.emptyArray(this.initializes)},n.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i=this.life||this.dead)&&this.destroy(),this.emitting(t),this.integrate(t)},n.integrate=function(t){if(this.parent){var e,i,n=1-this.damping;for(this.parent.integrator.calculate(this,t,n),e=this.particles.length-1;e>=0;e--)(i=this.particles[e]).update(t,e),this.parent.integrator.calculate(i,t,n),this.dispatch("PARTICLE_UPDATE",i),i.dead&&(this.dispatch("PARTICLE_DEAD",i),this.parent.pool.expire(i),this.particles.splice(e,1))}},n.dispatch=function(t,e){this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)},n.emitting=function(t){if(!this.stoped)if("none"===this.totalTime)this.emitTime+=t;else if("once"===this.totalTime){var e,i=this.rate.getValue(99999);for(i>0&&(this.emitSpeed=i),e=0;e0&&(this.emitSpeed=r),n=0;n-1&&this.selfBehaviours.splice(e,1)},n.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,n=this.selfBehaviours.length;for(i=0;ithis.element.width||i<0||i>this.element.height)){var a=4*((i|0)*t.width+(e|0));t.data[a]=r.r,t.data[a+1]=r.g,t.data[a+2]=r.b,t.data[a+3]=255*n.alpha}},n.onParticleDead=function(t){},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},i}(yt),Et=function(t){function i(e,i){var n;return(n=t.call(this,e)||this).stroke=i,n.color=!1,n.setColor=!1,n.blendMode=null,n.pool.create=function(t,e){return n.createBody(t,e)},n.setPIXI(window.PIXI),n.name="PixiRenderer",n}e(i,t);var n=i.prototype;return n.setPIXI=function(t){try{ut=t||{Sprite:{}},this.createFromImage=ut.Sprite.from||ut.Sprite.fromImage}catch(t){}},n.onProtonUpdate=function(){},n.onParticleCreated=function(t){t.body?t.body=this.pool.get(t.body,t):t.body=this.pool.get(this.circleConf,t),this.blendMode&&(t.body.blendMode=this.blendMode),this.element.addChild(t.body)},n.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=M.getHex16FromParticle(t))},n.onParticleDead=function(t){this.element.removeChild(t.body),this.pool.expire(t.body),t.body=null},n.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*T.PI_180},n.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},n.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new ut.Sprite(t);return e.anchor.x=.5,e.anchor.y=.5,e},n.createCircle=function(t){var e=new ut.Graphics;if(this.stroke){var i=gt(this.stroke)?this.stroke:0;e.beginStroke(i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},n.destroy=function(e){t.prototype.destroy.call(this);for(var i=e.length;i--;){var n=e[i];n.body&&this.element.removeChild(n.body)}},i}(yt),At=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(L.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?L.set(t,this.mats[0]):L.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?L.set(t,this.mats[0]):L.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),Pt=function(t){function i(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(n(i)),i.name="WebGLRenderer",i}e(i,t);var c=i.prototype;return c.init=function(e){t.prototype.init.call(this,e),this.resize(this.element.width,this.element.height)},c.resize=function(t,e){this.umat[4]=-2,this.umat[7]=1,this.smat[0]=1/t,this.smat[4]=1/e,this.mstack.set(this.umat,0),this.mstack.set(this.smat,1),this.gl.viewport(0,0,t,e),this.element.width=t,this.element.height=e},c.setMaxRadius=function(t){this.circleCanvasURL=this.createCircle(t)},c.getVertexShader=function(){return["uniform vec2 viewport;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 tMat;","varying vec2 vTextureCoord;","varying float alpha;","void main() {","vec3 v = tMat * vec3(aVertexPosition, 1.0);","gl_Position = vec4(v.x, v.y, 0, 1);","vTextureCoord = aTextureCoord;","alpha = tMat[0][2];","}"].join("\n")},c.getFragmentShader=function(){return["precision mediump float;","varying vec2 vTextureCoord;","varying float alpha;","uniform sampler2D uSampler;","uniform vec4 color;","uniform bool useTexture;","uniform vec3 uColor;","void main() {","vec4 textureColor = texture2D(uSampler, vTextureCoord);","gl_FragColor = textureColor * vec4(uColor, 1.0);","gl_FragColor.w *= alpha;","}"].join("\n")},c.initVar=function(){this.mstack=new At,this.umat=L.create([2,0,1,0,-2,0,-1,1,1]),this.smat=L.create([.01,0,1,0,.01,0,0,0,1]),this.texturebuffers={}},c.blendEquation=function(t){this.gl.blendEquation(this.gl[t])},c.blendFunc=function(t,e){this.gl.blendFunc(this.gl[t],this.gl[e])},c.getShader=function(t,e,i){var n=i?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);return t.shaderSource(n,e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)},c.initShaders=function(){var t=this.getShader(this.gl,this.getFragmentShader(),!0),e=this.getShader(this.gl,this.getVertexShader(),!1);this.sprogram=this.gl.createProgram(),this.gl.attachShader(this.sprogram,e),this.gl.attachShader(this.sprogram,t),this.gl.linkProgram(this.sprogram),this.gl.getProgramParameter(this.sprogram,this.gl.LINK_STATUS)||alert("Could not initialise shaders"),this.gl.useProgram(this.sprogram),this.sprogram.vpa=this.gl.getAttribLocation(this.sprogram,"aVertexPosition"),this.sprogram.tca=this.gl.getAttribLocation(this.sprogram,"aTextureCoord"),this.gl.enableVertexAttribArray(this.sprogram.tca),this.gl.enableVertexAttribArray(this.sprogram.vpa),this.sprogram.tMatUniform=this.gl.getUniformLocation(this.sprogram,"tMat"),this.sprogram.samplerUniform=this.gl.getUniformLocation(this.sprogram,"uSampler"),this.sprogram.useTex=this.gl.getUniformLocation(this.sprogram,"useTexture"),this.sprogram.color=this.gl.getUniformLocation(this.sprogram,"uColor"),this.gl.uniform1i(this.sprogram.useTex,1)},c.initBuffers=function(){var t,e;this.unitIBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,3,1,0,2,3]),this.gl.STATIC_DRAW);var i=[];for(e=0;e<100;e++)i.push(e);for(t=new Uint16Array(i),this.unitI33=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitI33),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW),i=[],e=0;e<100;e++)i.push(e,e+1,e+2);t=new Uint16Array(i),this.stripBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.stripBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW)},c.createCircle=function(t){this.circleCanvasRadius=r(y.initValue(t,32));var e=l.createCanvas("circle_canvas",2*this.circleCanvasRadius,2*this.circleCanvasRadius),i=e.getContext("2d");return i.beginPath(),i.arc(this.circleCanvasRadius,this.circleCanvasRadius,this.circleCanvasRadius,0,2*Math.PI,!0),i.closePath(),i.fillStyle="#FFF",i.fill(),e.toDataURL()},c.drawImg2Canvas=function(t){var e=t.body.width,i=t.body.height,n=r(t.body.width),a=r(t.body.height),s=t.body.width/n,o=t.body.height/a;this.texturebuffers[t.data.src]||(this.texturebuffers[t.data.src]=[this.gl.createTexture(),this.gl.createBuffer(),this.gl.createBuffer()]),t.data.texture=this.texturebuffers[t.data.src][0],t.data.vcBuffer=this.texturebuffers[t.data.src][1],t.data.tcBuffer=this.texturebuffers[t.data.src][2],this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,s,0,0,o,o,o]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,e,0,0,i,e,i]),this.gl.STATIC_DRAW);var h=t.data.canvas.getContext("2d").getImageData(0,0,n,a);this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,h),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_NEAREST),this.gl.generateMipmap(this.gl.TEXTURE_2D),t.data.textureLoaded=!0,t.data.textureWidth=e,t.data.textureHeight=i},c.onProtonUpdate=function(){},c.onParticleCreated=function(t){t.data.textureLoaded=!1,t.data.tmat=L.create(),t.data.tmat[8]=1,t.data.imat=L.create(),t.data.imat[8]=1,t.body?f(t.body,this.addImg2Body,t):(f(this.circleCanvasURL,this.addImg2Body,t),t.data.oldScale=t.radius/this.circleCanvasRadius)},c.addImg2Body=function(t,e){e.dead||(e.body=t,e.data.src=t.src,e.data.canvas=g(t),e.data.oldScale=1,this.drawImg2Canvas(e))},c.onParticleUpdate=function(t){t.data.textureLoaded&&(this.updateMatrix(t),this.gl.uniform3f(this.sprogram.color,t.rgb.r/255,t.rgb.g/255,t.rgb.b/255),this.gl.uniformMatrix3fv(this.sprogram.tMatUniform,!1,this.mstack.top()),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.vertexAttribPointer(this.sprogram.vpa,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.vertexAttribPointer(this.sprogram.tca,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.uniform1i(this.sprogram.samplerUniform,0),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0),this.mstack.pop())},c.onParticleDead=function(t){},c.updateMatrix=function(t){var e=a(-t.data.textureWidth/2,-t.data.textureHeight/2),i=a(t.p.x,t.p.y),n=t.rotation*T.PI_180,r=s(n),l=t.scale*t.data.oldScale,c=o(l,l),u=h(e,c);u=h(u,r),u=h(u,i),L.inverse(u,t.data.imat),u[2]=t.alpha,this.mstack.push(u)},c.destroy=function(){t.prototype.destroy.call(this),this.gl=null,this.mstack=null,this.umat=null,this.smat=null,this.texturebuffers=null},i}(yt),Tt=function(t){function i(e){var i;return(i=t.call(this,e)||this).name="CustomRenderer",i}return e(i,t),i}(yt),Rt=function(t){function i(e,i,n,r,a){var s;return void 0===a&&(a=">"),s=t.call(this)||this,n-e>=0?(s.x1=e,s.y1=i,s.x2=n,s.y2=r):(s.x1=n,s.y1=r,s.x2=e,s.y2=i),s.dx=s.x2-s.x1,s.dy=s.y2-s.y1,s.minx=Math.min(s.x1,s.x2),s.miny=Math.min(s.y1,s.y2),s.maxx=Math.max(s.x1,s.x2),s.maxy=Math.max(s.y1,s.y2),s.dot=s.x2*s.y1-s.x1*s.y2,s.xxyy=s.dx*s.dx+s.dy*s.dy,s.gradient=s.getGradient(),s.length=s.getLength(),s.direction=y.initValue(a,">"),s}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*this.length*Math.cos(this.gradient),this.vector.y=this.y1+this.random*this.length*Math.sin(this.gradient),this.vector},n.getDirection=function(t,e){var i=this.dy,n=-this.dx;return(i*t+n*e+this.dot)*(0===n?1:n)>0},n.getDistance=function(t,e){return(this.dy*t+-this.dx*e+this.dot)/Math.sqrt(this.xxyy)},n.getSymmetric=function(t){var e=t.getGradient(),i=2*(this.getGradient()-e),n=t.x,r=t.y;return t.x=n*Math.cos(i)-r*Math.sin(i),t.y=n*Math.sin(i)+r*Math.cos(i),t},n.getGradient=function(){return Math.atan2(this.dy,this.dx)},n.rangeOut=function(t){if(Math.abs(this.getGradient())<=T.PI/4){if(t.p.x<=this.maxx&&t.p.x>=this.minx)return!0}else if(t.p.y<=this.maxy&&t.p.y>=this.miny)return!0;return!1},n.getLength=function(){return Math.sqrt(this.dx*this.dx+this.dy*this.dy)},n.crossing=function(t){if("dead"===this.crossType)if(">"===this.direction||"R"===this.direction||"right"===this.direction||"down"===this.direction){if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)&&(t.dead=!0)}else{if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)||(t.dead=!0)}else if("bound"===this.crossType){if(!this.rangeOut(t))return;this.getDistance(t.p.x,t.p.y)<=t.radius&&(0===this.dx?t.v.x*=-1:0===this.dy?t.v.y*=-1:this.getSymmetric(t.v))}else"cross"===this.crossType&&this.alert&&(console.error("Sorry, LineZone does not support cross method!"),this.alert=!1)},i}(N),_t=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).x=e,r.y=i,r.radius=n,r.angle=0,r.center={x:e,y:i},r}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.angle=T.PIx2*Math.random(),this.randomRadius=Math.random()*this.radius,this.vector.x=this.x+this.randomRadius*Math.cos(this.angle),this.vector.y=this.y+this.randomRadius*Math.sin(this.angle),this.vector},n.setCenter=function(t,e){this.center.x=t,this.center.y=e},n.crossing=function(t){var e=t.p.distanceTo(this.center);"dead"===this.crossType?e-t.radius>this.radius&&(t.dead=!0):"bound"===this.crossType?e+t.radius>=this.radius&&this.getSymmetric(t):"cross"===this.crossType&&this.alert&&(console.error("Sorry, CircleZone does not support cross method!"),this.alert=!1)},n.getSymmetric=function(t){var e=t.v.getGradient(),i=2*(this.getGradient(t)-e),n=t.v.x,r=t.v.y;t.v.x=n*Math.cos(i)-r*Math.sin(i),t.v.y=n*Math.sin(i)+r*Math.cos(i)},n.getGradient=function(t){return-T.PI_2+Math.atan2(t.p.y-this.center.y,t.p.x-this.center.x)},i}(N),wt=function(t){function i(e,i,n,r){var a;return void 0===n&&(n=200),void 0===r&&(r=200),(a=t.call(this)||this).x=e,a.y=i,a.width=n,a.height=r,a}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x+Math.random()*this.width,this.vector.y=this.y+Math.random()*this.height,this.vector},n.crossing=function(t){"dead"===this.crossType?((t.p.x+t.radiusthis.x+this.width)&&(t.dead=!0),(t.p.y+t.radiusthis.y+this.height)&&(t.dead=!0)):"bound"===this.crossType?(t.p.x-t.radiusthis.x+this.width&&(t.p.x=this.x+this.width-t.radius,t.v.x*=-1),t.p.y-t.radiusthis.y+this.height&&(t.p.y=this.y+this.height-t.radius,t.v.y*=-1)):"cross"===this.crossType&&(t.p.x+t.radiusthis.x+this.width&&t.v.x>=0&&(t.p.x=this.x-t.radius),t.p.y+t.radiusthis.y+this.height&&t.v.y>=0&&(t.p.y=this.y-t.radius))},i}(N),Ct=function(t){function i(e,i,n,r){var a;return(a=t.call(this)||this).reset(e,i,n,r),a}e(i,t);var n=i.prototype;return n.reset=function(t,e,i,n){this.imageData=t,this.x=y.initValue(e,0),this.y=y.initValue(i,0),this.d=y.initValue(n,2),this.vectors=[],this.setVectors()},n.setVectors=function(){var t,e,i=this.imageData.width,n=this.imageData.height;for(t=0;t0&&this.vectors.push({x:t+this.x,y:e+this.y})}return this.vector},n.getBound=function(t,e){var i=4*((e|0)*this.imageData.width+(t|0));return this.imageData.data[i+3]>0},n.getPosition=function(){var t=y.getRandFromArray(this.vectors);return this.vector.copy(t)},n.getColor=function(t,e){t-=this.x;var i=4*(((e-=this.y)|0)*this.imageData.width+(t|0));return{r:this.imageData.data[i],g:this.imageData.data[i+1],b:this.imageData.data[i+2],a:this.imageData.data[i+3]}},n.crossing=function(t){"dead"===this.crossType?t.dead=this.getBound(t.p.x-this.x,t.p.y-this.y):"bound"===this.crossType&&(this.getBound(t.p.x-this.x,t.p.y-this.y)||t.v.negate())},n.destroy=function(){t.prototype.destroy.call(this),this.imageData=null},i}(N),It={addEventListener:function(t,e){t.addEventListener("PROTON_UPDATE_AFTER",(function(){return e()}))},getStyle:function(t){void 0===t&&(t="#ff0000");var e=M.hexToRgb(t);return"rgba("+e.r+", "+e.g+", "+e.b+", 0.5)"},drawZone:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),i instanceof H?(r.beginPath(),r.fillStyle=a,r.arc(i.x,i.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()):i instanceof Rt?(r.beginPath(),r.strokeStyle=a,r.moveTo(i.x1,i.y1),r.lineTo(i.x2,i.y2),r.stroke(),r.closePath()):i instanceof wt?(r.beginPath(),r.strokeStyle=a,r.drawRect(i.x,i.y,i.width,i.height),r.stroke(),r.closePath()):i instanceof _t&&(r.beginPath(),r.strokeStyle=a,r.arc(i.x,i.y,i.radius,0,2*Math.PI,!0),r.stroke(),r.closePath())}))},drawEmitter:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),r.beginPath(),r.fillStyle=a,r.arc(i.p.x,i.p.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()}))}};return _.Particle=V,_.Pool=b,_.Util=y,_.ColorUtil=M,_.MathUtil=T,_.Vector2D=_.Vector=D,_.Polar2D=_.Polar=B,_.ArraySpan=U,_.Rectangle=F,_.Rate=z,_.ease=S,_.Span=C,_.Mat3=L,_.getSpan=function(t,e,i){return new C(t,e,i)},_.createArraySpan=U.createArraySpan,_.Initialize=_.Init=O,_.Life=_.L=k,_.Position=_.P=q,_.Velocity=_.V=G,_.Mass=_.M=X,_.Radius=_.R=Y,_.Body=_.B=j,_.Behaviour=W,_.Force=_.F=Z,_.Attraction=_.A=Q,_.RandomDrift=_.RD=K,_.Gravity=_.G=J,_.Collision=$,_.CrossZone=tt,_.Alpha=et,_.Scale=_.S=it,_.Rotate=nt,_.Color=rt,_.Repulsion=ot,_.Cyclone=st,_.GravityWell=ht,_.Emitter=ct,_.BehaviourEmitter=dt,_.FollowEmitter=pt,_.Zone=N,_.LineZone=Rt,_.CircleZone=_t,_.PointZone=H,_.RectZone=wt,_.ImageZone=Ct,_.CanvasRenderer=mt,_.DomRenderer=vt,_.EaselRenderer=bt,_.PixiRenderer=Et,_.PixelRenderer=xt,_.WebGLRenderer=_.WebGlRenderer=Pt,_.CustomRenderer=Tt,_.Debug=It,y.assign(_,S),_}(); +this.Proton=function(){"use strict";function t(t,e){for(var i=0;i>e;return t+1},a=function(t,e){return[1,0,0,0,1,0,t,e,1]},s=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},o=function(t,e){return[t,0,0,0,e,0,0,0,1]},h=function(t,e){var i=t[0],r=t[1],n=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+r*f+n*m,i*d+r*g+n*v,i*p+r*y+n*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},l={createCanvas:function(t,e,i,r){void 0===r&&(r="absolute");var n=document.createElement("canvas");return n.id=t,n.width=e,n.height=i,n.style.opacity=0,n.style.position=r,this.transform(n,-500,-500,0,0),n},createDiv:function(t,e,i){var r=document.createElement("div");return r.id=t,r.style.position="absolute",this.resize(r,e,i),r},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,r,n){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+r+") rotate("+n+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,r,n){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+r+") rotate("+n+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var r=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+r]=i,t.style["Moz"+r]=i,t.style["O"+r]=i,t.style["ms"+r]=i,t.style[""+e]=i}},c={},u={},d=0,p=function(t,e,i){t.drawImage(e,i.x,i.y);var r=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),r},f=function(t,e,i){var r="string"==typeof t?t:t.src;if(c[r])e(c[r],i);else{var n=new Image;n.onload=function(t){c[r]=t.target,e(c[r],i)},n.src=r}},g=function(t,e,i){var r=t.src;if(!u[r]){var a=n(t.width),s=n(t.height),o=l.createCanvas("proton_canvas_cache_"+ ++d,a,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),u[r]=o}return e&&e(u[r],i),u[r]},y={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},sliceArray:function(t,e,i){this.emptyArray(i);for(var r=e;r-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return p(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},m={},v={_index:0,_cache:{},id:function(t){return void 0!==m[t]&&null!==m[t]||(m[t]=0),t+"_"+m[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},b=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var r;return i=i||t.__puid||v.getId(t),(r=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,r},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?y.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),x=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),r=this.getRenderer(),n="";switch(this.type){case 2:n+="emitter:"+this.proton.emitters.length+"
",i&&(n+="em speed:"+i.emitSpeed+"
"),i&&(n+="pos:"+this.getEmitterPos(i));break;case 3:i&&(n+="initializes:"+i.initializes.length+"
"),i&&(n+=''+this.concatArr(i.initializes)+"
"),i&&(n+="behaviours:"+i.behaviours.length+"
"),i&&(n+=''+this.concatArr(i.behaviours)+"
");break;case 4:r&&(n+=r.name+"
"),r&&(n+="body:"+this.getCreatedNumber(r)+"
");break;default:n+="particles:"+this.proton.getCount()+"
",n+="pool:"+this.proton.pool.getCount()+"
",n+="total:"+this.proton.pool.total}this.container.innerHTML=n},e.add=function(t,e){var i=this;if(!this.container){var r,n;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:r="#201",n="#f08";break;case 3:r="#020",n="#0f0";break;default:r="#002",n="#0ff"}this.container.style["background-color"]=r,this.container.style.color=n}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(e.DEFAULT_INTERVAL),this.dispatchEvent(e.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(e.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(e.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){e.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){y.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),y.destroyAll(e.emitters),y.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=e,(r=[{key:"fps",get:function(){return this._fps},set:function(t){this._fps=t,this._interval="auto"===t?e.DEFAULT_INTERVAL:T.floor(1/t,7)}}])&&t(i.prototype,r),n&&t(i,n),Object.defineProperty(i,"prototype",{writable:!1}),i}();R.USE_CLOCK=!1,R.MEASURE=100,R.EULER="euler",R.RK2="runge-kutta2",R.PARTICLE_CREATED="PARTICLE_CREATED",R.PARTICLE_UPDATE="PARTICLE_UPDATE",R.PARTICLE_SLEEP="PARTICLE_SLEEP",R.PARTICLE_DEAD="PARTICLE_DEAD",R.EMITTER_ADDED="EMITTER_ADDED",R.EMITTER_REMOVED="EMITTER_REMOVED",R.PROTON_UPDATE="PROTON_UPDATE",R.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",R.DEFAULT_INTERVAL=.0167,R.amendChangeTabsBug=!0,E.bind(R);var w=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),C=function(){function t(t,e,i){this.isArray=void 0,this.a=void 0,this.b=void 0,this.center=void 0,y.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=y.initValue(t,1),this.b=y.initValue(e,this.a),this.center=y.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?y.getRandFromArray(this.a):this.center?T.randomFloating(this.a,this.b,t):T.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,r){return e instanceof t?e:void 0===i?new t(e):void 0===r?new t(e,i):new t(e,i,r)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),I={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=C.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},S={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*T.PI_2)},easeOutSine:function(t){return Math.sin(t*T.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},M=function(){function t(t,e){this.x=void 0,this.y=void 0,this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?T.PI_2:this.y<0?-T.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),D=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=v.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new M,this.v=new M,this.a=new M,this.old.p=new M,this.old.v=new M,this.old.a=new M,this.rgb=new w,this.reset(),t&&I.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*T.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=S.easeLinear,this.rgb.reset(),y.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){y.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),B={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},V=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new M(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),L={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var r=t[0],n=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*r+u*s,i[1]=c*n+u*o,i[2]=a*d,i[3]=p*r+f*s,i[4]=p*n+f*o,i[6]=g*r+y*s+h,i[7]=g*n+y*o+l,i},inverse:function(t,e){var i,r=t[0],n=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(r*l+n*c),e[0]=l*i,e[1]=-n*i,e[3]=c*i,e[4]=r*i,e[6]=u*i,e[7]=(-h*r+n*o)*i,e},multiplyVec2:function(t,e,i){var r=e[0],n=e[1];return i[0]=r*t[0]+n*t[3]+t[6],i[1]=r*t[1]+n*t[4]+t[7],i}},U=function(t){function i(e){var i;return(i=t.call(this)||this)._arr=y.toArray(e),i}return e(i,t),i.prototype.getValue=function(){var t=y.getRandFromArray(this._arr);return"random"===t||"Random"===t?T.randomColor():t},i.createArraySpan=function(t){return t?t instanceof i?t:new i(t):null},i}(C),F=function(){function t(t,e,i,r){this.x=t,this.y=e,this.width=i,this.height=r,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),z=function(){function t(t,e){this.numPan=void 0,this.timePan=void 0,this.startTime=void 0,this.nextTime=void 0,this.numPan=C.setSpanValue(y.initValue(t,1)),this.timePan=C.setSpanValue(y.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),O=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),k=function(t){function i(e,i,r){var n;return(n=t.call(this)||this).lifePan=void 0,n.name=void 0,n.lifePan=C.setSpanValue(e,i,r),n.name="Life",n}return e(i,t),i.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},i}(O),N=function(){function t(){this.vector=new M(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),H=function(t){function i(e,i){var r;return(r=t.call(this)||this).x=e,r.y=i,r}e(i,t);var r=i.prototype;return r.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},r.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},i}(N),q=function(t){function i(e){var i;return(i=t.call(this)||this).zone=void 0,i.name=void 0,i.zone=y.initValue(e,new H),i.name="Position",i}e(i,t);var r=i.prototype;return r.reset=function(t){this.zone=y.initValue(t,new H)},r.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},i}(O),G=function(t){function i(e,i,r){var n;return(n=t.call(this)||this).rPan=void 0,n.thaPan=void 0,n.name=void 0,n.rPan=C.setSpanValue(e),n.thaPan=C.setSpanValue(i),n.type=y.initValue(r,"vector"),n.name="Velocity",n}e(i,t);var r=i.prototype;return r.reset=function(t,e,i){this.rPan=C.setSpanValue(t),this.thaPan=C.setSpanValue(e),this.type=y.initValue(i,"vector")},r.normalizeVelocity=function(t){return t*R.MEASURE},r.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new V(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*T.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},i}(O),X=function(t){function i(e,i,r){var n;return(n=t.call(this)||this).massPan=void 0,n.name=void 0,n.massPan=C.setSpanValue(e,i,r),n.name="Mass",n}return e(i,t),i.prototype.initialize=function(t){t.mass=this.massPan.getValue()},i}(O),Y=function(t){function i(e,i,r){var n;return(n=t.call(this)||this).radius=void 0,n.name=void 0,n.radius=C.setSpanValue(e,i,r),n.name="Radius",n}e(i,t);var r=i.prototype;return r.reset=function(t,e,i){this.radius=C.setSpanValue(t,e,i)},r.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},i}(O),j=function(t){function i(e,i,r){var n;return(n=t.call(this)||this).image=void 0,n.name=void 0,n.image=n.setSpanValue(e),n.w=y.initValue(i,20),n.h=y.initValue(r,n.w),n.name="Body",n}e(i,t);var r=i.prototype;return r.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},r.setSpanValue=function(t){return t instanceof U?t:new U(t)},i}(O),W=function(){function t(e,i){this.life=y.initValue(e,1/0),this.easing=S.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=y.initValue(t,1/0),this.easing=S.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(R.MEASURE)},e.normalizeValue=function(t){return t*R.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var r=this.easing(t.age/t.life);this.energy=Math.max(1-r,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();W.id=0;var Z=function(t){function i(e,i,r,n){var a;return(a=t.call(this,r,n)||this).force=a.normalizeForce(new M(e,i)),a.name="Force",a}e(i,t);var r=i.prototype;return r.reset=function(e,i,r,n){this.force=this.normalizeForce(new M(e,i)),r&&t.prototype.reset.call(this,r,n)},r.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},i}(W),Q=function(t){function i(e,i,r,n,a){var s;return(s=t.call(this,n,a)||this).targetPosition=y.initValue(e,new M),s.radius=y.initValue(r,1e3),s.force=y.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new M,s.lengthSq=0,s.name="Attraction",s}e(i,t);var r=i.prototype;return r.reset=function(e,i,r,n,a){this.targetPosition=y.initValue(e,new M),this.radius=y.initValue(r,1e3),this.force=y.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new M,this.lengthSq=0,n&&t.prototype.reset.call(this,n,a)},r.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq=this.delay&&(t.a.addXY(T.randomAToB(-this.panFoce.x,this.panFoce.x),T.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},i}(W),J=function(t){function i(e,i,r){var n;return(n=t.call(this,0,e,i,r)||this).name="Gravity",n}return e(i,t),i.prototype.reset=function(e,i,r){t.prototype.reset.call(this,0,e,i,r)},i}(Z),$=function(t){function i(e,i,r,n,a){var s;return(s=t.call(this,n,a)||this).reset(e,i,r),s.newPool=[],s.pool=[],s.name="Collision",s}e(i,t);var r=i.prototype;return r.reset=function(e,i,r,n,a){this.emitter=y.initValue(e,null),this.mass=y.initValue(i,!0),this.callback=y.initValue(r,null),this.collisionPool=[],this.delta=new M,n&&t.prototype.reset.call(this,n,a)},r.applyBehaviour=function(t,e,i){this.emitter?y.sliceArray(this.emitter.particles,i,this.newPool):y.sliceArray(this.pool,i,this.newPool);var r,n,a,s,o,h,l,c=this.newPool.length;for(l=0;ln;)t-=n,this.update(n);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=r},r.removeAllParticles=function(){for(var t=this.particles,e=t.length,i=0;i-1&&this.initializes.splice(e,1)},r.removeAllInitializers=function(){y.emptyArray(this.initializes)},r.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i=this.life||this.dead?this.destroy():(this.emitting(t),this.integrate(t))},r.integrate=function(t){if(this.parent){var e=1-this.damping;this.parent.integrator.calculate(this,t,e);for(var i=this.particles,r=i.length,n=this.parent,a=n.pool,s=n.integrator,o=Boolean(this.parent||this.bindEvent),h=r,l=0;l5e4&&"PARTICLE_CREATED"!==t&&"PARTICLE_DEAD"!==t||(this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)))},r.emitting=function(t){if(!this.stoped){var e=1e4,i=this.emitTime,r=this.totalTime;if("none"!==r){if("once"===r){var n=this.rate.getValue(99999);if(n>e&&(process&&process.env&&"development"===process.env.NODE_ENV&&console.warn("Attempting to emit "+n+" particles at once, capped to "+e),n=e),n<=0)return;return this.emitSpeed=n,this._fastCreateParticles(n),void(this.totalTime="none")}if(i+=t,this.emitTime=i,ie&&(a=e),this.emitSpeed=a,this._fastCreateParticles(a)}}else this.emitTime=i+t}},r._fastCreateParticles=function(t){if(!(t<=0)&&this.parent){var e,i=this.parent.pool,r=this.particles,n=this.initializes,a=this.behaviours,s=1e6;if(!(r.length+t>s&&(t=Math.max(0,s-r.length))<=0))i.getBulk?(e=i.getBulk(D,t),this._initializeParticlesBulk(e,n,a)):this._createParticlesLoop(t,i,r,n,a)}},r._createParticlesLoop=function(t,e,i,r,n){if(i.length,0===i.length&&t>1e4)try{i.length=t,i.length=0}catch(t){}for(var a,s=(this.parent||this.bindEvent)&&i.length<1e4?this.dispatch.bind(this):null,o=0;or&&t>1e4)for(var n=0;na&&(t=Math.max(0,a-n.length))<=0)){var s=(this.parent||this.bindEvent)&&n.length<1e4,o=e?y.toArray(e):this.initializes,h=i?y.toArray(i):this.behaviours,l=s?this.dispatch.bind(this):null;if(Array.prototype.reserve){var c=n.length+t;n.capacity-1&&this.selfBehaviours.splice(e,1)},r.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,r=this.selfBehaviours.length;for(i=0;ithis.element.width||i<0||i>this.element.height)){var a=4*((i|0)*t.width+(e|0));t.data[a]=n.r,t.data[a+1]=n.g,t.data[a+2]=n.b,t.data[a+3]=255*r.alpha}},r.onParticleDead=function(t){},r.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},i}(yt),Et=0,Pt=function(t){function i(){var e;return(e=t.call(this)||this).emitterPools=new Map,e}e(i,t);var r=i.prototype;return r.get=function(t,e,i){i=i||e&&e.parent&&e.parent.id||"default",this.emitterPools.has(i)||this.emitterPools.set(i,[]);var r,n=this.emitterPools.get(i);return n.length>0?r=n.pop():(r=this.createOrClone(t,e)).__emitterId=i,r},r.expire=function(t,e){return!e&&t.__emitterId&&(e=t.__emitterId),e=e||"default",this.emitterPools.has(e)||this.emitterPools.set(e,[]),this.emitterPools.get(e).push(t)},r.destroy=function(){t.prototype.destroy.call(this),this.emitterPools.forEach((function(t){t.length=0})),this.emitterPools.clear(),this.emitterPools=null},i}(b),At=function(t){function i(e,i){var r;return(r=t.call(this,e)||this).stroke=i,r.color=!1,r.setColor=!1,r.blendMode=null,r.rendererId=++Et,r.pixiPool=new Pt,r.pixiPool.create=function(t,e){return r.createBody(t,e)},r.emitterMap=new Map,r.setPIXI(window.PIXI),r.name="PixiRenderer",r}e(i,t);var r=i.prototype;return r.setPIXI=function(t){try{ut=t||{Sprite:{}},this.createFromImage=ut.Sprite.from}catch(t){}},r.onProtonUpdate=function(){},r.onEmitterAdded=function(t){this.emitterMap.has(t.id)||this.emitterMap.set(t.id,new Set)},r.onEmitterRemoved=function(t){this.emitterMap.has(t.id)&&this.emitterMap.delete(t.id)},r.onParticleCreated=function(t){var e=t.parent?t.parent.id:"orphaned";t.__emitterId=e,t.body?t.body=this.pixiPool.get(t.body,t,e):t.body=this.pixiPool.get(this.circleConf,t,e),this.blendMode&&(t.body.blendMode=this.blendMode),this.emitterMap.has(e)&&this.emitterMap.get(e).add(t),this.element.addChild(t.body)},r.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=B.getHex16FromParticle(t))},r.onParticleDead=function(t){if(t.body){this.element.removeChild(t.body);var e=t.__emitterId||(t.parent?t.parent.id:"orphaned");this.pixiPool.expire(t.body,e),this.emitterMap.has(e)&&this.emitterMap.get(e).delete(t),t.body=null}},r.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*T.PI_180},r.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},r.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new ut.Sprite(t);return e.anchor.set(.5,.5),e},r.createCircle=function(t){var e=new ut.Graphics;if(this.stroke){var i=gt(this.stroke)?this.stroke:0;e.lineStyle(1,i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},r.destroy=function(e){t.prototype.destroy.call(this),this.emitterMap.clear(),this.emitterMap=null,this.pixiPool.destroy(),this.pixiPool=null;for(var i=e.length;i--;){var r=e[i];r.body&&(this.element.removeChild(r.body),r.body.destroy({children:!0}))}},i}(yt),Tt=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(L.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?L.set(t,this.mats[0]):L.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?L.set(t,this.mats[0]):L.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),_t=function(t){function i(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(i),i.name="WebGLRenderer",i}e(i,t);var r=i.prototype;return r.init=function(e){t.prototype.init.call(this,e),this.resize(this.element.width,this.element.height)},r.resize=function(t,e){this.umat[4]=-2,this.umat[7]=1,this.smat[0]=1/t,this.smat[4]=1/e,this.mstack.set(this.umat,0),this.mstack.set(this.smat,1),this.gl.viewport(0,0,t,e),this.element.width=t,this.element.height=e},r.setMaxRadius=function(t){this.circleCanvasURL=this.createCircle(t)},r.getVertexShader=function(){return["uniform vec2 viewport;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 tMat;","varying vec2 vTextureCoord;","varying float alpha;","void main() {","vec3 v = tMat * vec3(aVertexPosition, 1.0);","gl_Position = vec4(v.x, v.y, 0, 1);","vTextureCoord = aTextureCoord;","alpha = tMat[0][2];","}"].join("\n")},r.getFragmentShader=function(){return["precision mediump float;","varying vec2 vTextureCoord;","varying float alpha;","uniform sampler2D uSampler;","uniform vec4 color;","uniform bool useTexture;","uniform vec3 uColor;","void main() {","vec4 textureColor = texture2D(uSampler, vTextureCoord);","gl_FragColor = textureColor * vec4(uColor, 1.0);","gl_FragColor.w *= alpha;","}"].join("\n")},r.initVar=function(){this.mstack=new Tt,this.umat=L.create([2,0,1,0,-2,0,-1,1,1]),this.smat=L.create([.01,0,1,0,.01,0,0,0,1]),this.texturebuffers={}},r.blendEquation=function(t){this.gl.blendEquation(this.gl[t])},r.blendFunc=function(t,e){this.gl.blendFunc(this.gl[t],this.gl[e])},r.getShader=function(t,e,i){var r=i?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);return t.shaderSource(r,e),t.compileShader(r),t.getShaderParameter(r,t.COMPILE_STATUS)?r:(alert(t.getShaderInfoLog(r)),null)},r.initShaders=function(){var t=this.getShader(this.gl,this.getFragmentShader(),!0),e=this.getShader(this.gl,this.getVertexShader(),!1);this.sprogram=this.gl.createProgram(),this.gl.attachShader(this.sprogram,e),this.gl.attachShader(this.sprogram,t),this.gl.linkProgram(this.sprogram),this.gl.getProgramParameter(this.sprogram,this.gl.LINK_STATUS)||alert("Could not initialise shaders"),this.gl.useProgram(this.sprogram),this.sprogram.vpa=this.gl.getAttribLocation(this.sprogram,"aVertexPosition"),this.sprogram.tca=this.gl.getAttribLocation(this.sprogram,"aTextureCoord"),this.gl.enableVertexAttribArray(this.sprogram.tca),this.gl.enableVertexAttribArray(this.sprogram.vpa),this.sprogram.tMatUniform=this.gl.getUniformLocation(this.sprogram,"tMat"),this.sprogram.samplerUniform=this.gl.getUniformLocation(this.sprogram,"uSampler"),this.sprogram.useTex=this.gl.getUniformLocation(this.sprogram,"useTexture"),this.sprogram.color=this.gl.getUniformLocation(this.sprogram,"uColor"),this.gl.uniform1i(this.sprogram.useTex,1)},r.initBuffers=function(){var t,e;this.unitIBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,3,1,0,2,3]),this.gl.STATIC_DRAW);var i=[];for(e=0;e<100;e++)i.push(e);for(t=new Uint16Array(i),this.unitI33=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitI33),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW),i=[],e=0;e<100;e++)i.push(e,e+1,e+2);t=new Uint16Array(i),this.stripBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.stripBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW)},r.createCircle=function(t){this.circleCanvasRadius=n(y.initValue(t,32));var e=l.createCanvas("circle_canvas",2*this.circleCanvasRadius,2*this.circleCanvasRadius),i=e.getContext("2d");return i.beginPath(),i.arc(this.circleCanvasRadius,this.circleCanvasRadius,this.circleCanvasRadius,0,2*Math.PI,!0),i.closePath(),i.fillStyle="#FFF",i.fill(),e.toDataURL()},r.drawImg2Canvas=function(t){var e=t.body.width,i=t.body.height,r=n(t.body.width),a=n(t.body.height),s=t.body.width/r,o=t.body.height/a;this.texturebuffers[t.data.src]||(this.texturebuffers[t.data.src]=[this.gl.createTexture(),this.gl.createBuffer(),this.gl.createBuffer()]),t.data.texture=this.texturebuffers[t.data.src][0],t.data.vcBuffer=this.texturebuffers[t.data.src][1],t.data.tcBuffer=this.texturebuffers[t.data.src][2],this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,s,0,0,o,o,o]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,e,0,0,i,e,i]),this.gl.STATIC_DRAW);var h=t.data.canvas.getContext("2d").getImageData(0,0,r,a);this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,h),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_NEAREST),this.gl.generateMipmap(this.gl.TEXTURE_2D),t.data.textureLoaded=!0,t.data.textureWidth=e,t.data.textureHeight=i},r.onProtonUpdate=function(){},r.onParticleCreated=function(t){t.data.textureLoaded=!1,t.data.tmat=L.create(),t.data.tmat[8]=1,t.data.imat=L.create(),t.data.imat[8]=1,t.body?f(t.body,this.addImg2Body,t):(f(this.circleCanvasURL,this.addImg2Body,t),t.data.oldScale=t.radius/this.circleCanvasRadius)},r.addImg2Body=function(t,e){e.dead||(e.body=t,e.data.src=t.src,e.data.canvas=g(t),e.data.oldScale=1,this.drawImg2Canvas(e))},r.onParticleUpdate=function(t){t.data.textureLoaded&&(this.updateMatrix(t),this.gl.uniform3f(this.sprogram.color,t.rgb.r/255,t.rgb.g/255,t.rgb.b/255),this.gl.uniformMatrix3fv(this.sprogram.tMatUniform,!1,this.mstack.top()),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.vertexAttribPointer(this.sprogram.vpa,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.vertexAttribPointer(this.sprogram.tca,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.uniform1i(this.sprogram.samplerUniform,0),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0),this.mstack.pop())},r.onParticleDead=function(t){},r.updateMatrix=function(t){var e=a(-t.data.textureWidth/2,-t.data.textureHeight/2),i=a(t.p.x,t.p.y),r=t.rotation*T.PI_180,n=s(r),l=t.scale*t.data.oldScale,c=o(l,l),u=h(e,c);u=h(u,n),u=h(u,i),L.inverse(u,t.data.imat),u[2]=t.alpha,this.mstack.push(u)},r.destroy=function(){t.prototype.destroy.call(this),this.gl=null,this.mstack=null,this.umat=null,this.smat=null,this.texturebuffers=null},i}(yt),Rt=function(t){function i(e){var i;return(i=t.call(this,e)||this).name="CustomRenderer",i}return e(i,t),i}(yt),wt=function(t){function i(e,i,r,n,a){var s;return void 0===a&&(a=">"),s=t.call(this)||this,r-e>=0?(s.x1=e,s.y1=i,s.x2=r,s.y2=n):(s.x1=r,s.y1=n,s.x2=e,s.y2=i),s.dx=s.x2-s.x1,s.dy=s.y2-s.y1,s.minx=Math.min(s.x1,s.x2),s.miny=Math.min(s.y1,s.y2),s.maxx=Math.max(s.x1,s.x2),s.maxy=Math.max(s.y1,s.y2),s.dot=s.x2*s.y1-s.x1*s.y2,s.xxyy=s.dx*s.dx+s.dy*s.dy,s.gradient=s.getGradient(),s.length=s.getLength(),s.direction=y.initValue(a,">"),s}e(i,t);var r=i.prototype;return r.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*this.length*Math.cos(this.gradient),this.vector.y=this.y1+this.random*this.length*Math.sin(this.gradient),this.vector},r.getDirection=function(t,e){var i=this.dy,r=-this.dx;return(i*t+r*e+this.dot)*(0===r?1:r)>0},r.getDistance=function(t,e){return(this.dy*t+-this.dx*e+this.dot)/Math.sqrt(this.xxyy)},r.getSymmetric=function(t){var e=t.getGradient(),i=2*(this.getGradient()-e),r=t.x,n=t.y;return t.x=r*Math.cos(i)-n*Math.sin(i),t.y=r*Math.sin(i)+n*Math.cos(i),t},r.getGradient=function(){return Math.atan2(this.dy,this.dx)},r.rangeOut=function(t){if(Math.abs(this.getGradient())<=T.PI/4){if(t.p.x<=this.maxx&&t.p.x>=this.minx)return!0}else if(t.p.y<=this.maxy&&t.p.y>=this.miny)return!0;return!1},r.getLength=function(){return Math.sqrt(this.dx*this.dx+this.dy*this.dy)},r.crossing=function(t){if("dead"===this.crossType)if(">"===this.direction||"R"===this.direction||"right"===this.direction||"down"===this.direction){if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)&&(t.dead=!0)}else{if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)||(t.dead=!0)}else if("bound"===this.crossType){if(!this.rangeOut(t))return;this.getDistance(t.p.x,t.p.y)<=t.radius&&(0===this.dx?t.v.x*=-1:0===this.dy?t.v.y*=-1:this.getSymmetric(t.v))}else"cross"===this.crossType&&this.alert&&(console.error("Sorry, LineZone does not support cross method!"),this.alert=!1)},i}(N),Ct=function(t){function i(e,i,r){var n;return(n=t.call(this)||this).x=e,n.y=i,n.radius=r,n.angle=0,n.center={x:e,y:i},n}e(i,t);var r=i.prototype;return r.getPosition=function(){return this.angle=T.PIx2*Math.random(),this.randomRadius=Math.random()*this.radius,this.vector.x=this.x+this.randomRadius*Math.cos(this.angle),this.vector.y=this.y+this.randomRadius*Math.sin(this.angle),this.vector},r.setCenter=function(t,e){this.center.x=t,this.center.y=e},r.crossing=function(t){var e=t.p.distanceTo(this.center);"dead"===this.crossType?e-t.radius>this.radius&&(t.dead=!0):"bound"===this.crossType?e+t.radius>=this.radius&&this.getSymmetric(t):"cross"===this.crossType&&this.alert&&(console.error("Sorry, CircleZone does not support cross method!"),this.alert=!1)},r.getSymmetric=function(t){var e=t.v.getGradient(),i=2*(this.getGradient(t)-e),r=t.v.x,n=t.v.y;t.v.x=r*Math.cos(i)-n*Math.sin(i),t.v.y=r*Math.sin(i)+n*Math.cos(i)},r.getGradient=function(t){return-T.PI_2+Math.atan2(t.p.y-this.center.y,t.p.x-this.center.x)},i}(N),It=function(t){function i(e,i,r,n){var a;return void 0===r&&(r=200),void 0===n&&(n=200),(a=t.call(this)||this).x=e,a.y=i,a.width=r,a.height=n,a}e(i,t);var r=i.prototype;return r.getPosition=function(){return this.vector.x=this.x+Math.random()*this.width,this.vector.y=this.y+Math.random()*this.height,this.vector},r.crossing=function(t){"dead"===this.crossType?((t.p.x+t.radiusthis.x+this.width)&&(t.dead=!0),(t.p.y+t.radiusthis.y+this.height)&&(t.dead=!0)):"bound"===this.crossType?(t.p.x-t.radiusthis.x+this.width&&(t.p.x=this.x+this.width-t.radius,t.v.x*=-1),t.p.y-t.radiusthis.y+this.height&&(t.p.y=this.y+this.height-t.radius,t.v.y*=-1)):"cross"===this.crossType&&(t.p.x+t.radiusthis.x+this.width&&t.v.x>=0&&(t.p.x=this.x-t.radius),t.p.y+t.radiusthis.y+this.height&&t.v.y>=0&&(t.p.y=this.y-t.radius))},i}(N),St=function(t){function i(e,i,r,n){var a;return(a=t.call(this)||this).reset(e,i,r,n),a}e(i,t);var r=i.prototype;return r.reset=function(t,e,i,r){this.imageData=t,this.x=y.initValue(e,0),this.y=y.initValue(i,0),this.d=y.initValue(r,2),this.vectors=[],this.setVectors()},r.setVectors=function(){var t,e,i=this.imageData.width,r=this.imageData.height;for(t=0;t0&&this.vectors.push({x:t+this.x,y:e+this.y})}return this.vector},r.getBound=function(t,e){var i=4*((e|0)*this.imageData.width+(t|0));return this.imageData.data[i+3]>0},r.getPosition=function(){var t=y.getRandFromArray(this.vectors);return this.vector.copy(t)},r.getColor=function(t,e){t-=this.x;var i=4*(((e-=this.y)|0)*this.imageData.width+(t|0));return{r:this.imageData.data[i],g:this.imageData.data[i+1],b:this.imageData.data[i+2],a:this.imageData.data[i+3]}},r.crossing=function(t){"dead"===this.crossType?t.dead=this.getBound(t.p.x-this.x,t.p.y-this.y):"bound"===this.crossType&&(this.getBound(t.p.x-this.x,t.p.y-this.y)||t.v.negate())},r.destroy=function(){t.prototype.destroy.call(this),this.imageData=null},i}(N),Mt={addEventListener:function(t,e){t.addEventListener("PROTON_UPDATE_AFTER",(function(){return e()}))},getStyle:function(t){void 0===t&&(t="#ff0000");var e=B.hexToRgb(t);return"rgba("+e.r+", "+e.g+", "+e.b+", 0.5)"},drawZone:function(t,e,i,r){var n=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){r&&n.clearRect(0,0,e.width,e.height),i instanceof H?(n.beginPath(),n.fillStyle=a,n.arc(i.x,i.y,10,0,2*Math.PI,!0),n.fill(),n.closePath()):i instanceof wt?(n.beginPath(),n.strokeStyle=a,n.moveTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.stroke(),n.closePath()):i instanceof It?(n.beginPath(),n.strokeStyle=a,n.drawRect(i.x,i.y,i.width,i.height),n.stroke(),n.closePath()):i instanceof Ct&&(n.beginPath(),n.strokeStyle=a,n.arc(i.x,i.y,i.radius,0,2*Math.PI,!0),n.stroke(),n.closePath())}))},drawEmitter:function(t,e,i,r){var n=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){r&&n.clearRect(0,0,e.width,e.height),n.beginPath(),n.fillStyle=a,n.arc(i.p.x,i.p.y,10,0,2*Math.PI,!0),n.fill(),n.closePath()}))}};return R.Particle=D,R.Pool=b,R.Util=y,R.ColorUtil=B,R.MathUtil=T,R.Vector2D=R.Vector=M,R.Polar2D=R.Polar=V,R.ArraySpan=U,R.Rectangle=F,R.Rate=z,R.ease=S,R.Span=C,R.Mat3=L,R.getSpan=function(t,e,i){return new C(t,e,i)},R.createArraySpan=U.createArraySpan,R.Initialize=R.Init=O,R.Life=R.L=k,R.Position=R.P=q,R.Velocity=R.V=G,R.Mass=R.M=X,R.Radius=R.R=Y,R.Body=R.B=j,R.Behaviour=W,R.Force=R.F=Z,R.Attraction=R.A=Q,R.RandomDrift=R.RD=K,R.Gravity=R.G=J,R.Collision=$,R.CrossZone=tt,R.Alpha=et,R.Scale=R.S=it,R.Rotate=rt,R.Color=nt,R.Repulsion=ot,R.Cyclone=st,R.GravityWell=ht,R.Emitter=ct,R.BehaviourEmitter=dt,R.FollowEmitter=pt,R.Zone=N,R.LineZone=wt,R.CircleZone=Ct,R.PointZone=H,R.RectZone=It,R.ImageZone=St,R.CanvasRenderer=mt,R.DomRenderer=vt,R.EaselRenderer=bt,R.PixiRenderer=At,R.PixelRenderer=xt,R.WebGLRenderer=R.WebGlRenderer=_t,R.CustomRenderer=Rt,R.Debug=Mt,y.assign(R,S),R}(); //# sourceMappingURL=proton.web.min.js.map diff --git a/build/proton.web.min.js.map b/build/proton.web.min.js.map index f91bab0..da5834b 100644 --- a/build/proton.web.min.js.map +++ b/build/proton.web.min.js.map @@ -1 +1 @@ -{"version":3,"file":"proton.web.min.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/math/Span.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/emitter/BehaviourEmitter.js","../src/render/PixiRenderer.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number | undefined} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n /**\n * Sets the frames per second (FPS) for the Proton system.\n * @param {number|string} fps - The desired FPS. Use \"auto\" for default behavior, or a number for a specific FPS.\n */\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n /**\n * Gets the current frames per second (FPS) setting.\n * @returns {number|string} The current FPS setting. Returns \"auto\" if set to default, or a number representing the specific FPS.\n */\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a span of values or an array.\n */\nexport default class Span {\n /**\n * @type {boolean}\n * @private\n */\n isArray;\n\n /**\n * @type {number|number[]}\n * @private\n */\n a;\n\n /**\n * @type {number}\n * @private\n */\n b;\n\n /**\n * @type {boolean}\n * @private\n */\n center;\n\n /**\n * Creates a new Span instance.\n * @param {number|number[]} a - The first value or an array of values.\n * @param {number} [b] - The second value (if a is not an array).\n * @param {boolean} [center=false] - Whether to use center-based calculation.\n */\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n /**\n * Gets a value from the span.\n * @param {boolean} [isInt=false] - Whether to return an integer value.\n * @returns {number} A random value from the span.\n */\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object.\n * @param {*|Span} a - The first value or a Span object.\n * @param {*} [b] - The second value.\n * @param {*} [c] - The third value.\n * @returns {Span} A new Span instance.\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter.\n * @param {*|Span} pan - The value or Span to get the value from.\n * @returns {*} The value of Span OR the parameter if it is not a Span.\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"../math/Span\";\n\nexport default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n /** @type {number} */\n x;\n\n /** @type {number} */\n y;\n\n /**\n * Creates a new Vector2D instance.\n * @param {number} [x=0] - The x coordinate.\n * @param {number} [y=0] - The y coordinate.\n */\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n /**\n * Sets the x and y components of this vector.\n * @param {number} x - The x coordinate.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets the x component of this vector.\n * @param {number} x - The x coordinate.\n * @returns {Vector2D} This vector.\n */\n setX(x) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets the y component of this vector.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n\n /**\n * Calculates the gradient (angle) of this vector.\n * @returns {number} The gradient in radians.\n */\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n /**\n * Copies the values of another vector to this one.\n * @param {Vector2D} v - The vector to copy from.\n * @returns {Vector2D} This vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n /**\n * Adds another vector to this one.\n * @param {Vector2D} v - The vector to add.\n * @param {Vector2D} [w] - An optional second vector to add.\n * @returns {Vector2D} This vector.\n */\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n /**\n * Adds scalar values to this vector's components.\n * @param {number} a - Value to add to x.\n * @param {number} b - Value to add to y.\n * @returns {Vector2D} This vector.\n */\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n /**\n * Adds two vectors and sets the result to this vector.\n * @param {Vector2D} a - The first vector to add.\n * @param {Vector2D} b - The second vector to add.\n * @returns {Vector2D} This vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n /**\n * Subtracts another vector from this one.\n * @param {Vector2D} v - The vector to subtract.\n * @param {Vector2D} [w] - An optional second vector to subtract.\n * @returns {Vector2D} This vector.\n */\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n /**\n * Subtracts one vector from another and sets the result to this vector.\n * @param {Vector2D} a - The vector to subtract from.\n * @param {Vector2D} b - The vector to subtract.\n * @returns {Vector2D} This vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n /**\n * Divides this vector by a scalar.\n * @param {number} s - The scalar to divide by.\n * @returns {Vector2D} This vector.\n */\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n /**\n * Multiplies this vector by a scalar.\n * @param {number} s - The scalar to multiply by.\n * @returns {Vector2D} This vector.\n */\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n /**\n * Negates this vector (inverts its direction).\n * @returns {Vector2D} This vector.\n */\n negate() {\n return this.multiplyScalar(-1);\n }\n\n /**\n * Calculates the dot product of this vector with another.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n /**\n * Calculates the squared length of this vector.\n * @returns {number} The squared length.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n /**\n * Calculates the length of this vector.\n * @returns {number} The length.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n /**\n * Normalizes this vector (makes it unit length).\n * @returns {Vector2D} This vector.\n */\n normalize() {\n return this.divideScalar(this.length());\n }\n\n /**\n * Calculates the distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n /**\n * Rotates this vector by an angle.\n * @param {number} tha - The angle to rotate by (in radians).\n * @returns {Vector2D} This vector.\n */\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n /**\n * Calculates the squared distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n /**\n * Linearly interpolates this vector toward another vector.\n * @param {Vector2D} v - The target vector.\n * @param {number} alpha - The interpolation factor (0-1).\n * @returns {Vector2D} This vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n /**\n * Checks if this vector is equal to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {boolean} True if the vectors are equal, false otherwise.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n /**\n * Sets this vector to zero.\n * @returns {Vector2D} This vector.\n */\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n /**\n * Creates a new vector with the same x and y values as this one.\n * @returns {Vector2D} A new Vector2D instance.\n */\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","import Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a particle in a particle system.\n * @class Particle\n */\nexport default class Particle {\n /** @type {string} The unique identifier of the particle */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */\n old = null;\n\n /** @type {object} Custom data associated with the particle */\n data = null;\n\n /** @type {Behaviour[]} Array of behaviours applied to the particle */\n behaviours = null;\n\n /** @type {Vector2D} Current position of the particle */\n p = null;\n\n /** @type {Vector2D} Current velocity of the particle */\n v = null;\n\n /** @type {Vector2D} Current acceleration of the particle */\n a = null;\n\n /** @type {Rgb} Color of the particle */\n rgb = null;\n\n /**\n * Creates a new Particle instance.\n * @param {Object} [conf] Configuration object for the particle\n */\n constructor(conf) {\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n /**\n * Gets the direction of the particle's movement in degrees.\n * @returns {number} The direction in degrees\n */\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n /**\n * Resets the particle to its initial state.\n * @returns {Particle} The particle instance\n */\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n /**\n * Updates the particle's state.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n /**\n * Applies all behaviours attached to the particle.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * Adds a behaviour to the particle.\n * @param {Behaviour} behaviour The behaviour to add\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * Adds multiple behaviours to the particle.\n * @param {Behaviour[]} behaviours An array of behaviours to add\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n /**\n * Removes a specific behaviour from the particle.\n * @param {Behaviour} behaviour The behaviour to remove\n */\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n /**\n * Removes all behaviours from the particle.\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destroys the particle, removing all behaviours and setting it as dead.\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\n/**\n * Represents an ArraySpan, a subclass of Span that works with arrays.\n * @extends Span\n */\nexport default class ArraySpan extends Span {\n /**\n * Creates an instance of ArraySpan.\n * @param {Array|*|any} arr - The array or value to be converted to an array.\n */\n constructor(arr) {\n super();\n this._arr = Util.toArray(arr);\n }\n\n /**\n * Gets a random value from the array.\n * If the value is \"random\" or \"Random\", it returns a random color.\n * @returns {*} A random value from the array or a random color.\n */\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Creates an ArraySpan instance from the given array.\n * If the input is already an ArraySpan instance, it returns the input.\n * @static\n * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance.\n * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy.\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\n/**\n * Rate class for controlling particle emission rate.\n */\nexport default class Rate {\n /**\n * @type {Span}\n * @private\n */\n numPan;\n\n /**\n * @type {Span}\n * @private\n */\n timePan;\n\n /**\n * @type {number}\n * @private\n */\n startTime;\n\n /**\n * @type {number}\n * @private\n */\n nextTime;\n\n /**\n * Creates a new Rate instance.\n * The number of particles per second emission (a [particle]/b [s]).\n * @param {Array|number|Span} [numpan=1] - The number of particles for each emission.\n * @param {Array|number|Span} [timepan=1] - The time interval between each emission.\n * @example\n * // Create a rate of 10-20 particles every 0.1-0.25 seconds\n * new Rate(new Span(10, 20), new Span(0.1, 0.25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n /**\n * Initializes the rate.\n * @private\n */\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n /**\n * Gets the number of particles to emit based on the elapsed time.\n * @param {number} time - The elapsed time since the last update.\n * @returns {number} The number of particles to emit.\n */\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Life class for initializing particle lifetime.\n * @extends Initialize\n */\nexport default class Life extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n lifePan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Life instance.\n * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range.\n * @param {number} [b] - The upper bound of the lifetime range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n /**\n * Initializes the lifetime of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a point zone in a 2D space.\n * @extends Zone\n */\nexport default class PointZone extends Zone {\n /**\n * Creates a new PointZone.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n */\n constructor(x, y) {\n super();\n\n /**\n * The x-coordinate of the point.\n * @type {number}\n */\n this.x = x;\n\n /**\n * The y-coordinate of the point.\n * @type {number}\n */\n this.y = y;\n }\n\n /**\n * Gets the position of the point.\n * @returns {Object} An object representing the position vector.\n */\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n /**\n * This method is not supported for PointZone.\n * @param {Object} particle - The particle object (unused).\n */\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Position class for initializing particle positions.\n * @extends Initialize\n */\nexport default class Position extends Initialize {\n /**\n * @type {PointZone|any}\n * @private\n */\n zone;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Position instance.\n * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n /**\n * Initializes the particle's position.\n * @param {object} target - The particle to initialize.\n * @param {object} target.p - The particle's position object.\n * @param {number} target.p.x - The particle's x coordinate.\n * @param {number} target.p.y - The particle's y coordinate.\n */\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Velocity class for initializing particle velocities.\n * @extends Initialize\n */\nexport default class Velocity extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n rPan;\n\n /**\n * @type {Span}\n * @private\n */\n thaPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Velocity instance.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n /**\n * Resets the velocity parameters.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n /**\n * Normalizes the velocity value.\n * @param {number} vr - The velocity value to normalize.\n * @returns {number} The normalized velocity value.\n * @private\n */\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n /**\n * Initializes the particle's velocity.\n * @param {object} target - The particle to initialize.\n */\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Mass class for initializing particle mass.\n * @extends Initialize\n */\nexport default class Mass extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n massPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Mass instance.\n * @param {number|Span} a - The mass value or the lower bound of the mass range.\n * @param {number} [b] - The upper bound of the mass range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n /**\n * Initializes the mass of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Radius class for initializing particle radius.\n * @extends Initialize\n */\nexport default class Radius extends Initialize {\n /**\n * @type {Span}\n */\n radius;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Radius instance.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n this.name = \"Radius\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n /**\n * Initializes the particle's radius.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Body class for initializing particle bodies.\n * @extends Initialize\n */\nexport default class Body extends Initialize {\n /**\n * @type {ArraySpan}\n * @private\n */\n image;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Body instance.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body.\n * @param {number} [w=20] - The width of the particle body.\n * @param {number} [h] - The height of the particle body. Defaults to the width if not provided.\n */\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n /**\n * Initializes the particle's body.\n * @param {object} particle - The particle to initialize.\n */\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n /**\n * Sets the span value for the image.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value.\n * @returns {ArraySpan} The ArraySpan instance.\n * @private\n */\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\n/**\n * The Behaviour class is the base for the other Behaviour\n * @class\n */\nexport default class Behaviour {\n static id = 0;\n\n /**\n * Create a new Behaviour instance\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's decaying trend, for example ease.easeOutQuart\n */\n constructor(life, easing) {\n /**\n * The behaviour's life\n * @type {number}\n */\n this.life = Util.initValue(life, Infinity);\n\n /**\n * The behaviour's easing function\n * @type {function}\n */\n this.easing = ease.getEasing(easing);\n\n /**\n * The behaviour's current age\n * @type {number}\n */\n this.age = 0;\n\n /**\n * The behaviour's current energy\n * @type {number}\n */\n this.energy = 1;\n\n /**\n * Whether the behaviour is dead\n * @type {boolean}\n */\n this.dead = false;\n\n /**\n * The behaviour's parent emitters\n * @type {Array}\n */\n this.parents = [];\n\n /**\n * The behaviour's unique id\n * @type {string}\n */\n this.id = `Behaviour_${Behaviour.id++}`;\n\n /**\n * The behaviour's name\n * @type {string}\n */\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n * @param {number} [life=Infinity] - This behaviour's new life\n * @param {string} [easing='easeLinear'] - This behaviour's new easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100\n * @param {Proton.Vector2D} force - The force to normalize\n * @returns {Proton.Vector2D} The normalized force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100\n * @param {number} value - The value to normalize\n * @returns {number} The normalized value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for a particle\n * @param {Proton.Particle} particle - The particle to initialize\n */\n initialize(particle) {}\n\n /**\n * Compute the behaviour's life cycle\n * @param {Proton.Particle} particle - The particle to calculate for\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour to a particle\n * @param {Proton.Particle} particle - The particle to apply the behaviour to\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destroy this behaviour\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Attraction behavior for particles.\n * This behaviour makes particles follow a specific target position.\n * @extends Behaviour\n */\nexport default class Attraction extends Behaviour {\n /**\n * Creates an instance of Attraction.\n * @param {Vector2D} targetPosition - The attraction point coordinates.\n * @param {number} [force=100] - The strength of the attraction force.\n * @param {number} [radius=1000] - The radius of influence for the attraction.\n * @param {number} [life=Infinity] - The life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The easing function for this behaviour.\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n /**\n * The target position for attraction.\n * @type {Vector2D}\n */\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n\n /**\n * The radius of influence for the attraction.\n * @type {number}\n */\n this.radius = Util.initValue(radius, 1000);\n\n /**\n * The strength of the attraction force.\n * @type {number}\n */\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n /**\n * The squared radius (for optimization).\n * @type {number}\n */\n this.radiusSq = this.radius * this.radius;\n\n /**\n * The attraction force vector.\n * @type {Vector2D}\n */\n this.attractionForce = new Vector2D();\n\n /**\n * The squared length of the attraction force.\n * @type {number}\n */\n this.lengthSq = 0;\n\n /**\n * The name of the behaviour.\n * @type {string}\n */\n this.name = \"Attraction\";\n }\n\n /**\n * Resets the behaviour's parameters.\n * @param {Vector2D} targetPosition - The new attraction point coordinates.\n * @param {number} [force=100] - The new strength of the attraction force.\n * @param {number} [radius=1000] - The new radius of influence for the attraction.\n * @param {number} [life=Infinity] - The new life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour.\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Alpha behaviour for controlling particle opacity over time.\n * @extends Behaviour\n */\nexport default class Alpha extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Alpha instance.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's alpha values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * Applies the alpha behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Scale behaviour for controlling particle size over time.\n * @extends Behaviour\n */\nexport default class Scale extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Scale instance.\n * @param {number|Span} [a=1] - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} a - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's scale values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Applies the scale behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Rotate behaviour for controlling particle rotation.\n * @extends Behaviour\n */\nexport default class Rotate extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n * @private\n */\n style;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Rotate instance.\n * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {string|number|Span} [a='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the behaviour's parameters for a particle.\n * @param {object} particle - The particle to initialize.\n * @param {number} particle.rotation - The particle's rotation.\n * @param {object} particle.data - The particle's data object.\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {object} particle - The particle to apply the behaviour to.\n * @param {number} time - The integrate time (1/ms).\n * @param {number} index - The particle index.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} [a] the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} [b] the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\n/**\n * The opposite of Attraction - turns the force\n *\n * @class\n * @extends Proton.Attraction\n * @memberof! Proton#\n * @alias Proton.Repulsion\n */\nexport default class Repulsion extends Attraction {\n /**\n * Creates a new Repulsion behaviour instance\n *\n * @constructor\n * @param {Proton.Vector2D} targetPosition - The repulsion point coordinates\n * @param {number} [force=100] - The strength of the repulsion force\n * @param {number} [radius=1000] - The radius of influence for the repulsion\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's easing function\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n /**\n * The strength of the repulsion force\n * @type {number}\n */\n this.force *= -1;\n\n /**\n * The name of the behaviour\n * @type {string}\n */\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @param {Proton.Vector2D} targetPosition - The new repulsion point coordinates\n * @param {number} [force=100] - The new strength of the repulsion force\n * @param {number} [radius=1000] - The new radius of influence for the repulsion\n * @param {number} [life=Infinity] - The new behaviour's life\n * @param {string} [easing='easeLinear'] - The new behaviour's easing function\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number | String} [totalTime] begin emit time;\n * @param {String | boolean} [life] the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n let i = this.particles.length;\n while (i--) this.particles[i].dead = true;\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) this.destroy();\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n const length = this.particles.length;\n let i, particle;\n\n for (i = length - 1; i >= 0; i--) {\n particle = this.particles[i];\n\n // particle update\n particle.update(time, i);\n this.parent.integrator.calculate(particle, time, damping);\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n\n // check dead\n if (particle.dead) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n\n this.parent.pool.expire(particle);\n this.particles.splice(i, 1);\n }\n }\n }\n\n dispatch(event, target) {\n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.stoped) return;\n\n if (this.totalTime === \"none\") {\n this.emitTime += time;\n } else if (this.totalTime === \"once\") {\n let i;\n const length = this.rate.getValue(99999);\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n this.totalTime = \"none\";\n } else {\n this.emitTime += time;\n\n if (this.emitTime < this.totalTime) {\n const length = this.rate.getValue(time);\n let i;\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n }\n }\n }\n\n /**\n * Creates a single particle.\n *\n * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects.\n * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects.\n * @returns {Particle} The created particle.\n *\n */\n createParticle(initialize, behaviour) {\n const particle = this.parent.pool.get(Particle);\n this.setupParticle(particle, initialize, behaviour);\n this.dispatch(\"PARTICLE_CREATED\", particle);\n\n return particle;\n }\n\n /**\n * Sets up a particle with initialization and behavior.\n *\n * @param {Particle} particle - The particle to set up.\n * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects.\n * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects.\n */\n setupParticle(particle, initialize, behaviour) {\n let initializes = this.initializes;\n let behaviours = this.behaviours;\n\n if (initialize) initializes = Util.toArray(initialize);\n if (behaviour) behaviours = Util.toArray(behaviour);\n\n particle.reset();\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n this.particles.push(particle);\n }\n\n /**\n * Removes all particles and stops the emitter.\n */\n remove() {\n this.stop();\n Util.destroyAll(this.particles);\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nlet PIXIClass;\n\n/**\n * Represents a PIXI-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixiRenderer extends BaseRenderer {\n /**\n * Creates a new PixiRenderer instance.\n * @param {PIXI.Container} element - The PIXI container to render to.\n * @param {string|number} [stroke] - The stroke color for particles.\n */\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n if (particle.body) {\n particle.body = this.pool.get(particle.body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n // using cached version of MathUtil.PI_180 for slight performance increase.\n target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n\n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.beginStroke(stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n * @param {Array} particles - The particles to clean up.\n */\n destroy(particles) {\n super.destroy();\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * CanvasRenderer class for rendering particles on a canvas element.\n * @extends BaseRenderer\n */\nexport default class CanvasRenderer extends BaseRenderer {\n /**\n * @type {object|null}\n * @private\n */\n stroke;\n\n /**\n * @type {CanvasRenderingContext2D}\n * @private\n */\n context;\n\n /**\n * @type {object}\n * @private\n */\n bufferCache;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new CanvasRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render on.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n /**\n * Resizes the canvas element.\n * @param {number} width - The new width of the canvas.\n * @param {number} height - The new height of the canvas.\n */\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n /**\n * Clears the canvas on Proton update.\n */\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n /**\n * Handles particle creation.\n * @param {object} particle - The created particle.\n */\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n /**\n * Handles particle updates.\n * @param {object} particle - The updated particle.\n */\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n /**\n * Handles particle destruction.\n * @param {object} particle - The destroyed particle.\n */\n onParticleDead(particle) {\n particle.body = null;\n }\n\n /**\n * Adds an image to the particle body.\n * @param {HTMLImageElement} img - The image to add.\n * @param {object} particle - The particle to add the image to.\n * @private\n */\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n /**\n * Draws an image particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n /**\n * Draws a circular particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n /**\n * Creates a buffer for image particles.\n * @param {HTMLImageElement} image - The image to create a buffer for.\n * @returns {HTMLCanvasElement|undefined} The created buffer canvas.\n * @private\n */\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a DOM-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class DomRenderer extends BaseRenderer {\n /**\n * Creates a new DomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(window.createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(window.createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a pixel-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixelRenderer extends BaseRenderer {\n /**\n * Creates a new PixelRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n * @param {Rectangle} [rectangle] - The rectangle defining the rendering area.\n */\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.element.height) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a WebGL-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class WebGLRenderer extends BaseRenderer {\n /**\n * Creates a new WebGLRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n */\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a custom renderer that extends the BaseRenderer.\n * @extends BaseRenderer\n */\nexport default class CustomRenderer extends BaseRenderer {\n /**\n * Creates a new CustomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n /**\n * The name of the renderer.\n * @type {string}\n */\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\n\n/**\n * Represents a line zone for particle systems.\n * @extends Zone\n */\nexport default class LineZone extends Zone {\n /**\n * Creates a new LineZone.\n * @param {number} x1 - The x-coordinate of the first point.\n * @param {number} y1 - The y-coordinate of the first point.\n * @param {number} [x2] - The x-coordinate of the second point.\n * @param {number} [y2] - The y-coordinate of the second point.\n * @param {string} [direction=\">\"] - The direction of the line.\n */\n constructor(x1, y1, x2, y2, direction = \">\") {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n /**\n * Gets a random position on the line.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n /**\n * Determines which side of the line a point is on.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} True if the point is on the positive side of the line, false otherwise.\n */\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n /**\n * Calculates the distance of a point from the line.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {number} The distance from the point to the line.\n */\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n /**\n * Calculates the symmetric vector of a given vector with respect to the line.\n * @param {Vector2D} v - The vector to reflect.\n * @returns {Vector2D} The reflected vector.\n */\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n /**\n * Gets the gradient (angle) of the line.\n * @returns {number} The gradient of the line in radians.\n */\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n /**\n * Checks if a particle is outside the range of the line.\n * @param {Particle} particle - The particle to check.\n * @returns {boolean} True if the particle is within range, false otherwise.\n */\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n /**\n * Gets the length of the line.\n * @returns {number} The length of the line.\n */\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a circular zone in a 2D space.\n * @extends Zone\n */\nexport default class CircleZone extends Zone {\n /**\n * Creates a new CircleZone.\n * @param {number} x - The x-coordinate of the circle's center.\n * @param {number} y - The y-coordinate of the circle's center.\n * @param {number} [radius] - The radius of the circle.\n */\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n /**\n * Gets a random position within the circle.\n * @returns {Object} An object with x and y coordinates.\n */\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n /**\n * Sets the center of the circle.\n * @param {number} x - The new x-coordinate of the center.\n * @param {number} y - The new y-coordinate of the center.\n */\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n /**\n * Calculates the symmetric position of a particle.\n * @param {Object} particle - The particle to calculate symmetry for.\n */\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n /**\n * Calculates the gradient for a particle.\n * @param {Object} particle - The particle to calculate the gradient for.\n * @returns {number} The calculated gradient.\n */\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a rectangular zone for particle systems.\n * @extends Zone\n */\nexport default class RectZone extends Zone {\n /**\n * Creates a new RectZone.\n * @param {number} x - The x-coordinate of the top-left corner of the rectangle.\n * @param {number} y - The y-coordinate of the top-left corner of the rectangle.\n * @param {number} [width] - The width of the rectangle.\n * @param {number} [height] - The height of the rectangle.\n */\n constructor(x, y, width = 200, height = 200) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Gets a random position within the rectangular zone.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n return this.vector;\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\n/**\n * Represents a zone based on image data.\n * @extends Zone\n */\nexport default class ImageZone extends Zone {\n /**\n * Creates an ImageZone.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n /**\n * Resets the ImageZone with new parameters.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n /**\n * Sets up vectors based on the image data.\n * @returns {Object} The vector object.\n */\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n /**\n * Checks if a point is within the bounds of the image.\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @returns {boolean} True if the point is within bounds, false otherwise.\n */\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n return this.imageData.data[index + 3] > 0;\n }\n\n /**\n * Gets a random position within the image zone.\n * @returns {Object} A vector representing the position.\n */\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n /**\n * Gets the color at a specific point in the image.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} An object containing r, g, b, and a values.\n */\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n particle.dead = this.getBound(particle.p.x - this.x, particle.p.y - this.y);\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n /**\n * Destroys the ImageZone and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n"],"names":["WebGLUtil","length","i","makeTranslation","tx","ty","angleInRadians","c","Math","cos","s","sin","makeScale","sx","sy","matrixMultiply","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","DomUtil","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","this","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","ImgUtil","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","getContext","Util","initValue","value","defaults","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","bind","apply","concat","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","undefined","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","_proto","get","params","p","__puid","pop","createOrClone","expire","getCache","create","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","bg","color","cssText","join","addEventListener","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","INFINITY","Infinity","MathUtil","PIx2","PI_2","PI_180","N180_PI","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","Span","getValue","setSpanValue","getSpanValue","pan","PropUtil","hasProp","setProp","props","prop","setVectorVal","conf","ease","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","ColorUtil","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","multiplyVec2","m","vec","ArraySpan","_Span","_arr","_inheritsLoose","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","_Behaviour","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","_Attraction","GravityWell","centerPoint","distanceVec","distanceSq","factor","InitializeUtil","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","dispatch","event","bindEvent","createParticle","setupParticle","PIXIClass","BehaviourEmitter","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","Types","__isImage","tagName","nodeName","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","_assertThisInitialized","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","PixiRenderer","setColor","blendMode","setPIXI","PIXI","Sprite","createFromImage","from","fromImage","tint","anchor","endFill","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","getFragmentShader","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","min","miny","maxx","maxy","xxyy","getLength","getDistance","getSymmetric","tha2","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","d","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","Debug","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"proton.web.min.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/math/Span.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/emitter/BehaviourEmitter.js","../src/render/PixiRenderer.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number | undefined} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n /**\n * Sets the frames per second (FPS) for the Proton system.\n * @param {number|string} fps - The desired FPS. Use \"auto\" for default behavior, or a number for a specific FPS.\n */\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n /**\n * Gets the current frames per second (FPS) setting.\n * @returns {number|string} The current FPS setting. Returns \"auto\" if set to default, or a number representing the specific FPS.\n */\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a span of values or an array.\n */\nexport default class Span {\n /**\n * @type {boolean}\n * @private\n */\n isArray;\n\n /**\n * @type {number|number[]}\n * @private\n */\n a;\n\n /**\n * @type {number}\n * @private\n */\n b;\n\n /**\n * @type {boolean}\n * @private\n */\n center;\n\n /**\n * Creates a new Span instance.\n * @param {number|number[]} a - The first value or an array of values.\n * @param {number} [b] - The second value (if a is not an array).\n * @param {boolean} [center=false] - Whether to use center-based calculation.\n */\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n /**\n * Gets a value from the span.\n * @param {boolean} [isInt=false] - Whether to return an integer value.\n * @returns {number} A random value from the span.\n */\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object.\n * @param {*|Span} a - The first value or a Span object.\n * @param {*} [b] - The second value.\n * @param {*} [c] - The third value.\n * @returns {Span} A new Span instance.\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter.\n * @param {*|Span} pan - The value or Span to get the value from.\n * @returns {*} The value of Span OR the parameter if it is not a Span.\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"../math/Span\";\n\nexport default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n /** @type {number} */\n x;\n\n /** @type {number} */\n y;\n\n /**\n * Creates a new Vector2D instance.\n * @param {number} [x=0] - The x coordinate.\n * @param {number} [y=0] - The y coordinate.\n */\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n /**\n * Sets the x and y components of this vector.\n * @param {number} x - The x coordinate.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets the x component of this vector.\n * @param {number} x - The x coordinate.\n * @returns {Vector2D} This vector.\n */\n setX(x) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets the y component of this vector.\n * @param {number} y - The y coordinate.\n * @returns {Vector2D} This vector.\n */\n setY(y) {\n this.y = y;\n return this;\n }\n\n /**\n * Calculates the gradient (angle) of this vector.\n * @returns {number} The gradient in radians.\n */\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n /**\n * Copies the values of another vector to this one.\n * @param {Vector2D} v - The vector to copy from.\n * @returns {Vector2D} This vector.\n */\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n /**\n * Adds another vector to this one.\n * @param {Vector2D} v - The vector to add.\n * @param {Vector2D} [w] - An optional second vector to add.\n * @returns {Vector2D} This vector.\n */\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n /**\n * Adds scalar values to this vector's components.\n * @param {number} a - Value to add to x.\n * @param {number} b - Value to add to y.\n * @returns {Vector2D} This vector.\n */\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n /**\n * Adds two vectors and sets the result to this vector.\n * @param {Vector2D} a - The first vector to add.\n * @param {Vector2D} b - The second vector to add.\n * @returns {Vector2D} This vector.\n */\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n /**\n * Subtracts another vector from this one.\n * @param {Vector2D} v - The vector to subtract.\n * @param {Vector2D} [w] - An optional second vector to subtract.\n * @returns {Vector2D} This vector.\n */\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n /**\n * Subtracts one vector from another and sets the result to this vector.\n * @param {Vector2D} a - The vector to subtract from.\n * @param {Vector2D} b - The vector to subtract.\n * @returns {Vector2D} This vector.\n */\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n /**\n * Divides this vector by a scalar.\n * @param {number} s - The scalar to divide by.\n * @returns {Vector2D} This vector.\n */\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n /**\n * Multiplies this vector by a scalar.\n * @param {number} s - The scalar to multiply by.\n * @returns {Vector2D} This vector.\n */\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n /**\n * Negates this vector (inverts its direction).\n * @returns {Vector2D} This vector.\n */\n negate() {\n return this.multiplyScalar(-1);\n }\n\n /**\n * Calculates the dot product of this vector with another.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The dot product.\n */\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n /**\n * Calculates the squared length of this vector.\n * @returns {number} The squared length.\n */\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n /**\n * Calculates the length of this vector.\n * @returns {number} The length.\n */\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n /**\n * Normalizes this vector (makes it unit length).\n * @returns {Vector2D} This vector.\n */\n normalize() {\n return this.divideScalar(this.length());\n }\n\n /**\n * Calculates the distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The distance.\n */\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n /**\n * Rotates this vector by an angle.\n * @param {number} tha - The angle to rotate by (in radians).\n * @returns {Vector2D} This vector.\n */\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n /**\n * Calculates the squared distance to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {number} The squared distance.\n */\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n /**\n * Linearly interpolates this vector toward another vector.\n * @param {Vector2D} v - The target vector.\n * @param {number} alpha - The interpolation factor (0-1).\n * @returns {Vector2D} This vector.\n */\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n /**\n * Checks if this vector is equal to another vector.\n * @param {Vector2D} v - The other vector.\n * @returns {boolean} True if the vectors are equal, false otherwise.\n */\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n /**\n * Sets this vector to zero.\n * @returns {Vector2D} This vector.\n */\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n /**\n * Creates a new vector with the same x and y values as this one.\n * @returns {Vector2D} A new Vector2D instance.\n */\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","import Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a particle in a particle system.\n * @class Particle\n */\nexport default class Particle {\n /** @type {string} The unique identifier of the particle */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} Old state of the particle */\n old = null;\n\n /** @type {object} Custom data associated with the particle */\n data = null;\n\n /** @type {Behaviour[]} Array of behaviours applied to the particle */\n behaviours = null;\n\n /** @type {Vector2D} Current position of the particle */\n p = null;\n\n /** @type {Vector2D} Current velocity of the particle */\n v = null;\n\n /** @type {Vector2D} Current acceleration of the particle */\n a = null;\n\n /** @type {Rgb} Color of the particle */\n rgb = null;\n\n /**\n * Creates a new Particle instance.\n * @param {Object} [conf] Configuration object for the particle\n */\n constructor(conf) {\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n /**\n * Gets the direction of the particle's movement in degrees.\n * @returns {number} The direction in degrees\n */\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n /**\n * Resets the particle to its initial state.\n * @returns {Particle} The particle instance\n */\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n /**\n * Updates the particle's state.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n /**\n * Applies all behaviours attached to the particle.\n * @param {number} time The time elapsed since the last update\n * @param {number} index The index of the particle in its parent system\n */\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * Adds a behaviour to the particle.\n * @param {Behaviour} behaviour The behaviour to add\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * Adds multiple behaviours to the particle.\n * @param {Behaviour[]} behaviours An array of behaviours to add\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n /**\n * Removes a specific behaviour from the particle.\n * @param {Behaviour} behaviour The behaviour to remove\n */\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n /**\n * Removes all behaviours from the particle.\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destroys the particle, removing all behaviours and setting it as dead.\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\n/**\n * Represents an ArraySpan, a subclass of Span that works with arrays.\n * @extends Span\n */\nexport default class ArraySpan extends Span {\n /**\n * Creates an instance of ArraySpan.\n * @param {Array|*|any} arr - The array or value to be converted to an array.\n */\n constructor(arr) {\n super();\n this._arr = Util.toArray(arr);\n }\n\n /**\n * Gets a random value from the array.\n * If the value is \"random\" or \"Random\", it returns a random color.\n * @returns {*} A random value from the array or a random color.\n */\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Creates an ArraySpan instance from the given array.\n * If the input is already an ArraySpan instance, it returns the input.\n * @static\n * @param {Array|ArraySpan|any} arr - The array or ArraySpan instance.\n * @returns {ArraySpan|null} A new ArraySpan instance or null if the input is falsy.\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\n/**\n * Rate class for controlling particle emission rate.\n */\nexport default class Rate {\n /**\n * @type {Span}\n * @private\n */\n numPan;\n\n /**\n * @type {Span}\n * @private\n */\n timePan;\n\n /**\n * @type {number}\n * @private\n */\n startTime;\n\n /**\n * @type {number}\n * @private\n */\n nextTime;\n\n /**\n * Creates a new Rate instance.\n * The number of particles per second emission (a [particle]/b [s]).\n * @param {Array|number|Span} [numpan=1] - The number of particles for each emission.\n * @param {Array|number|Span} [timepan=1] - The time interval between each emission.\n * @example\n * // Create a rate of 10-20 particles every 0.1-0.25 seconds\n * new Rate(new Span(10, 20), new Span(0.1, 0.25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n /**\n * Initializes the rate.\n * @private\n */\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n /**\n * Gets the number of particles to emit based on the elapsed time.\n * @param {number} time - The elapsed time since the last update.\n * @returns {number} The number of particles to emit.\n */\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Life class for initializing particle lifetime.\n * @extends Initialize\n */\nexport default class Life extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n lifePan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Life instance.\n * @param {number|Span} a - The lifetime value or the lower bound of the lifetime range.\n * @param {number} [b] - The upper bound of the lifetime range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n /**\n * Initializes the lifetime of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a point zone in a 2D space.\n * @extends Zone\n */\nexport default class PointZone extends Zone {\n /**\n * Creates a new PointZone.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n */\n constructor(x, y) {\n super();\n\n /**\n * The x-coordinate of the point.\n * @type {number}\n */\n this.x = x;\n\n /**\n * The y-coordinate of the point.\n * @type {number}\n */\n this.y = y;\n }\n\n /**\n * Gets the position of the point.\n * @returns {Object} An object representing the position vector.\n */\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n /**\n * This method is not supported for PointZone.\n * @param {Object} particle - The particle object (unused).\n */\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Position class for initializing particle positions.\n * @extends Initialize\n */\nexport default class Position extends Initialize {\n /**\n * @type {PointZone|any}\n * @private\n */\n zone;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Position instance.\n * @param {PointZone|any} [zone] - The zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {PointZone|any} [zone] - The new zone to use for positioning. Defaults to a new PointZone if not provided.\n */\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n /**\n * Initializes the particle's position.\n * @param {object} target - The particle to initialize.\n * @param {object} target.p - The particle's position object.\n * @param {number} target.p.x - The particle's x coordinate.\n * @param {number} target.p.y - The particle's y coordinate.\n */\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Velocity class for initializing particle velocities.\n * @extends Initialize\n */\nexport default class Velocity extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n rPan;\n\n /**\n * @type {Span}\n * @private\n */\n thaPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Velocity instance.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n /**\n * Resets the velocity parameters.\n * @param {number|Span} [rpan] - The radial component of the velocity or its range.\n * @param {number|Span} [thapan] - The angular component of the velocity or its range.\n * @param {string} [type='vector'] - The type of velocity ('vector' or 'polar').\n */\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n /**\n * Normalizes the velocity value.\n * @param {number} vr - The velocity value to normalize.\n * @returns {number} The normalized velocity value.\n * @private\n */\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n /**\n * Initializes the particle's velocity.\n * @param {object} target - The particle to initialize.\n */\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Mass class for initializing particle mass.\n * @extends Initialize\n */\nexport default class Mass extends Initialize {\n /**\n * @type {Span}\n * @private\n */\n massPan;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Mass instance.\n * @param {number|Span} a - The mass value or the lower bound of the mass range.\n * @param {number} [b] - The upper bound of the mass range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n /**\n * Initializes the mass of a target particle.\n * @param {object} target - The target particle to initialize.\n */\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Radius class for initializing particle radius.\n * @extends Initialize\n */\nexport default class Radius extends Initialize {\n /**\n * @type {Span}\n */\n radius;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Radius instance.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n this.name = \"Radius\";\n }\n\n /**\n * Resets this initializer's parameters.\n * @param {number|Span} a - The radius value or the lower bound of the radius range.\n * @param {number} [b] - The upper bound of the radius range (if a is a number).\n * @param {boolean} [c] - Whether to use center-based calculation (if a and b are numbers).\n */\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n /**\n * Initializes the particle's radius.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\n/**\n * Body class for initializing particle bodies.\n * @extends Initialize\n */\nexport default class Body extends Initialize {\n /**\n * @type {ArraySpan}\n * @private\n */\n image;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Body instance.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to use for the particle body.\n * @param {number} [w=20] - The width of the particle body.\n * @param {number} [h] - The height of the particle body. Defaults to the width if not provided.\n */\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n /**\n * Initializes the particle's body.\n * @param {object} particle - The particle to initialize.\n */\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n /**\n * Sets the span value for the image.\n * @param {string|object|Image|HTMLImageElement|ArraySpan} image - The image source or object to set as span value.\n * @returns {ArraySpan} The ArraySpan instance.\n * @private\n */\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\n/**\n * The Behaviour class is the base for the other Behaviour\n * @class\n */\nexport default class Behaviour {\n static id = 0;\n\n /**\n * Create a new Behaviour instance\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's decaying trend, for example ease.easeOutQuart\n */\n constructor(life, easing) {\n /**\n * The behaviour's life\n * @type {number}\n */\n this.life = Util.initValue(life, Infinity);\n\n /**\n * The behaviour's easing function\n * @type {function}\n */\n this.easing = ease.getEasing(easing);\n\n /**\n * The behaviour's current age\n * @type {number}\n */\n this.age = 0;\n\n /**\n * The behaviour's current energy\n * @type {number}\n */\n this.energy = 1;\n\n /**\n * Whether the behaviour is dead\n * @type {boolean}\n */\n this.dead = false;\n\n /**\n * The behaviour's parent emitters\n * @type {Array}\n */\n this.parents = [];\n\n /**\n * The behaviour's unique id\n * @type {string}\n */\n this.id = `Behaviour_${Behaviour.id++}`;\n\n /**\n * The behaviour's name\n * @type {string}\n */\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n * @param {number} [life=Infinity] - This behaviour's new life\n * @param {string} [easing='easeLinear'] - This behaviour's new easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100\n * @param {Proton.Vector2D} force - The force to normalize\n * @returns {Proton.Vector2D} The normalized force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100\n * @param {number} value - The value to normalize\n * @returns {number} The normalized value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for a particle\n * @param {Proton.Particle} particle - The particle to initialize\n */\n initialize(particle) {}\n\n /**\n * Compute the behaviour's life cycle\n * @param {Proton.Particle} particle - The particle to calculate for\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour to a particle\n * @param {Proton.Particle} particle - The particle to apply the behaviour to\n * @param {number} time - The integrate time 1/ms\n * @param {number} index - The particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destroy this behaviour\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Attraction behavior for particles.\n * This behaviour makes particles follow a specific target position.\n * @extends Behaviour\n */\nexport default class Attraction extends Behaviour {\n /**\n * Creates an instance of Attraction.\n * @param {Vector2D} targetPosition - The attraction point coordinates.\n * @param {number} [force=100] - The strength of the attraction force.\n * @param {number} [radius=1000] - The radius of influence for the attraction.\n * @param {number} [life=Infinity] - The life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The easing function for this behaviour.\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n /**\n * The target position for attraction.\n * @type {Vector2D}\n */\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n\n /**\n * The radius of influence for the attraction.\n * @type {number}\n */\n this.radius = Util.initValue(radius, 1000);\n\n /**\n * The strength of the attraction force.\n * @type {number}\n */\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n /**\n * The squared radius (for optimization).\n * @type {number}\n */\n this.radiusSq = this.radius * this.radius;\n\n /**\n * The attraction force vector.\n * @type {Vector2D}\n */\n this.attractionForce = new Vector2D();\n\n /**\n * The squared length of the attraction force.\n * @type {number}\n */\n this.lengthSq = 0;\n\n /**\n * The name of the behaviour.\n * @type {string}\n */\n this.name = \"Attraction\";\n }\n\n /**\n * Resets the behaviour's parameters.\n * @param {Vector2D} targetPosition - The new attraction point coordinates.\n * @param {number} [force=100] - The new strength of the attraction force.\n * @param {number} [radius=1000] - The new radius of influence for the attraction.\n * @param {number} [life=Infinity] - The new life span of this behaviour.\n * @param {string} [easing='ease.easeLinear'] - The new easing function for this behaviour.\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Alpha behaviour for controlling particle opacity over time.\n * @extends Behaviour\n */\nexport default class Alpha extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Alpha instance.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} [a=1] - The initial alpha value or range.\n * @param {number|Span} [b] - The final alpha value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's alpha values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * Applies the alpha behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Scale behaviour for controlling particle size over time.\n * @extends Behaviour\n */\nexport default class Scale extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Scale instance.\n * @param {number|Span} [a=1] - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {number|Span} a - The initial scale value or range.\n * @param {number|Span} [b] - The final scale value or range. If not provided, it will be the same as 'a'.\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the particle's scale values.\n * @param {Particle} particle - The particle to initialize.\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Applies the scale behaviour to the particle.\n * @param {Particle} particle - The particle to apply the behaviour to.\n * @param {number} time - The current simulation time.\n * @param {number} index - The index of the particle.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\n/**\n * Rotate behaviour for controlling particle rotation.\n * @extends Behaviour\n */\nexport default class Rotate extends Behaviour {\n /**\n * @type {boolean}\n * @private\n */\n same;\n\n /**\n * @type {Span}\n * @private\n */\n a;\n\n /**\n * @type {Span}\n * @private\n */\n b;\n\n /**\n * @type {string}\n * @private\n */\n style;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new Rotate instance.\n * @param {string|number|Span} [influence='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life=Infinity] - This behaviour's life.\n * @param {string} [easing='easeLinear'] - This behaviour's easing function.\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Resets this behaviour's parameters.\n * @param {string|number|Span} [a='Velocity'] - The rotation's influence or initial rotation.\n * @param {string|number|Span} [b] - The final rotation value or range.\n * @param {string} [style='to'] - The style of rotation ('to' or 'add').\n * @param {number} [life] - This behaviour's life.\n * @param {string} [easing] - This behaviour's easing function.\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initializes the behaviour's parameters for a particle.\n * @param {object} particle - The particle to initialize.\n * @param {number} particle.rotation - The particle's rotation.\n * @param {object} particle.data - The particle's data object.\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Applies this behaviour to a particle.\n * @param {object} particle - The particle to apply the behaviour to.\n * @param {number} time - The integrate time (1/ms).\n * @param {number} index - The particle index.\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} [a] the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} [b] the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\n/**\n * The opposite of Attraction - turns the force\n *\n * @class\n * @extends Proton.Attraction\n * @memberof! Proton#\n * @alias Proton.Repulsion\n */\nexport default class Repulsion extends Attraction {\n /**\n * Creates a new Repulsion behaviour instance\n *\n * @constructor\n * @param {Proton.Vector2D} targetPosition - The repulsion point coordinates\n * @param {number} [force=100] - The strength of the repulsion force\n * @param {number} [radius=1000] - The radius of influence for the repulsion\n * @param {number} [life=Infinity] - The behaviour's life\n * @param {string} [easing='easeLinear'] - The behaviour's easing function\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n /**\n * The strength of the repulsion force\n * @type {number}\n */\n this.force *= -1;\n\n /**\n * The name of the behaviour\n * @type {string}\n */\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @param {Proton.Vector2D} targetPosition - The new repulsion point coordinates\n * @param {number} [force=100] - The new strength of the repulsion force\n * @param {number} [radius=1000] - The new radius of influence for the repulsion\n * @param {number} [life=Infinity] - The new behaviour's life\n * @param {string} [easing='easeLinear'] - The new behaviour's easing function\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number | String} [totalTime] begin emit time;\n * @param {String | boolean} [life] the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n const particles = this.particles;\n const len = particles.length;\n \n // Just mark all as dead in a tight loop\n for (let i = 0; i < len; i++) {\n particles[i].dead = true;\n }\n \n // Don't actually remove from array here - that will happen in next integrate() call\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) {\n this.destroy();\n return;\n }\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n // Optimization for 500k particles: Use fast iteration with minimal GC impact\n const particles = this.particles;\n const length = particles.length;\n const parent = this.parent;\n const pool = parent.pool;\n const integrator = parent.integrator;\n const shouldDispatchUpdates = Boolean(this.parent || this.bindEvent);\n \n // Optimization: Use swap-and-pop method for removing dead particles\n // This is much faster than splice for large arrays\n let aliveCount = length;\n let i = 0;\n\n // Single-pass particle update with efficient removal\n while (i < aliveCount) {\n const particle = particles[i];\n \n // Fast update and check for dead particles\n particle.update(time, i);\n integrator.calculate(particle, time, damping);\n \n // Dispatch update events only if needed and not too many particles\n // Skip event dispatching for extremely large particle counts\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n }\n \n // Check if particle is dead\n if (particle.dead) {\n // Dispatch death events only when needed and not too many particles\n if (shouldDispatchUpdates && length < 10000) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n }\n \n // Fast removal: swap with the last alive particle and decrement counter\n // This avoids expensive array splicing\n aliveCount--;\n if (i < aliveCount) {\n // Only swap if this isn't already the last particle\n particles[i] = particles[aliveCount];\n particles[aliveCount] = particle;\n \n // Return to pool\n pool.expire(particle);\n continue; // Don't increment i, process the swapped particle\n } else {\n // Last particle case\n pool.expire(particle);\n }\n }\n i++;\n }\n \n // If we have dead particles at the end, remove them all at once\n if (aliveCount < length) {\n particles.length = aliveCount; // Truncate the array (much faster than multiple splices)\n }\n }\n\n dispatch(event, target) {\n // Optimize by skipping work if no listeners\n if (!this.parent && !this.bindEvent) return;\n \n // For performance with many particles, only dispatch certain events\n if (this.particles && this.particles.length > 50000) {\n // With very large particle counts, only dispatch critical events\n if (event !== \"PARTICLE_CREATED\" && event !== \"PARTICLE_DEAD\") {\n return;\n }\n }\n \n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.stoped) return;\n\n // Maximum particles to emit in a single frame to prevent lag spikes\n const MAX_EMIT_PER_FRAME = 10000;\n\n // Direct property access for performance\n let emitTime = this.emitTime;\n const totalTime = this.totalTime;\n \n if (totalTime === \"none\") {\n this.emitTime = emitTime + time;\n return;\n } \n \n if (totalTime === \"once\") {\n // Fast path for \"once\" emission\n let numToEmit = this.rate.getValue(99999);\n \n // Cap emission count to prevent frame drops\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n // Log warning only in development if trying to emit too many at once\n if (process && process.env && process.env.NODE_ENV === 'development') {\n console.warn(`Attempting to emit ${numToEmit} particles at once, capped to ${MAX_EMIT_PER_FRAME}`);\n }\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n if (numToEmit <= 0) return;\n \n // Cache emission speed and emit particles\n this.emitSpeed = numToEmit;\n \n // Use the optimized method for bulk creation\n this._fastCreateParticles(numToEmit);\n \n // Mark as completed\n this.totalTime = \"none\";\n return;\n }\n \n // Regular emission logic - extreme optimization\n emitTime += time;\n this.emitTime = emitTime;\n \n if (emitTime < totalTime) {\n // Get particle count using rate\n let numToEmit = this.rate.getValue(time);\n \n if (numToEmit <= 0) return;\n \n // Cap emission to prevent lag spikes\n if (numToEmit > MAX_EMIT_PER_FRAME) {\n numToEmit = MAX_EMIT_PER_FRAME;\n }\n \n this.emitSpeed = numToEmit;\n \n // Use fastest particle creation method\n this._fastCreateParticles(numToEmit);\n }\n }\n\n /**\n * Ultra-fast particle creation - no optional parameters, minimal overhead\n * @param {Number} count - Number of particles to create\n * @private\n */\n _fastCreateParticles(count) {\n // Early exit for zero count\n if (count <= 0 || !this.parent) return;\n \n // Direct property access - avoid repeated lookups\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n const initializes = this.initializes;\n const behaviours = this.behaviours;\n \n // Emergency circuit breaker - prevent memory issues when too many particles\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + count > MAX_SAFE_PARTICLES) {\n count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (count <= 0) return; // Already at max capacity\n }\n \n // Use faster bulk retrieval if available\n let particles;\n if (pool.getBulk) {\n // Get multiple particles at once from pool\n particles = pool.getBulk(Particle, count);\n \n // Fast-path batch initialization\n this._initializeParticlesBulk(particles, initializes, behaviours);\n } else {\n // Fast path direct initialization - optimized for huge particle counts\n this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours);\n }\n }\n \n /**\n * High-speed loop for creating many particles\n * @private\n */\n _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) {\n // Pre-calculate array growth to avoid resizing\n const newLength = particlesArr.length + count;\n \n // Handle array growth efficiently for large particle counts\n if (particlesArr.length === 0 && count > 10000) {\n try {\n // Try to preallocate the array with correct capacity\n particlesArr.length = count;\n particlesArr.length = 0; // Reset but keep capacity\n } catch (e) {\n // Ignore if this optimization isn't supported\n }\n }\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // Minimal particle creation loop - optimized for speed\n let i = 0;\n let particle;\n \n // Using while loop (faster than for loop in many JS engines)\n while (i < count) {\n // Get from pool\n particle = pool.get(Particle);\n \n // Fastest possible reset\n particle.reset();\n \n // Direct initialize call with cached values\n InitializeUtil.initialize(this, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = this;\n \n // Push to array\n particlesArr.push(particle);\n \n // Only dispatch if absolutely necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n \n /**\n * Bulk initialization for particles - more efficient for large batches\n * @private\n */\n _initializeParticlesBulk(particles, initializes, behaviours) {\n const count = particles.length;\n const particlesArr = this.particles;\n \n // Cache values for dispatch check\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n \n // One-time binding of this context for the loop\n const emitter = this;\n \n // Bulk initialize particles\n for (let i = 0; i < count; i++) {\n const particle = particles[i];\n \n // Initialize the particle directly\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Set properties\n particle.parent = emitter;\n \n // Add behaviors - use direct array if possible for better performance\n particle.addBehaviours(behaviours);\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Only dispatch if necessary\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n }\n }\n\n /**\n * High-performance batch particle creation for large quantities\n * @param {Number} length - Number of particles to create\n * @param {Object|Array} [initialize] - Initialization parameters\n * @param {Object|Array} [behaviour] - Behavior parameters\n */\n createParticlesBatch(length, initialize, behaviour) {\n // Immediate redirect to fast creation when no custom initializers/behaviors\n if (!initialize && !behaviour) {\n this._fastCreateParticles(length);\n return;\n }\n \n // For huge batches, split into smaller chunks\n const BATCH_SIZE = 5000;\n \n if (length > BATCH_SIZE && length > 10000) {\n // Process in chunks for very large particle counts\n for (let i = 0; i < length; i += BATCH_SIZE) {\n const chunkSize = Math.min(BATCH_SIZE, length - i);\n this._createParticleChunk(chunkSize, initialize, behaviour);\n }\n } else {\n // Process all at once for smaller batches\n this._createParticleChunk(length, initialize, behaviour);\n }\n }\n \n /**\n * Internal method to create a chunk of particles\n * @private\n */\n _createParticleChunk(length, initialize, behaviour) {\n // Early exit for zero particles\n if (length <= 0) return;\n \n // Cache values for reuse\n const parent = this.parent;\n const pool = parent.pool;\n const particlesArr = this.particles;\n \n // Check if we'd exceed max safe count\n const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max\n if (particlesArr.length + length > MAX_SAFE_PARTICLES) {\n length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length);\n if (length <= 0) return;\n }\n \n // Only calculate this once outside the loop\n const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000;\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Pre-bind functions and cache properties for the loop\n const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null;\n const emitter = this;\n \n // Pre-allocate capacity if possible\n if (Array.prototype.reserve) {\n const newCapacity = particlesArr.length + length;\n if (particlesArr.capacity < newCapacity) {\n particlesArr.reserve(newCapacity);\n }\n }\n \n // Creation loop - unrolled for performance\n let i = 0;\n let particle;\n \n // Fast loop with minimal overhead\n while (i < length) {\n particle = pool.get(Particle);\n \n // Fastest reset possible\n particle.reset();\n \n // Initialize using cached values\n InitializeUtil.initialize(emitter, particle, initializes);\n \n // Add behaviors\n particle.addBehaviours(behaviours);\n particle.parent = emitter;\n \n // Add to particles array\n particlesArr.push(particle);\n \n // Dispatch only if needed\n if (dispatchFn) {\n dispatchFn(\"PARTICLE_CREATED\", particle);\n }\n \n i++;\n }\n }\n\n /**\n * Creates a single particle - now optimized for performance\n * but batch methods should be preferred for multiple particles\n */\n createParticle(initialize, behaviour) {\n // Fast path when we have a parent\n if (!this.parent) return null;\n \n const particle = this.parent.pool.get(Particle);\n \n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize and add behaviors\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array - directly push to avoid function call\n this.particles.push(particle);\n \n // Only dispatch if needed and not too many particles\n if ((this.parent || this.bindEvent) && this.particles.length < 10000) {\n this.dispatch(\"PARTICLE_CREATED\", particle);\n }\n\n return particle;\n }\n\n /**\n * Sets up a particle with initialization and behavior.\n * @deprecated Use direct methods instead for better performance\n */\n setupParticle(particle, initialize, behaviour) {\n // Direct setup\n particle.reset();\n \n // Handle initializes/behaviors\n const initializes = initialize ? Util.toArray(initialize) : this.initializes;\n const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours;\n \n // Initialize\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n // Add to array\n this.particles.push(particle);\n }\n\n /**\n * Removes all particles and stops the emitter.\n */\n remove() {\n this.stop();\n \n // More efficient particle cleanup\n const particles = this.particles;\n const len = particles.length;\n \n // Return all particles to pool\n if (this.parent && this.parent.pool) {\n const pool = this.parent.pool;\n for (let i = 0; i < len; i++) {\n pool.expire(particles[i]);\n }\n }\n \n // Clear array in one operation\n particles.length = 0;\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\nimport Pool from \"../core/Pool\";\n\nlet PIXIClass;\n\n// Counter to generate unique IDs for each renderer instance\nlet rendererIdCounter = 0;\n\n/**\n * A specialized pool that ensures particles are never shared between different emitters\n */\nclass EmitterAwarePool extends Pool {\n constructor() {\n super();\n // Store pools by emitter ID to ensure separation\n this.emitterPools = new Map();\n }\n\n /**\n * Get an item from the pool, ensuring it's specific to the emitter\n */\n get(target, params, emitterId) {\n // Ensure we have a valid emitter ID\n emitterId = emitterId || (params && params.parent && params.parent.id) || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n const emitterPool = this.emitterPools.get(emitterId);\n \n // Get from the emitter-specific pool or create new\n let p;\n if (emitterPool.length > 0) {\n p = emitterPool.pop();\n } else {\n p = this.createOrClone(target, params);\n // Tag with emitter ID for tracking\n p.__emitterId = emitterId;\n }\n \n return p;\n }\n\n /**\n * Return an item to its emitter-specific pool\n */\n expire(target, emitterId) {\n if (!emitterId && target.__emitterId) {\n emitterId = target.__emitterId;\n }\n \n // Default to the general pool if no emitter ID is found\n emitterId = emitterId || 'default';\n \n // Get or create the emitter-specific pool\n if (!this.emitterPools.has(emitterId)) {\n this.emitterPools.set(emitterId, []);\n }\n \n // Return to the emitter-specific pool\n return this.emitterPools.get(emitterId).push(target);\n }\n\n /**\n * Clean up all pools\n */\n destroy() {\n super.destroy();\n \n // Clear all emitter-specific pools\n this.emitterPools.forEach(pool => {\n pool.length = 0;\n });\n \n this.emitterPools.clear();\n this.emitterPools = null;\n }\n}\n\n/**\n * Represents a PIXI-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixiRenderer extends BaseRenderer {\n /**\n * Creates a new PixiRenderer instance.\n * @param {PIXI.Container} element - The PIXI container to render to.\n * @param {string|number} [stroke] - The stroke color for particles.\n */\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n \n // Assign a unique ID to this renderer instance\n this.rendererId = ++rendererIdCounter;\n \n // Create a new emitter-aware pool for this renderer\n this.pixiPool = new EmitterAwarePool();\n this.pixiPool.create = (body, particle) => this.createBody(body, particle);\n \n // Track emitters and their particles\n this.emitterMap = new Map();\n \n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n onEmitterAdded(emitter) {\n // Add emitter to tracking map\n if (!this.emitterMap.has(emitter.id)) {\n this.emitterMap.set(emitter.id, new Set());\n }\n }\n\n onEmitterRemoved(emitter) {\n // Clean up emitter's tracked particles\n if (this.emitterMap.has(emitter.id)) {\n this.emitterMap.delete(emitter.id);\n }\n }\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n // Get the emitter ID for this particle and store it directly on the particle\n const emitterId = particle.parent ? particle.parent.id : 'orphaned';\n \n // Store emitter ID directly on the particle for when parent reference is lost\n particle.__emitterId = emitterId;\n \n if (particle.body) {\n particle.body = this.pixiPool.get(particle.body, particle, emitterId);\n } else {\n particle.body = this.pixiPool.get(this.circleConf, particle, emitterId);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n // Track this particle with its emitter\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).add(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n if (!particle.body) return;\n \n this.element.removeChild(particle.body);\n \n // Use the cached emitter ID instead of accessing parent which might be null\n const emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned');\n \n // Return to the emitter-specific pool\n this.pixiPool.expire(particle.body, emitterId);\n \n // Remove from tracked particles\n if (this.emitterMap.has(emitterId)) {\n this.emitterMap.get(emitterId).delete(particle);\n }\n \n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n target.rotation = particle.rotation * MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.set(0.5, 0.5);\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n \n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.lineStyle(1, stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n * @param {Array} particles - The particles to clean up.\n */\n destroy(particles) {\n super.destroy();\n\n // Clean up tracking maps\n this.emitterMap.clear();\n this.emitterMap = null;\n\n // Clean up the instance-specific particle pool\n this.pixiPool.destroy();\n this.pixiPool = null;\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n particle.body.destroy({ children: true });\n }\n }\n }\n}","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * CanvasRenderer class for rendering particles on a canvas element.\n * @extends BaseRenderer\n */\nexport default class CanvasRenderer extends BaseRenderer {\n /**\n * @type {object|null}\n * @private\n */\n stroke;\n\n /**\n * @type {CanvasRenderingContext2D}\n * @private\n */\n context;\n\n /**\n * @type {object}\n * @private\n */\n bufferCache;\n\n /**\n * @type {string}\n */\n name;\n\n /**\n * Creates a new CanvasRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render on.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n /**\n * Resizes the canvas element.\n * @param {number} width - The new width of the canvas.\n * @param {number} height - The new height of the canvas.\n */\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n /**\n * Clears the canvas on Proton update.\n */\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n /**\n * Handles particle creation.\n * @param {object} particle - The created particle.\n */\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n /**\n * Handles particle updates.\n * @param {object} particle - The updated particle.\n */\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n /**\n * Handles particle destruction.\n * @param {object} particle - The destroyed particle.\n */\n onParticleDead(particle) {\n particle.body = null;\n }\n\n /**\n * Adds an image to the particle body.\n * @param {HTMLImageElement} img - The image to add.\n * @param {object} particle - The particle to add the image to.\n * @private\n */\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n /**\n * Draws an image particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n /**\n * Draws a circular particle.\n * @param {object} particle - The particle to draw.\n * @private\n */\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n /**\n * Creates a buffer for image particles.\n * @param {HTMLImageElement} image - The image to create a buffer for.\n * @returns {HTMLCanvasElement|undefined} The created buffer canvas.\n * @private\n */\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a DOM-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class DomRenderer extends BaseRenderer {\n /**\n * Creates a new DomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(window.createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(window.createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a pixel-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class PixelRenderer extends BaseRenderer {\n /**\n * Creates a new PixelRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n * @param {Rectangle} [rectangle] - The rectangle defining the rendering area.\n */\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.element.height) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n /**\n * Destroys the renderer and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a WebGL-based renderer for particle systems.\n * @extends BaseRenderer\n */\nexport default class WebGLRenderer extends BaseRenderer {\n /**\n * Creates a new WebGLRenderer instance.\n * @param {HTMLCanvasElement} element - The canvas element to render to.\n */\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\n/**\n * Represents a custom renderer that extends the BaseRenderer.\n * @extends BaseRenderer\n */\nexport default class CustomRenderer extends BaseRenderer {\n /**\n * Creates a new CustomRenderer instance.\n * @param {HTMLElement} element - The HTML element to render to.\n */\n constructor(element) {\n super(element);\n\n /**\n * The name of the renderer.\n * @type {string}\n */\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\n\n/**\n * Represents a line zone for particle systems.\n * @extends Zone\n */\nexport default class LineZone extends Zone {\n /**\n * Creates a new LineZone.\n * @param {number} x1 - The x-coordinate of the first point.\n * @param {number} y1 - The y-coordinate of the first point.\n * @param {number} [x2] - The x-coordinate of the second point.\n * @param {number} [y2] - The y-coordinate of the second point.\n * @param {string} [direction=\">\"] - The direction of the line.\n */\n constructor(x1, y1, x2, y2, direction = \">\") {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n /**\n * Gets a random position on the line.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n /**\n * Determines which side of the line a point is on.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} True if the point is on the positive side of the line, false otherwise.\n */\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n /**\n * Calculates the distance of a point from the line.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {number} The distance from the point to the line.\n */\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n /**\n * Calculates the symmetric vector of a given vector with respect to the line.\n * @param {Vector2D} v - The vector to reflect.\n * @returns {Vector2D} The reflected vector.\n */\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n /**\n * Gets the gradient (angle) of the line.\n * @returns {number} The gradient of the line in radians.\n */\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n /**\n * Checks if a particle is outside the range of the line.\n * @param {Particle} particle - The particle to check.\n * @returns {boolean} True if the particle is within range, false otherwise.\n */\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n /**\n * Gets the length of the line.\n * @returns {number} The length of the line.\n */\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\n/**\n * Represents a circular zone in a 2D space.\n * @extends Zone\n */\nexport default class CircleZone extends Zone {\n /**\n * Creates a new CircleZone.\n * @param {number} x - The x-coordinate of the circle's center.\n * @param {number} y - The y-coordinate of the circle's center.\n * @param {number} [radius] - The radius of the circle.\n */\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n /**\n * Gets a random position within the circle.\n * @returns {Object} An object with x and y coordinates.\n */\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n /**\n * Sets the center of the circle.\n * @param {number} x - The new x-coordinate of the center.\n * @param {number} y - The new y-coordinate of the center.\n */\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n /**\n * Calculates the symmetric position of a particle.\n * @param {Object} particle - The particle to calculate symmetry for.\n */\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n /**\n * Calculates the gradient for a particle.\n * @param {Object} particle - The particle to calculate the gradient for.\n * @returns {number} The calculated gradient.\n */\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\n/**\n * Represents a rectangular zone for particle systems.\n * @extends Zone\n */\nexport default class RectZone extends Zone {\n /**\n * Creates a new RectZone.\n * @param {number} x - The x-coordinate of the top-left corner of the rectangle.\n * @param {number} y - The y-coordinate of the top-left corner of the rectangle.\n * @param {number} [width] - The width of the rectangle.\n * @param {number} [height] - The height of the rectangle.\n */\n constructor(x, y, width = 200, height = 200) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Gets a random position within the rectangular zone.\n * @returns {Vector2D} A vector representing the random position.\n */\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n return this.vector;\n }\n\n /**\n * Handles particle crossing behavior based on the crossType.\n * @param {Particle} particle - The particle to check for crossing.\n */\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\n/**\n * Represents a zone based on image data.\n * @extends Zone\n */\nexport default class ImageZone extends Zone {\n /**\n * Creates an ImageZone.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n /**\n * Resets the ImageZone with new parameters.\n * @param {ImageData} imageData - The image data to use for the zone.\n * @param {number} [x=0] - The x-coordinate offset.\n * @param {number} [y=0] - The y-coordinate offset.\n * @param {number} [d=2] - The sampling density.\n */\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n /**\n * Sets up vectors based on the image data.\n * @returns {Object} The vector object.\n */\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n /**\n * Checks if a point is within the bounds of the image.\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @returns {boolean} True if the point is within bounds, false otherwise.\n */\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n return this.imageData.data[index + 3] > 0;\n }\n\n /**\n * Gets a random position within the image zone.\n * @returns {Object} A vector representing the position.\n */\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n /**\n * Gets the color at a specific point in the image.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} An object containing r, g, b, and a values.\n */\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n /**\n * Handles particle crossing behavior.\n * @param {Object} particle - The particle to check for crossing.\n */\n crossing(particle) {\n if (this.crossType === \"dead\") {\n particle.dead = this.getBound(particle.p.x - this.x, particle.p.y - this.y);\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n /**\n * Destroys the ImageZone and cleans up resources.\n */\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n"],"names":["WebGLUtil","nhpot","length","i","tx","ty","makeRotation","angleInRadians","c","Math","cos","s","sin","sx","sy","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","DomUtil","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","this","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","ImgUtil","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","getContext","Util","initValue","value","defaults","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","bind","apply","concat","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","undefined","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","_proto","get","params","p","__puid","pop","createOrClone","expire","getCache","create","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","bg","color","cssText","join","addEventListener","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","INFINITY","Infinity","MathUtil","PIx2","PI_2","PI_180","N180_PI","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","Span","getValue","setSpanValue","getSpanValue","pan","PropUtil","hasProp","setProp","props","prop","setVectorVal","conf","ease","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","ColorUtil","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","multiplyVec2","m","vec","ArraySpan","_Span","_arr","_inheritsLoose","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","_Behaviour","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","_Attraction","GravityWell","centerPoint","distanceVec","distanceSq","factor","InitializeUtil","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","len","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","shouldDispatchUpdates","Boolean","bindEvent","aliveCount","dispatch","event","MAX_EMIT_PER_FRAME","numToEmit","process","env","NODE_ENV","warn","_fastCreateParticles","particlesArr","MAX_SAFE_PARTICLES","getBulk","_initializeParticlesBulk","_createParticlesLoop","dispatchFn","createParticlesBatch","BATCH_SIZE","chunkSize","min","_createParticleChunk","shouldDispatch","reserve","newCapacity","capacity","createParticle","setupParticle","PIXIClass","BehaviourEmitter","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","Types","isImage","__isImage","tagName","nodeName","isString","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","rendererIdCounter","EmitterAwarePool","_Pool","emitterPools","Map","emitterId","has","emitterPool","__emitterId","forEach","PixiRenderer","setColor","blendMode","rendererId","pixiPool","emitterMap","setPIXI","PIXI","_proto2","Sprite","createFromImage","from","Set","delete","tint","anchor","lineStyle","endFill","children","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","getFragmentShader","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","miny","maxx","maxy","xxyy","getLength","getDistance","getSymmetric","tha2","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","d","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","Debug","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter"],"mappings":"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A,CAAA,CAAA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,gBACA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACAvhB,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAERxC,CAED8iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,WACE1oB,CAAKupB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,IAAIrB,CAClBloB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKqpB,CAAO1U,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKtO,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,CAAA,CAAG,EAAG,CACnDrG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKspB,CAAO3U,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKtO,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAS,CAAG,CAAA,CAAA,CAAG,EAAG,CAAS,CAAA,CAAA,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAC7DrG,CAAK4pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiB,IACvBhkB,CAEDkjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,SAAce,CACZ7pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGQ,CAAc9oB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGuB,CAAAA,CAAAA,CAAAA,CAAAA,EAC/BjkB,CAAAA,CAAAA,CAEDojB,UAAA,CAAUa,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGC,GACX9pB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGU,UAAUhpB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGuB,CAAI7pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGwB,CAAAA,CAAAA,CAAAA,CAAAA,GACvClkB,CAEDmkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAUzB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIjhB,CAAK2iB,CAAAA,CAAAA,CAAAA,CACjB,IAAMC,CAASD,CAAAA,CAAAA,CAAK1B,CAAG4B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa5B,CAAG6B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB7B,EAAG4B,CAAa5B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG8B,eAK7E,CAHA9B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG+B,aAAaJ,CAAQ5iB,CAAAA,CAAAA,CAAAA,CACxBihB,CAAGgC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcL,CAEZ3B,CAAAA,CAAAA,CAAAA,CAAGiC,mBAAmBN,CAAQ3B,CAAAA,CAAAA,CAAGkC,gBAK/BP,CAJLpT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMyR,EAAGmC,CAAiBR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnB,OAIVrkB,CAEDgjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,WACE,CAAM8B,CAAAA,CAAAA,CAAAA,CAAAA,CAAiB1qB,KAAK+pB,CAAU/pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAItoB,CAAK2pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAqB,CACnEgB,CAAAA,CAAAA,CAAAA,CAAe3qB,CAAK+pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU/pB,KAAKsoB,CAAItoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0pB,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAErE1pB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW5qB,KAAKsoB,CAAGuC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxB7qB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwC,CAAa9qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAAUD,CACpC3qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGwC,CAAa9qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAAUF,CACpC1qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGyC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY/qB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEpB5qB,KAAKsoB,CAAG0C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoBhrB,KAAK4qB,CAAU5qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAG2C,CAAcpU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAE5E7W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAG4C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWlrB,KAAK4qB,CACxB5qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAASO,CAAMnrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAG8C,CAAkBprB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC7D5qB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASS,IAAMrrB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG8C,CAAkBprB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC7D5qB,KAAKsoB,CAAGgD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAwBtrB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASS,CAC9CrrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGgD,CAAwBtrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAASO,CAE9CnrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAASW,CAAcvrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGkD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBxrB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,QACtE5qB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASa,CAAiBzrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGkD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBxrB,KAAK4qB,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACzE5qB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASc,CAAS1rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGkD,CAAmBxrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAAU,CACjE5qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAAS1iB,CAAQlI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGkD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBxrB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,UAChE5qB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGqD,CAAU3rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,CAASc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,GACzC9lB,CAAAA,CAAAA,CAEDijB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,CACI+C,CAAAA,CAAAA,CAAAA,CAAAA,CAMAvuB,EAJJ2C,CAAK6rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc7rB,KAAKsoB,CAAG/E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC3BvjB,KAAKsoB,CAAGwD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW9rB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGyD,CAAsB/rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK6rB,aACtD7rB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG0D,WAAWhsB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGyD,qBAAsB,CAAIE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAL1C,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAK2CjsB,KAAKsoB,CAAG4D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAG9E,IAAIC,CAAM,CAAA,CAAA,CAAA,CACV,CAAK9uB,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAKA,CAAK8uB,CAAAA,CAAAA,CAAAA,CAAAA,CAAI1oB,CAAKpG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAQnC,CAPAuuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,IAAIK,CAAYE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEtBnsB,CAAKosB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUpsB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG/E,eACvBvjB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwD,WAAW9rB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGyD,qBAAsB/rB,CAAKosB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtDpsB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG0D,CAAWhsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGyD,CAAsBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK5rB,KAAKsoB,CAAG4D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAE9DC,EAAM,CACD9uB,CAAAA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAKA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK8uB,EAAI1oB,CAAKpG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGA,EAAI,CAAGA,CAAAA,CAAAA,CAAI,GACjDuuB,CAAM,CAAA,CAAA,CAAA,CAAA,CAAIK,CAAYE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEtBnsB,CAAKqsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcrsB,KAAKsoB,CAAG/E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC3BvjB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwD,CAAW9rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGyD,CAAsB/rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKqsB,CACtDrsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAG0D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWhsB,KAAKsoB,CAAGyD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAsBH,EAAK5rB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG4D,aAC/DtmB,CAAAA,CAAAA,CAED+e,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa2H,CACXtsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKusB,mBAAqBrvB,CAAgBuF,CAAAA,CAAAA,CAAKC,UAAU4pB,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CACjE,IAAM/pB,CAASlD,CAAAA,CAAAA,CAAQC,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2C,CAA1BU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKusB,mBAAkD,CAA1BvsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKusB,oBACjF/qB,CAAUe,CAAAA,CAAAA,CAAOC,WAAW,CAQlC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CANAhB,CAAQwiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACRxiB,CAAQyiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAIjkB,KAAKusB,CAAoBvsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKusB,CAAoBvsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKusB,CAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,EAAV5uB,CAAK4L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CACvG/H,CAAAA,CAAAA,CAAAA,CAAQ4iB,CACR5iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQmiB,UAAY,CACpBniB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ6iB,OAED9hB,CAAOiqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GACf5mB,CAED6mB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAerhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACb,CAAMshB,CAAAA,CAAAA,CAAAA,CAAAA,CAAKthB,EAASrE,CAAKvH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnBmtB,CAAKvhB,CAAAA,CAAAA,CAASrE,CAAKtH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEnBmtB,EAAS1vB,CAAgBkO,CAAAA,CAAAA,CAASrE,CAAKvH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvCqtB,CAAU3vB,CAAAA,CAAAA,CAAgBkO,EAASrE,CAAKtH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAExCqtB,EAAU1hB,CAASrE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKvH,MAAQotB,CAChCG,CAAAA,CAAAA,CAAU3hB,CAASrE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKtH,CAASotB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAElC7sB,KAAK4pB,CAAexe,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASiH,CAAKnQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACrClC,CAAK4pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAexe,EAASiH,CAAKnQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CACvClC,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAG0E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACRhtB,KAAKsoB,CAAG/E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACRvjB,KAAKsoB,CAAG/E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAGZnY,EAASiH,CAAK4a,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUjtB,CAAK4pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAexe,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKnQ,KAAK,CAC/DkJ,CAAAA,CAAAA,CAAAA,CAASiH,KAAK6a,CAAWltB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4pB,eAAexe,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKnQ,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAChEkJ,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK8a,SAAWntB,CAAK4pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAexe,EAASiH,CAAKnQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,GAEhElC,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwD,CAAW9rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAG8E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAchiB,EAASiH,CAAK8a,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvDntB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG0D,CACNhsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAG8E,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAItY,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAK,CAAA,CAAA,CAAKgY,EAAS,CAAK,CAAA,CAAA,CAAKC,EAASA,CAASA,CAAAA,CAAAA,CAAAA,CAAAA,CACjE/sB,KAAKsoB,CAAG4D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEVlsB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwD,CAAW9rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAG8E,CAAchiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASiH,KAAK6a,CACvDltB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAG0D,CACNhsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAG8E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACR,CAAItY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAC,CAAK,CAAA,CAAA,CAAK4X,EAAI,CAAK,CAAA,CAAA,CAAKC,EAAID,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAClD3sB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG4D,CAGV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACM7Z,EADUjH,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK9P,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAC3BX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,EAAG,CAAG+qB,CAAAA,CAAAA,CAAQC,CAEhD7sB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAG+E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYrtB,KAAKsoB,CAAGgF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYliB,EAASiH,CAAK4a,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtDjtB,KAAKsoB,CAAGiF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWvtB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGgF,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAGttB,KAAKsoB,CAAGkF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMxtB,KAAKsoB,CAAGkF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMxtB,KAAKsoB,CAAGmF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAepb,CAC7FrS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGoF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc1tB,KAAKsoB,CAAGgF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYttB,KAAKsoB,CAAGqF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoB3tB,KAAKsoB,CAAGsF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9E5tB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGoF,CAAc1tB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,GAAGgF,CAAYttB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGuF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoB7tB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwF,uBAC9E9tB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGyF,CAAe/tB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGgF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAE/BliB,EAASiH,CAAK2b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,EAC9B5iB,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4b,aAAevB,CAC7BthB,CAAAA,CAAAA,CAASiH,CAAK6b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBvB,GAC/B/mB,EAEDwc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAGCxc,CAAAA,CAAAA,CAEDgd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkBxX,GAChBA,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK2b,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC9B5iB,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK8b,KAAOxZ,CAAKtO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC1B+E,EAASiH,CAAK8b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,GAAK,CACxB/iB,CAAAA,CAAAA,CAASiH,CAAK+b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOzZ,CAAKtO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC1B+E,EAASiH,CAAK+b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAK,CAAA,CAAA,CAAA,CAEpBhjB,CAASrE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACXxF,EAAwB6J,CAASrE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM/G,CAAKojB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAahY,CAEzD7J,CAAAA,CAAAA,CAAAA,CAAAA,CAAwBvB,KAAKypB,CAAiBzpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKojB,YAAahY,CAChEA,CAAAA,CAAAA,CAAAA,CAASiH,KAAKgc,CAAWjjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASyH,CAAS7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKusB,CAEpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA3mB,EACAwd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAYrhB,EAAKqJ,CACXA,CAAAA,CAAAA,CAAAA,CAASsH,OACbtH,CAASrE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOhF,CAChBqJ,CAAAA,CAAAA,CAASiH,CAAKnQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMH,EAAIG,CACxBkJ,CAAAA,CAAAA,CAAAA,CAAAA,CAASiH,KAAK9P,CAAShB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA2BQ,GAClDqJ,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKgc,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEzBruB,CAAKysB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAerhB,IACrBxF,CAAAA,CAAAA,CAEDkd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB1X,CACXA,CAAAA,CAAAA,CAAAA,CAASiH,KAAK2b,CAChBhuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsuB,CAAaljB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAElBpL,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGiG,UAAUvuB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS1iB,MAAOkD,CAASkH,CAAAA,CAAAA,CAAAA,CAAAA,CAAIjE,EAAI,CAAKjD,CAAAA,CAAAA,CAAAA,CAAAA,CAASkH,CAAIhE,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,CAAKlD,CAAAA,CAAAA,CAAAA,CAAAA,CAASkH,IAAIpU,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CACpG8B,KAAKsoB,CAAGkG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiBxuB,KAAK4qB,CAASW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAOvrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKupB,CAAOnB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEvEpoB,KAAKsoB,CAAGwD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW9rB,KAAKsoB,CAAG8E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAchiB,EAASiH,CAAK6a,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvDltB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGmG,CAAoBzuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4qB,SAASO,CAAK,CAAA,CAAA,CAAA,CAAA,CAAGnrB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGoG,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAG,CAC3E1uB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGwD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW9rB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG8E,aAAchiB,CAASiH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK8a,UACvDntB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGmG,oBAAoBzuB,CAAK4qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASS,CAAK,CAAA,CAAA,CAAA,CAAA,CAAGrrB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGoG,OAAO,CAAO,CAAA,CAAA,CAAG,GAC3E1uB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG+E,YAAYrtB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGgF,CAAYliB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASiH,CAAK4a,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtDjtB,KAAKsoB,CAAGqD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU3rB,KAAK4qB,CAASa,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,GAChDzrB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGwD,CAAW9rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGyD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAsB/rB,KAAK6rB,CAEtD7rB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGqG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa3uB,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGsG,UAAW,CAAG5uB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsoB,CAAGuG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CACnE7uB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKupB,OAAOtjB,QAEfL,EAEDod,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe5X,GAAU,CAAExF,CAAAA,CAAAA,CAE3B0oB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAaljB,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM0jB,EAAmB5xB,CACtBkO,CAAAA,CAAAA,CAAAA,CAASiH,CAAK4b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,CAC7B7iB,CAAAA,CAAAA,CAAAA,CAASiH,KAAK6b,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAE3Ba,CAAoB7xB,CAAAA,CAAAA,CAA0BkO,CAASrF,CAAAA,CAAAA,CAAExF,EAAG6K,CAASrF,CAAAA,CAAAA,CAAEvF,GAEvEwuB,CAAQ5jB,CAAAA,CAAAA,CAAS0H,SAAWpJ,CAASG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACrColB,CAAiB/xB,CAAAA,CAAAA,CAAuB8xB,CAExCvuB,CAAAA,CAAAA,CAAAA,CAAQ2K,EAAS3K,CAAQ2K,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASiH,CAAKgc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvCa,CAAchyB,CAAAA,CAAAA,CAAoBuD,EAAOA,CAC3C0uB,CAAAA,CAAAA,CAAAA,CAASjyB,CAAyB4xB,CAAAA,CAAAA,CAAkBI,CAExDC,CAAAA,CAAAA,CAAAA,CAASjyB,EAAyBiyB,CAAQF,CAAAA,CAAAA,CAAAA,CAC1CE,EAASjyB,CAAyBiyB,CAAAA,CAAAA,CAAQJ,GAE1Cpa,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQia,CAAQ/jB,CAAAA,CAAAA,CAASiH,CAAK+b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnCe,EAAO,CAAK/jB,CAAAA,CAAAA,CAAAA,CAAS8G,MAErBlS,CAAKupB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO9lB,KAAK0rB,IAClBvpB,CAEDpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CACE0e,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAngB,UAAMyB,CAAOvB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAjD,MACbA,CAAKsoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,KACVtoB,CAAKupB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CACdvpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKqpB,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACZrpB,KAAKspB,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACZtpB,CAAK4pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiB,MACvBvB,CAAA,EApTwCzG,CCRtBwN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAclM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAKjC,SAAAkM,CAAYvN,CAAAA,CAAAA,CAAAA,CAAS,IAAA7Z,CAOU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAN7BA,EAAAkb,CAAAjgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAjD,CAAM6hB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ7hB,CAMT4H,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,iBAAiBI,CAC/B,CAAC,OAAAyN,CAAA2Z,CAAAA,CAAAA,CAAAlM,GAAAkM,CAAA,EAbyCxN,CAAAA,CAAAA,CAAAA,CCGvByN,YAAQpY,GAS3B,CAAAoY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYC,EAAIC,CAAIC,CAAAA,CAAAA,CAAIC,EAAIC,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA1nB,CA4BK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CA5Bb,CAAT0nB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAY,CACtC1nB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAiP,CAAAhU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOjD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEHwvB,EAAKF,CAAM,CAAA,CAAA,CAAA,CAAA,CACbtnB,CAAKsnB,CAAAA,CAAAA,CAAAA,CAAKA,CACVtnB,CAAAA,CAAAA,CAAKunB,GAAKA,CACVvnB,CAAAA,CAAAA,CAAKwnB,GAAKA,CACVxnB,CAAAA,CAAAA,CAAKynB,GAAKA,CAEVznB,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsnB,CAAKE,CAAAA,CAAAA,CAAAA,CACVxnB,CAAKunB,CAAAA,CAAAA,CAAAA,CAAKE,EACVznB,CAAKwnB,CAAAA,CAAAA,CAAAA,CAAKF,EACVtnB,CAAKynB,CAAAA,CAAAA,CAAAA,CAAKF,GAGZvnB,CAAK+J,CAAAA,CAAAA,CAAAA,CAAK/J,CAAKwnB,CAAAA,CAAAA,CAAAA,CAAKxnB,CAAKsnB,CAAAA,CAAAA,CAAAA,CACzBtnB,EAAKgK,CAAKhK,CAAAA,CAAAA,CAAAA,CAAKynB,GAAKznB,CAAKunB,CAAAA,CAAAA,CAAAA,CAEzBvnB,EAAK2nB,CAAOhyB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK6hB,CAAIxX,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsnB,CAAItnB,CAAAA,CAAAA,CAAAA,CAAKwnB,IACnCxnB,CAAK4nB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOjyB,CAAK6hB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIxX,CAAKunB,CAAAA,CAAAA,CAAAA,CAAIvnB,EAAKynB,CACnCznB,CAAAA,CAAAA,CAAAA,CAAAA,CAAK6nB,CAAOlyB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKuV,CAAIlL,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsnB,GAAItnB,CAAKwnB,CAAAA,CAAAA,CAAAA,CAAAA,CACnCxnB,EAAK8nB,CAAOnyB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKuV,IAAIlL,CAAKunB,CAAAA,CAAAA,CAAAA,CAAIvnB,CAAKynB,CAAAA,CAAAA,CAAAA,CAAAA,CAEnCznB,CAAKyJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAMzJ,EAAKwnB,CAAKxnB,CAAAA,CAAAA,CAAAA,CAAKunB,CAAKvnB,CAAAA,CAAAA,CAAAA,CAAKsnB,CAAKtnB,CAAAA,CAAAA,CAAAA,CAAKynB,GAC9CznB,CAAK+nB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO/nB,CAAK+J,CAAAA,CAAAA,CAAAA,CAAK/J,CAAK+J,CAAAA,CAAAA,CAAAA,CAAK/J,EAAKgK,CAAKhK,CAAAA,CAAAA,CAAAA,CAAKgK,GAE/ChK,CAAK0T,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW1T,EAAKgJ,CACrBhJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK5K,CAAS4K,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKgoB,CACnBhoB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0nB,UAAYjtB,CAAKC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUgtB,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK1nB,CAClD,CAEAyN,EAAA4Z,CAAApY,CAAAA,CAAAA,CAAAA,CAAA,CAAArR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAypB,CAAAtsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CA8HC,OA9HD6C,CAIAkR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,WAKE,CAJA9W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4D,OAASjG,CAAKiG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnB5D,CAAK2W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOpW,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsvB,GAAKtvB,CAAK4D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS5D,KAAK5C,CAASO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKC,IAAIoC,CAAK0b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACpE1b,CAAK2W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOnW,CAAIR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKuvB,GAAKvvB,CAAK4D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS5D,KAAK5C,CAASO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKG,IAAIkC,CAAK0b,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAE7D1b,CAAK2W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACd,CAEA/Q,CAAAA,CAAAA,CAMA2M,aAAA,CAAahS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGC,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMqpB,CAAI7pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKgS,GACT8X,CAAK9pB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK+R,CAIhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK8X,CAAItpB,CAAAA,CAAAA,CAAIupB,EAAItpB,CAHPR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKyR,MACC,CAANqY,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,EAAIA,CAEM,CAAA,CAAA,CAEhC,CAEAlkB,CAAAA,CAAAA,CAMAqqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY1vB,EAAGC,CAMb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CALUR,KAAKgS,CAGDzR,CAAAA,CAAAA,CAAAA,CAAAA,CAFHP,KAAK+R,CAEMvR,CAAAA,CAAAA,CAAAA,CADZR,CAAKyR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAGJ9T,CAAK2S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKtQ,KAAK+vB,CAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAEAnqB,EAKAsqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa1kB,GACX,CAAM2kB,CAAAA,CAAAA,CAAAA,CAAAA,CAAO3kB,CAAEwF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAETc,CAAM,CAAA,CAAA,CAAA,CADC9R,KAAKgR,CACMmf,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAElBC,CAAO5kB,CAAAA,CAAAA,CAAEjL,CACT8vB,CAAAA,CAAAA,CAAO7kB,EAAEhL,CAKf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAHAgL,CAAEjL,CAAAA,CAAAA,CAAI6vB,CAAOzyB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKC,IAAIkU,CAAOue,CAAAA,CAAAA,CAAAA,CAAO1yB,KAAKG,CAAIgU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC7CtG,EAAEhL,CAAI4vB,CAAAA,CAAAA,CAAOzyB,CAAKG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIgU,CAAOue,CAAAA,CAAAA,CAAAA,CAAO1yB,KAAKC,CAAIkU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEtCtG,CACT,CAEA5F,CAAAA,CAAAA,CAIAoL,YAAA,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOrT,CAAKsT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMjR,CAAKgS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIhS,KAAK+R,CAClC,CAAA,CAAA,CAAA,CAEAnM,EAKA0qB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASllB,GAGP,CAFczN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0W,CAAIrU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKgR,CAEftH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASH,GAAK,CACzB,CAAA,CAAA,CAAA,CAAA,CAAI6B,CAASrF,CAAAA,CAAAA,CAAExF,CAAKP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK6vB,MAAQzkB,CAASrF,CAAAA,CAAAA,CAAExF,CAAKP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK2vB,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,OAEnE,CAAIvkB,CAAAA,CAAAA,CAAAA,CAASrF,EAAEvF,CAAKR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK8vB,MAAQ1kB,CAASrF,CAAAA,CAAAA,CAAEvF,CAAKR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4vB,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAGrE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACT,CAEAhqB,CAAAA,CAAAA,CAIAoqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,OAAOryB,CAAK2S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKtQ,CAAK+R,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK/R,CAAK+R,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK/R,KAAKgS,CAAKhS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKgS,GACtD,CAEApM,CAAAA,CAAAA,CAIAmR,SAAA,CAAS3L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACP,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAnBpL,CAAK4W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACP,GAAuB,CAAnB5W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0vB,CAAwC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAnB1vB,CAAK0vB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAwC,UAAnB1vB,CAAK0vB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA4C,CAAnB1vB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0vB,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC/G,IAAK1vB,CAAKswB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASllB,GAAW,CAC1BpL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKuS,aAAanH,CAASrF,CAAAA,CAAAA,CAAExF,CAAG6K,CAAAA,CAAAA,CAASrF,CAAEvF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI4K,EAASsH,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACrE,KAAO,CACL,CAAA,CAAA,CAAA,CAAK1S,KAAKswB,CAASllB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CACzBpL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKuS,CAAanH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASrF,EAAExF,CAAG6K,CAAAA,CAAAA,CAASrF,EAAEvF,CAAI4K,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASsH,MAAO,CACtE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACK,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAnB1S,CAAK4W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAuB,CACrC,CAAK5W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKswB,CAASllB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAE1BpL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKiwB,YAAY7kB,CAASrF,CAAAA,CAAAA,CAAExF,CAAG6K,CAAAA,CAAAA,CAASrF,CAAEvF,CAAAA,CAAAA,CAAAA,CAAAA,CAAM4K,EAASyH,CAC3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAZ7S,KAAK+R,CACP3G,CAAAA,CAAAA,CAAAA,CAASI,EAAEjL,CAAM,CAAA,CAAA,CAAA,CAAA,CACI,CAAZP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKgS,CACd5G,CAAAA,CAAAA,CAAAA,CAASI,EAAEhL,CAAM,CAAA,CAAA,CAAA,CAAA,CAEjBR,KAAKkwB,CAAa9kB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASI,GAGjC,CAA8B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAnBxL,CAAK4W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACV5W,CAAK6W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACPK,QAAQC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACdnX,KAAK6W,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAGlBwY,CAAA,EAtKmC3Y,CAAAA,CAAAA,CCFjB6Z,YAAUtZ,GAO7B,CAAAsZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYhwB,CAAGC,CAAAA,CAAAA,CAAGqS,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA7K,EAOD,CANvBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAiP,CAAAhU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOjD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEFO,EAAIA,CACTyH,CAAAA,CAAAA,CAAKxH,EAAIA,CACTwH,CAAAA,CAAAA,CAAK6K,OAASA,CACd7K,CAAAA,CAAAA,CAAKmT,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACbnT,CAAKmC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAE5J,CAAAA,CAAAA,CAAAA,CAAGC,EAAAA,CAAIwH,CAAAA,CAAAA,CACzB,CAEAyN,CAAA8a,CAAAA,CAAAA,CAAAtZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAArR,CAAA2qB,CAAAA,CAAAA,CAAAxtB,UAiEC,CAjED6C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAIAkR,YAAA,CAME,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CALA9W,KAAKmb,CAAQzR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAOhM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKiG,CAClC5D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKwwB,aAAe7yB,CAAKiG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW5D,CAAK6S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACzC7S,CAAK2W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOpW,EAAIP,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIP,CAAKwwB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe7yB,CAAKC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIoC,KAAKmb,CAC3Dnb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK2W,OAAOnW,CAAIR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKQ,EAAIR,CAAKwwB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe7yB,CAAKG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIkC,CAAKmb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEpDnb,KAAK2W,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA/Q,CAKA6qB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAUlwB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGC,GACXR,CAAKmK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO5J,CAAIA,CAAAA,CAAAA,CAChBP,CAAKmK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO3J,EAAIA,CAClB,CAAA,CAEAoF,EAIAmR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS3L,GACP,CAAMslB,CAAAA,CAAAA,CAAAA,CAAAA,CAAItlB,CAASrF,CAAAA,CAAAA,CAAE6L,CAAW5R,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKmK,QAEd,CAAnBnK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,CACH8Z,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAItlB,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS7S,KAAK6S,CAAQzH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASsH,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC3B,CAAnB1S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,UACV8Z,CAAItlB,CAAAA,CAAAA,CAASyH,QAAU7S,CAAK6S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ7S,KAAKkwB,CAAa9kB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9B,CAAnBpL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,CACV5W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK6W,QACPK,CAAQC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,oDACdnX,CAAK6W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,EAGnB,CAEAjR,CAAAA,CAAAA,CAIAsqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa9kB,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM+kB,EAAO/kB,CAASI,CAAAA,CAAAA,CAAEwF,cAGlBc,CAAM,CAAA,CAAA,CAAA,CAFC9R,KAAKgR,CAAY5F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEN+kB,CAClBC,CAAAA,CAAAA,CAAAA,CAAOhlB,CAASI,CAAAA,CAAAA,CAAEjL,EAClB8vB,CAAOjlB,CAAAA,CAAAA,CAASI,CAAEhL,CAAAA,CAAAA,CAExB4K,CAASI,CAAAA,CAAAA,CAAEjL,EAAI6vB,CAAOzyB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKC,CAAIkU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOue,CAAO1yB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKG,IAAIgU,CACtD1G,CAAAA,CAAAA,CAAAA,CAASI,EAAEhL,CAAI4vB,CAAAA,CAAAA,CAAOzyB,KAAKG,CAAIgU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOue,CAAO1yB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKC,CAAIkU,CAAAA,CAAAA,CAAAA,CAAAA,CACxD,EAEAlM,CAKAoL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,SAAY5F,CACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ1B,EAASE,CAAOjM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKsT,CAAM7F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASrF,CAAEvF,CAAAA,CAAAA,CAAIR,KAAKmK,CAAO3J,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG4K,EAASrF,CAAExF,CAAAA,CAAAA,CAAIP,KAAKmK,CAAO5J,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAC7FgwB,CAAAA,CAAA,EAlFqC7Z,GCDnBia,YAAQ1Z,CAQ3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA0Z,CAAYpwB,CAAAA,CAAAA,CAAGC,EAAGhB,CAAaC,CAAAA,CAAAA,CAAAA,CAAc,CAAAuI,CAAAA,CAAAA,CAAAA,CAAAA,CAMtB,CANA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAALxI,IAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,IAANC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,MACtCuI,CAAAiP,CAAAA,CAAAA,CAAAhU,YAAOjD,CAEFO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIA,EACTyH,CAAKxH,CAAAA,CAAAA,CAAIA,EACTwH,CAAKxI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQA,EACbwI,CAAKvI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASA,CAAOuI,CAAAA,CACvB,CAEAyN,CAAAA,CAAAkb,EAAA1Z,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAArR,EAAA+qB,CAAA5tB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAyDC,OAzDD6C,CAIAkR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAGE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAFA9W,CAAK2W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOpW,EAAIP,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI5C,CAAKiG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW5D,CAAKR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9CQ,KAAK2W,CAAOnW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIR,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI7C,CAAKiG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW5D,KAAKP,CACvCO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK2W,MACd,CAEA/Q,CAAAA,CAAAA,CAIAmR,SAAA,CAAS3L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEgB,CAAnBpL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,CACHxL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASrF,EAAExF,CAAI6K,CAAAA,CAAAA,CAASyH,CAAS7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKO,CACjC6K,CAAAA,CAAAA,CAAAA,CAASrF,EAAExF,CAAI6K,CAAAA,CAAAA,CAASyH,CAAS7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKO,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKR,SADX4L,CAASsH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,IAGzDtH,CAASrF,CAAAA,CAAAA,CAAEvF,EAAI4K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS7S,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjC4K,CAASrF,CAAAA,CAAAA,CAAEvF,EAAI4K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS7S,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIR,CAAKP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CADX2L,EAASsH,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKnC,CAAnB1S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,CACRxL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASrF,EAAExF,CAAI6K,CAAAA,CAAAA,CAASyH,OAAS7S,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxC6K,EAASrF,CAAExF,CAAAA,CAAAA,CAAIP,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI6K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjCzH,EAASI,CAAEjL,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,GACR6K,CAASrF,CAAAA,CAAAA,CAAExF,EAAI6K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS7S,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIP,CAAKR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxD4L,EAASrF,CAAExF,CAAAA,CAAAA,CAAIP,KAAKO,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKR,MAAQ4L,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9CzH,CAASI,CAAAA,CAAAA,CAAEjL,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAGf6K,EAASrF,CAAEvF,CAAAA,CAAAA,CAAI4K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS7S,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxC4K,EAASrF,CAAEvF,CAAAA,CAAAA,CAAIR,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI4K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjCzH,EAASI,CAAEhL,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,GACR4K,CAASrF,CAAAA,CAAAA,CAAEvF,EAAI4K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS7S,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIR,CAAKP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxD2L,EAASrF,CAAEvF,CAAAA,CAAAA,CAAIR,KAAKQ,CAAIR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKP,OAAS2L,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC/CzH,CAASI,CAAAA,CAAAA,CAAEhL,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKO,UAAnBR,CAAK4W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACRxL,EAASrF,CAAExF,CAAAA,CAAAA,CAAI6K,EAASyH,CAAS7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKO,CAAK6K,CAAAA,CAAAA,CAAAA,CAASI,CAAEjL,CAAAA,CAAAA,CAAAA,CAAK,EAC7D6K,CAASrF,CAAAA,CAAAA,CAAExF,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKO,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKR,MAAQ4L,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACrCzH,CAASrF,CAAAA,CAAAA,CAAExF,CAAI6K,CAAAA,CAAAA,CAASyH,OAAS7S,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIP,KAAKR,CAAS4L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASI,EAAEjL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CACjF6K,CAASrF,CAAAA,CAAAA,CAAExF,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKO,EAAI6K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAG/BzH,EAASrF,CAAEvF,CAAAA,CAAAA,CAAI4K,EAASyH,CAAS7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKQ,CAAK4K,CAAAA,CAAAA,CAAAA,CAASI,CAAEhL,CAAAA,CAAAA,CAAAA,CAAK,EAC7D4K,CAASrF,CAAAA,CAAAA,CAAEvF,EAAIR,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIR,KAAKP,CAAS2L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASyH,CACtCzH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASrF,CAAEvF,CAAAA,CAAAA,CAAI4K,EAASyH,CAAS7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKQ,CAAIR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKP,CAAU2L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASI,EAAEhL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAClF4K,CAASrF,CAAAA,CAAAA,CAAEvF,CAAIR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKQ,EAAI4K,CAASyH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAGtC8d,CAAA,EA1EmCja,CCCjBka,CAAAA,CAAAA,CAAAA,CAAAA,EAAS3Z,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAQ5B,CAAA2Z,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY3K,EAAW1lB,CAAGC,CAAAA,CAAAA,CAAGkwB,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA1oB,CAEC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAD/BA,EAAAiP,CAAAhU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOjD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACFuO,CAAM0X,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW1lB,EAAGC,CAAGkwB,CAAAA,CAAAA,CAAAA,CAAG1oB,CACjC,CAEAyN,CAAAA,CAAAmb,EAAA3Z,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAArR,CAAAgrB,CAAAA,CAAAA,CAAA7tB,CAgGC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhGD6C,EAOA2I,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM0X,CAAW1lB,CAAAA,CAAAA,CAAGC,CAAGkwB,CAAAA,CAAAA,CAAAA,CACrB1wB,KAAKimB,CAAYA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjBjmB,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIkC,CAAKC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUnC,EAAG,CAC3BP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKQ,EAAIiC,CAAKC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUlC,EAAG,CAC3BR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0wB,CAAIjuB,CAAAA,CAAAA,CAAKC,CAAUguB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG,GAE3B1wB,CAAK6wB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,GACf7wB,CAAK8wB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACP,EAEAlrB,CAIAkrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIzzB,CAAG0zB,CAAAA,CAAAA,CACDC,EAAUhxB,CAAKimB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUzmB,MACzByxB,CAAUjxB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKimB,UAAUxmB,CAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAKpC,CAAI,CAAA,CAAA,CAAGA,CAAI2zB,CAAAA,CAAAA,CAAS3zB,GAAK2C,CAAK0wB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjC,CAAKK,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIE,EAASF,CAAK/wB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK0wB,CAAG,CAAA,CACpC,CAAIntB,CAAAA,CAAAA,CAAAA,CAAAA,CAA0C,IAAhCwtB,CAAK,CAAA,CAAA,CAAA,CAAKC,GAAW3zB,CAAK,CAAA,CAAA,CAAA,CAAA,CAEpC2C,KAAKimB,CAAU5T,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK9O,CAAQ,CAAA,CAAA,CAAA,CAAK,CACnCvD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK6wB,QAAQptB,CAAK,CAAA,CAAA,CAAA,CAAA,CAAElD,EAAGlD,CAAI2C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKO,EAAGC,CAAGuwB,CAAAA,CAAAA,CAAI/wB,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEnD,CAGF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOR,KAAK2W,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA/Q,EAMAsrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS3wB,EAAGC,CACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM+C,CAAuD,CAAA,CAAA,CAAA,CAAA,CAA7C/C,CAAK,CAAA,CAAA,CAAA,CAAKR,KAAKimB,CAAUzmB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASe,CAAK,CAAA,CAAA,CAAA,CAAA,CACvD,CAAOP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKimB,UAAU5T,CAAK9O,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAK,CAAA,CAAA,CAC1C,CAEAqC,CAAAA,CAAAA,CAIAkR,YAAA,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMH,EAASlU,CAAKiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiB1D,KAAK6wB,CAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO7wB,CAAK2W,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOpL,CAAKoL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC1B,EAEA/Q,CAMAurB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,SAAS5wB,CAAGC,CAAAA,CAAAA,CAAAA,CACVD,GAAKP,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEV,CAAMlD,CAAAA,CAAAA,CAAAA,CAAAA,CAAmD,CADzDmD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKR,KAAKQ,CACO,CAAA,CAAA,CAAA,CAAA,CAAKR,KAAKimB,CAAUzmB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASe,EAAK,CAEnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CACL8N,CAAAA,CAAGrO,CAAKimB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU5T,KAAKhV,CACvBiR,CAAAA,CAAAA,CAAAA,CAAGtO,CAAKimB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU5T,CAAKhV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,GAC3Ba,CAAG8B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKimB,CAAU5T,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKhV,CAAI,CAAA,CAAA,CAAA,CAC3BY,EAAG+B,CAAKimB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU5T,KAAKhV,CAAI,CAAA,CAAA,CAAA,CAE/B,EAEAuI,CAIAmR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAS3L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACgB,CAAnBpL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,UACPxL,CAASsH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO1S,CAAKkxB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS9lB,CAASrF,CAAAA,CAAAA,CAAExF,EAAIP,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG6K,CAASrF,CAAAA,CAAAA,CAAEvF,CAAIR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKQ,GAC7C,CAAnBR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4W,YACT5W,CAAKkxB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS9lB,EAASrF,CAAExF,CAAAA,CAAAA,CAAIP,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAG6K,CAASrF,CAAAA,CAAAA,CAAEvF,EAAIR,CAAKQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAI4K,CAASI,CAAAA,CAAAA,CAAEgG,CAEjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA5L,EAGApB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACEyS,CAAAlU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMyB,CAAOvB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAjD,MACbA,CAAKimB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,KAClB2K,CAAAA,CAAA,EA7GoCla,CAAAA,CAAAA,CCDxB0a,CAAA,CAAA,CAAA,CACb/oB,0BAAiB3B,EAAQ2qB,CACvB3qB,CAAAA,CAAAA,CAAAA,CAAO2B,iBAAiB,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAMgpB,MACtD,CAEDC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASppB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,IAALA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,WACf,CAAMoK,CAAAA,CAAAA,CAAAA,CAAAA,CAAMoB,EAAUC,CAASzL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC/B,CAAeoK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIjE,CAAAA,CAAAA,CAAMiE,KAAAA,CAAIhE,CAAAA,CAAAA,CAAC,CAAKgE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAIpU,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACzC,EAEDqzB,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC7qB,CAAQnE,CAAAA,CAAAA,CAAQ8U,CAAM1L,CAAAA,CAAAA,CAAAA,CAC7B,IAAMnK,CAAUe,CAAAA,CAAAA,CAAOC,WAAW,CAC5B1C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQE,KAAKsxB,CAEnBtxB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKqI,CAAiB3B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CACxBiF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOnK,EAAQM,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,EAAGS,CAAO/C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO+C,EAAO9C,CAEpD4X,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBL,CAClBxV,CAAAA,CAAAA,CAAAA,CAAQwiB,CACRxiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQmiB,UAAY7jB,CACpB0B,CAAAA,CAAAA,CAAQyiB,IAAI5M,CAAK9W,CAAAA,CAAAA,CAAG8W,EAAK7W,CAAG,CAAA,CAAA,CAAA,CAAI,CAAa,CAAA,CAAA,CAAV7C,CAAK4L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,GAChD/H,CAAQ6iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACR7iB,CAAQ4iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACC/M,CAAgBgY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACzB7tB,EAAQwiB,CACRxiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ0iB,CAAcpkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtB0B,CAAQgwB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOna,EAAKiY,CAAIjY,CAAAA,CAAAA,CAAAA,CAAKkY,IAC7B/tB,CAAQiwB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOpa,EAAKmY,CAAInY,CAAAA,CAAAA,CAAAA,CAAKoY,CAC7BjuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAQsgB,CACRtgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ4iB,aACC/M,CAAgBsZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACzBnvB,EAAQwiB,CACRxiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ0iB,YAAcpkB,CACtB0B,CAAAA,CAAAA,CAAQkwB,CAASra,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK9W,CAAG8W,CAAAA,CAAAA,CAAK7W,EAAG6W,CAAK7X,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO6X,EAAK5X,CAClD+B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQsgB,SACRtgB,CAAQ4iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACC/M,CAAgBkZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACzB/uB,CAAQwiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACRxiB,EAAQ0iB,CAAcpkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtB0B,CAAQyiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAI5M,CAAK9W,CAAAA,CAAAA,CAAG8W,EAAK7W,CAAG6W,CAAAA,CAAAA,CAAKxE,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAVlV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4L,IAAQ,CACzD/H,CAAAA,CAAAA,CAAAA,CAAQsgB,SACRtgB,CAAQ4iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEZ,GACD,CAEDuN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAACjrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQnE,CAAQ0E,CAAAA,CAAAA,CAAS0E,GACnC,CAAMnK,CAAAA,CAAAA,CAAAA,CAAAA,CAAUe,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAC5B1C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQE,KAAKsxB,CAEnBtxB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKqI,CAAiB3B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CACxBiF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOnK,EAAQM,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,EAAGS,CAAO/C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO+C,EAAO9C,CAExD+B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQwiB,CACRxiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQmiB,CAAY7jB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACpB0B,EAAQyiB,CAAIhd,CAAAA,CAAAA,CAAAA,CAAAA,CAAQlB,CAAExF,CAAAA,CAAAA,CAAG0G,CAAQlB,CAAAA,CAAAA,CAAEvF,EAAG,CAAI,CAAA,CAAA,CAAA,CAAa,CAAV7C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK4L,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAC1D/H,EAAQ6iB,CACR7iB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ4iB,WACV,CACF,CAAA,CAAA,CAAA,CAAA"} \ No newline at end of file diff --git a/example/pixiv8-multirender.html b/example/pixiv8-multirender.html new file mode 100644 index 0000000..48066db --- /dev/null +++ b/example/pixiv8-multirender.html @@ -0,0 +1,231 @@ + + + + Proton with Pixi.js v8 Multirender Example + + + + + + + +
+
+ +
+ + + + \ No newline at end of file diff --git a/example/pixiv8.html b/example/pixiv8.html new file mode 100644 index 0000000..d7f775f --- /dev/null +++ b/example/pixiv8.html @@ -0,0 +1,170 @@ + + + + Proton with Pixi.js v8 Example + + + + + + + +
+ + + + \ No newline at end of file diff --git a/package.json b/package.json index 8e2adfa..1e6cf65 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,16 @@ { "name": "proton-engine", - "version": "7.1.3", - "description": "Proton is a simple and powerful javascript particle animation engine.", + "version": "7.2.0", + "description": "Proton is a simple and powerful javascript particle animation engine, compatible with Pixi.js up to v8.", "keywords": [ "particle", "particles", "canvas", "canvas-particle", - "webgl" + "webgl", + "pixijs", + "pixi", + "pixijs-v8" ], "main": "./build/proton.min.js", "types": "./build/proton.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..edff2f6 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4454 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@babel/core': + specifier: ^7.15.5 + version: 7.26.9 + '@babel/eslint-parser': + specifier: ^7.15.4 + version: 7.26.8(@babel/core@7.26.9)(eslint@7.32.0) + '@babel/plugin-proposal-class-properties': + specifier: ^7.14.5 + version: 7.18.6(@babel/core@7.26.9) + '@babel/preset-env': + specifier: ^7.15.6 + version: 7.26.9(@babel/core@7.26.9) + '@rollup/plugin-babel': + specifier: ^6.0.3 + version: 6.0.4(@babel/core@7.26.9)(rollup@3.29.5) + '@rollup/plugin-terser': + specifier: ^0.4.3 + version: 0.4.4(rollup@3.29.5) + '@rollup/plugin-typescript': + specifier: ^11.1.2 + version: 11.1.6(rollup@3.29.5)(tslib@2.8.1)(typescript@5.8.2) + concurrently: + specifier: ^3.5.1 + version: 3.6.1 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + eslint-plugin-import: + specifier: ^2.24.2 + version: 2.31.0(eslint@7.32.0) + eslint-plugin-promise: + specifier: ^5.1.0 + version: 5.2.0(eslint@7.32.0) + eslint-plugin-standard: + specifier: ^5.0.0 + version: 5.0.0(eslint@7.32.0) + rollup: + specifier: ^3.29.4 + version: 3.29.5 + rollup-plugin-dts: + specifier: ^5.3.1 + version: 5.3.1(rollup@3.29.5)(typescript@5.8.2) + rollup-plugin-license: + specifier: ^3.0.1 + version: 3.6.0(picomatch@4.0.2)(rollup@3.29.5) + serve: + specifier: ^14.1.2 + version: 14.2.4 + tslib: + specifier: ^2.8.1 + version: 2.8.1 + typescript: + specifier: ^5.7.3 + version: 5.8.2 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.12.11': + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.9': + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.26.8': + resolution: {integrity: sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.26.9': + resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.26.3': + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.9': + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.9': + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.26.8': + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.26.7': + resolution: {integrity: sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.9': + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.26.9': + resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + engines: {node: '>=6.9.0'} + + '@eslint/eslintrc@0.4.3': + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + + '@humanwhocodes/config-array@0.5.0': + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@rollup/plugin-babel@6.0.4': + resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + rollup: + optional: true + + '@rollup/plugin-terser@0.4.4': + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-typescript@11.1.6': + resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@zeit/schemas@2.36.0': + resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + boxen@7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + caniuse-lite@1.0.30001702: + resolution: {integrity: sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==} + + chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + clipboardy@3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@2.6.0: + resolution: {integrity: sha512-PhbTMT+ilDXZKqH8xbvuUY2ZEQNef0Q7DKxgoEKb4ccytsdvVVJmYqR0sGbi96nxU6oGrwEIQnclpK2NBZuQlg==} + engines: {node: '>= 0.6.x'} + + commenting@1.1.0: + resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concurrently@3.6.1: + resolution: {integrity: sha512-/+ugz+gwFSEfTGUxn0KHkY+19XPRTXR8+7oUK/HxgiN1n7FjeJmkrbSiXAJfyQ0zORgJYPaenmymwon51YXH9Q==} + engines: {node: '>=4.0.0'} + hasBin: true + + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + date-fns@1.30.1: + resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.113: + resolution: {integrity: sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-promise@5.2.0: + resolution: {integrity: sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.0.0 + + eslint-plugin-standard@5.0.0: + resolution: {integrity: sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==} + deprecated: 'standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with ''npm rm eslint-plugin-standard''. More info here: https://github.com/standard/standard/issues/1316' + peerDependencies: + eslint: '>=5.0.0' + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-port-reachable@4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + package-name-regex@2.0.6: + resolution: {integrity: sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==} + engines: {node: '>=12'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup-plugin-dts@5.3.1: + resolution: {integrity: sha512-gusMi+Z4gY/JaEQeXnB0RUdU82h1kF0WYzCWgVmV4p3hWXqelaKuCvcJawfeg+EKn2T1Ie+YWF2OiN1/L8bTVg==} + engines: {node: '>=v14.21.3'} + peerDependencies: + rollup: ^3.0 + typescript: ^4.1 || ^5.0 + + rollup-plugin-license@3.6.0: + resolution: {integrity: sha512-1ieLxTCaigI5xokIfszVDRoy6c/Wmlot1fDEnea7Q/WXSR8AqOjYljHDLObAx7nFxHC2mbxT3QnTSPhaic2IYw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup@3.29.5: + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rx@2.3.24: + resolution: {integrity: sha512-Ue4ZB7Dzbn2I9sIj8ws536nOP2S53uypyCkCz9q0vlYD5Kn6/pu4dE+wt2ZfFzd9m73hiYKnnCb1OyKqc+MRkg==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + + serve@14.2.4: + resolution: {integrity: sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==} + engines: {node: '>= 14'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + smob@1.5.0: + resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + + spdx-compare@1.0.0: + resolution: {integrity: sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-expression-validate@2.0.0: + resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + spdx-ranges@2.1.1: + resolution: {integrity: sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==} + + spdx-satisfies@5.0.1: + resolution: {integrity: sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.12.11': + dependencies: + '@babel/highlight': 7.25.9 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.9': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helpers': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.26.8(@babel/core@7.26.9)(eslint@7.32.0)': + dependencies: + '@babel/core': 7.26.9 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.26.9': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/highlight@7.25.9': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.26.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.9) + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) + '@babel/traverse': 7.26.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.26.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.9) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typeof-symbol@7.26.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/preset-env@7.26.9(@babel/core@7.26.9)': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.9) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.9) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.9) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.9) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.9) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.9) + '@babel/plugin-transform-typeof-symbol': 7.26.7(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.9) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.9) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.9) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.9) + core-js-compat: 3.41.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.26.9 + esutils: 2.0.3 + + '@babel/runtime@7.26.9': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/traverse@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@eslint/eslintrc@0.4.3': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 7.3.1 + globals: 13.24.0 + ignore: 4.0.6 + import-fresh: 3.3.1 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/config-array@0.5.0': + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/object-schema@1.2.1': {} + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@rollup/plugin-babel@6.0.4(@babel/core@7.26.9)(rollup@3.29.5)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) + optionalDependencies: + rollup: 3.29.5 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-terser@0.4.4(rollup@3.29.5)': + dependencies: + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.39.0 + optionalDependencies: + rollup: 3.29.5 + + '@rollup/plugin-typescript@11.1.6(rollup@3.29.5)(tslib@2.8.1)(typescript@5.8.2)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) + resolve: 1.22.10 + typescript: 5.8.2 + optionalDependencies: + rollup: 3.29.5 + tslib: 2.8.1 + + '@rollup/pluginutils@5.1.4(rollup@3.29.5)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 3.29.5 + + '@rtsao/scc@1.1.0': {} + + '@types/estree@1.0.6': {} + + '@types/json5@0.0.29': {} + + '@zeit/schemas@2.36.0': {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@7.4.1): + dependencies: + acorn: 7.4.1 + + acorn@7.4.1: {} + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + arch@2.2.0: {} + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-find-index@1.0.2: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + astral-regex@2.0.0: {} + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.9): + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) + core-js-compat: 3.41.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + boxen@7.0.0: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.0.1 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001702 + electron-to-chromium: 1.5.113 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + buffer-from@1.1.2: {} + + bytes@3.0.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@7.0.1: {} + + caniuse-lite@1.0.30001702: {} + + chalk-template@0.4.0: + dependencies: + chalk: 4.1.2 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.0.1: {} + + cli-boxes@3.0.0: {} + + clipboardy@3.0.0: + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + commander@2.20.3: {} + + commander@2.6.0: {} + + commenting@1.1.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.53.0 + + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + concurrently@3.6.1: + dependencies: + chalk: 2.4.2 + commander: 2.6.0 + date-fns: 1.30.1 + lodash: 4.17.21 + read-pkg: 3.0.0 + rx: 2.3.24 + spawn-command: 0.0.2 + supports-color: 3.2.3 + tree-kill: 1.2.2 + + content-disposition@0.5.2: {} + + convert-source-map@2.0.0: {} + + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + date-fns@1.30.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.113: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint@7.32.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(eslint@7.32.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint@7.32.0) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-promise@5.2.0(eslint@7.32.0): + dependencies: + eslint: 7.32.0 + + eslint-plugin-standard@5.0.0(eslint@7.32.0): + dependencies: + eslint: 7.32.0 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-utils@2.1.0: + dependencies: + eslint-visitor-keys: 1.3.0 + + eslint-visitor-keys@1.3.0: {} + + eslint-visitor-keys@2.1.0: {} + + eslint@7.32.0: + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + doctrine: 3.0.0 + enquirer: 2.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.24.0 + ignore: 4.0.6 + import-fresh: 3.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.7.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.9.0 + text-table: 0.2.0 + v8-compile-cache: 2.4.0 + transitivePeerDependencies: + - supports-color + + espree@7.3.1: + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functional-red-black-tree@1.0.1: {} + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-bigints@1.1.0: {} + + has-flag@1.0.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + human-signals@2.1.0: {} + + ignore@4.0.6: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-port-reachable@4.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + lodash.debounce@4.0.8: {} + + lodash.merge@4.6.2: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + math-intrinsics@1.1.0: {} + + merge-stream@2.0.0: {} + + mime-db@1.33.0: {} + + mime-db@1.52.0: {} + + mime-db@1.53.0: {} + + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimist@1.2.8: {} + + moment@2.30.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + package-name-regex@2.0.6: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + path-is-absolute@1.0.1: {} + + path-is-inside@1.0.2: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@3.3.0: {} + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + picocolors@1.1.1: {} + + picomatch@4.0.2: {} + + pify@3.0.0: {} + + possible-typed-array-names@1.1.0: {} + + prelude-ls@1.2.1: {} + + progress@2.0.3: {} + + punycode@2.3.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.0: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.26.9 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpp@3.2.0: {} + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + registry-auth-token@3.3.2: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-dts@5.3.1(rollup@3.29.5)(typescript@5.8.2): + dependencies: + magic-string: 0.30.17 + rollup: 3.29.5 + typescript: 5.8.2 + optionalDependencies: + '@babel/code-frame': 7.26.2 + + rollup-plugin-license@3.6.0(picomatch@4.0.2)(rollup@3.29.5): + dependencies: + commenting: 1.1.0 + fdir: 6.4.3(picomatch@4.0.2) + lodash: 4.17.21 + magic-string: 0.30.17 + moment: 2.30.1 + package-name-regex: 2.0.6 + rollup: 3.29.5 + spdx-expression-validate: 2.0.0 + spdx-satisfies: 5.0.1 + transitivePeerDependencies: + - picomatch + + rollup@3.29.5: + optionalDependencies: + fsevents: 2.3.3 + + rx@2.3.24: {} + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-handler@6.1.6: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 3.3.0 + range-parser: 1.2.0 + + serve@14.2.4: + dependencies: + '@zeit/schemas': 2.36.0 + ajv: 8.12.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.7.4 + is-port-reachable: 4.0.0 + serve-handler: 6.1.6 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + smob@1.5.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + spawn-command@0.0.2: {} + + spdx-compare@1.0.0: + dependencies: + array-find-index: 1.0.2 + spdx-expression-parse: 3.0.1 + spdx-ranges: 2.1.1 + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-expression-validate@2.0.0: + dependencies: + spdx-expression-parse: 3.0.1 + + spdx-license-ids@3.0.21: {} + + spdx-ranges@2.1.1: {} + + spdx-satisfies@5.0.1: + dependencies: + spdx-compare: 1.0.0 + spdx-expression-parse: 3.0.1 + spdx-ranges: 2.1.1 + + sprintf-js@1.0.3: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + supports-color@3.2.3: + dependencies: + has-flag: 1.0.0 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + tree-kill@1.2.2: {} + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type-fest@2.19.0: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.8.2: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-check@1.5.4: + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + v8-compile-cache@2.4.0: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vary@1.1.2: {} + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.18 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + word-wrap@1.2.5: {} + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + yallist@3.1.1: {} diff --git a/rollup.config-1741984393374.cjs b/rollup.config-1741984393374.cjs new file mode 100644 index 0000000..4864913 --- /dev/null +++ b/rollup.config-1741984393374.cjs @@ -0,0 +1,88 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var babel = require('@rollup/plugin-babel'); +var terser = require('@rollup/plugin-terser'); +var license = require('rollup-plugin-license'); +var typescript = require('@rollup/plugin-typescript'); +var rollupPluginDts = require('rollup-plugin-dts'); +var pkjson = require('./package.json'); +var babelrc = require('./.babelrc.json'); + +const INPUT_FILE = "src/index.js"; +const IS_DEV = process.env.NODE_ENV === "dev"; +const CURRENT_YEAR = new Date().getFullYear(); + +const createBanner = () => `/*! +* Proton v${pkjson.version} +* https://github.com/drawcall/Proton +* +* Copyright 2013-${CURRENT_YEAR}, drawcall +* Licensed under the MIT license +* http://www.opensource.org/licenses/mit-license +* +*/`; + +const removeExportsPlugin = { + name: "remove-exports", + transform(code, id) { + if (id.endsWith(INPUT_FILE)) { + console.log("remove-exports: Removing exports from", id); + return code.replace(/export\s*{[\s\S]*?};/g, ""); + } + return null; + }, +}; + +const createBabelPlugin = () => + babel({ + exclude: "node_modules/**", + babelHelpers: "bundled", + babelrc: false, + ...babelrc, + }); + +const createConfig = (outputFile, isWeb, plugins) => ({ + input: INPUT_FILE, + output: { + file: outputFile, + format: isWeb ? "iife" : "umd", + name: "Proton", + exports: isWeb ? "auto" : "named", + sourcemap: true, + ...(isWeb ? { extend: true } : {}), + }, + plugins, +}); + +const devConfigs = [ + createConfig("build/proton.js", false, [createBabelPlugin()]), + createConfig("build/proton.web.js", true, [removeExportsPlugin, createBabelPlugin()]), +]; + +const prodConfigs = [ + createConfig("build/proton.min.js", false, [ + createBabelPlugin(), + typescript({ tsconfig: "./tsconfig.json" }), + terser(), + license({ banner: createBanner() }), + ]), + createConfig("build/proton.web.min.js", true, [ + removeExportsPlugin, + createBabelPlugin(), + typescript({ tsconfig: "./tsconfig.json" }), + terser(), + license({ banner: createBanner() }), + ]), +]; + +const dtsConfig = { + input: INPUT_FILE, + output: [{ file: "build/proton.d.ts", format: "es" }], + plugins: [rollupPluginDts.dts({ respectExternal: true })], +}; + +var rollup_config = [...(IS_DEV ? devConfigs : prodConfigs), dtsConfig]; + +exports.default = rollup_config; diff --git a/rollup.config-1741987711445.cjs b/rollup.config-1741987711445.cjs new file mode 100644 index 0000000..4864913 --- /dev/null +++ b/rollup.config-1741987711445.cjs @@ -0,0 +1,88 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var babel = require('@rollup/plugin-babel'); +var terser = require('@rollup/plugin-terser'); +var license = require('rollup-plugin-license'); +var typescript = require('@rollup/plugin-typescript'); +var rollupPluginDts = require('rollup-plugin-dts'); +var pkjson = require('./package.json'); +var babelrc = require('./.babelrc.json'); + +const INPUT_FILE = "src/index.js"; +const IS_DEV = process.env.NODE_ENV === "dev"; +const CURRENT_YEAR = new Date().getFullYear(); + +const createBanner = () => `/*! +* Proton v${pkjson.version} +* https://github.com/drawcall/Proton +* +* Copyright 2013-${CURRENT_YEAR}, drawcall +* Licensed under the MIT license +* http://www.opensource.org/licenses/mit-license +* +*/`; + +const removeExportsPlugin = { + name: "remove-exports", + transform(code, id) { + if (id.endsWith(INPUT_FILE)) { + console.log("remove-exports: Removing exports from", id); + return code.replace(/export\s*{[\s\S]*?};/g, ""); + } + return null; + }, +}; + +const createBabelPlugin = () => + babel({ + exclude: "node_modules/**", + babelHelpers: "bundled", + babelrc: false, + ...babelrc, + }); + +const createConfig = (outputFile, isWeb, plugins) => ({ + input: INPUT_FILE, + output: { + file: outputFile, + format: isWeb ? "iife" : "umd", + name: "Proton", + exports: isWeb ? "auto" : "named", + sourcemap: true, + ...(isWeb ? { extend: true } : {}), + }, + plugins, +}); + +const devConfigs = [ + createConfig("build/proton.js", false, [createBabelPlugin()]), + createConfig("build/proton.web.js", true, [removeExportsPlugin, createBabelPlugin()]), +]; + +const prodConfigs = [ + createConfig("build/proton.min.js", false, [ + createBabelPlugin(), + typescript({ tsconfig: "./tsconfig.json" }), + terser(), + license({ banner: createBanner() }), + ]), + createConfig("build/proton.web.min.js", true, [ + removeExportsPlugin, + createBabelPlugin(), + typescript({ tsconfig: "./tsconfig.json" }), + terser(), + license({ banner: createBanner() }), + ]), +]; + +const dtsConfig = { + input: INPUT_FILE, + output: [{ file: "build/proton.d.ts", format: "es" }], + plugins: [rollupPluginDts.dts({ respectExternal: true })], +}; + +var rollup_config = [...(IS_DEV ? devConfigs : prodConfigs), dtsConfig]; + +exports.default = rollup_config; diff --git a/src/emitter/Emitter.js b/src/emitter/Emitter.js index 014165f..171c456 100755 --- a/src/emitter/Emitter.js +++ b/src/emitter/Emitter.js @@ -114,8 +114,15 @@ export default class Emitter extends Particle { * @method removeAllParticles */ removeAllParticles() { - let i = this.particles.length; - while (i--) this.particles[i].dead = true; + const particles = this.particles; + const len = particles.length; + + // Just mark all as dead in a tight loop + for (let i = 0; i < len; i++) { + particles[i].dead = true; + } + + // Don't actually remove from array here - that will happen in next integrate() call } /** @@ -204,7 +211,10 @@ export default class Emitter extends Particle { // emitter update update(time) { this.age += time; - if (this.age >= this.life || this.dead) this.destroy(); + if (this.age >= this.life || this.dead) { + this.destroy(); + return; + } this.emitting(time); this.integrate(time); @@ -216,28 +226,77 @@ export default class Emitter extends Particle { const damping = 1 - this.damping; this.parent.integrator.calculate(this, time, damping); - const length = this.particles.length; - let i, particle; - - for (i = length - 1; i >= 0; i--) { - particle = this.particles[i]; - - // particle update + // Optimization for 500k particles: Use fast iteration with minimal GC impact + const particles = this.particles; + const length = particles.length; + const parent = this.parent; + const pool = parent.pool; + const integrator = parent.integrator; + const shouldDispatchUpdates = Boolean(this.parent || this.bindEvent); + + // Optimization: Use swap-and-pop method for removing dead particles + // This is much faster than splice for large arrays + let aliveCount = length; + let i = 0; + + // Single-pass particle update with efficient removal + while (i < aliveCount) { + const particle = particles[i]; + + // Fast update and check for dead particles particle.update(time, i); - this.parent.integrator.calculate(particle, time, damping); - this.dispatch("PARTICLE_UPDATE", particle); - - // check dead + integrator.calculate(particle, time, damping); + + // Dispatch update events only if needed and not too many particles + // Skip event dispatching for extremely large particle counts + if (shouldDispatchUpdates && length < 10000) { + this.dispatch("PARTICLE_UPDATE", particle); + } + + // Check if particle is dead if (particle.dead) { - this.dispatch("PARTICLE_DEAD", particle); - - this.parent.pool.expire(particle); - this.particles.splice(i, 1); + // Dispatch death events only when needed and not too many particles + if (shouldDispatchUpdates && length < 10000) { + this.dispatch("PARTICLE_DEAD", particle); + } + + // Fast removal: swap with the last alive particle and decrement counter + // This avoids expensive array splicing + aliveCount--; + if (i < aliveCount) { + // Only swap if this isn't already the last particle + particles[i] = particles[aliveCount]; + particles[aliveCount] = particle; + + // Return to pool + pool.expire(particle); + continue; // Don't increment i, process the swapped particle + } else { + // Last particle case + pool.expire(particle); + } } + i++; + } + + // If we have dead particles at the end, remove them all at once + if (aliveCount < length) { + particles.length = aliveCount; // Truncate the array (much faster than multiple splices) } } dispatch(event, target) { + // Optimize by skipping work if no listeners + if (!this.parent && !this.bindEvent) return; + + // For performance with many particles, only dispatch certain events + if (this.particles && this.particles.length > 50000) { + // With very large particle counts, only dispatch critical events + if (event !== "PARTICLE_CREATED" && event !== "PARTICLE_DEAD") { + return; + } + } + this.parent && this.parent.dispatchEvent(event, target); this.bindEvent && this.dispatchEvent(event, target); } @@ -245,63 +304,343 @@ export default class Emitter extends Particle { emitting(time) { if (this.stoped) return; - if (this.totalTime === "none") { - this.emitTime += time; - } else if (this.totalTime === "once") { - let i; - const length = this.rate.getValue(99999); - - if (length > 0) this.emitSpeed = length; - for (i = 0; i < length; i++) this.createParticle(); + // Maximum particles to emit in a single frame to prevent lag spikes + const MAX_EMIT_PER_FRAME = 10000; + + // Direct property access for performance + let emitTime = this.emitTime; + const totalTime = this.totalTime; + + if (totalTime === "none") { + this.emitTime = emitTime + time; + return; + } + + if (totalTime === "once") { + // Fast path for "once" emission + let numToEmit = this.rate.getValue(99999); + + // Cap emission count to prevent frame drops + if (numToEmit > MAX_EMIT_PER_FRAME) { + // Log warning only in development if trying to emit too many at once + if (process && process.env && process.env.NODE_ENV === 'development') { + console.warn(`Attempting to emit ${numToEmit} particles at once, capped to ${MAX_EMIT_PER_FRAME}`); + } + numToEmit = MAX_EMIT_PER_FRAME; + } + + if (numToEmit <= 0) return; + + // Cache emission speed and emit particles + this.emitSpeed = numToEmit; + + // Use the optimized method for bulk creation + this._fastCreateParticles(numToEmit); + + // Mark as completed this.totalTime = "none"; - } else { - this.emitTime += time; + return; + } + + // Regular emission logic - extreme optimization + emitTime += time; + this.emitTime = emitTime; + + if (emitTime < totalTime) { + // Get particle count using rate + let numToEmit = this.rate.getValue(time); + + if (numToEmit <= 0) return; + + // Cap emission to prevent lag spikes + if (numToEmit > MAX_EMIT_PER_FRAME) { + numToEmit = MAX_EMIT_PER_FRAME; + } + + this.emitSpeed = numToEmit; + + // Use fastest particle creation method + this._fastCreateParticles(numToEmit); + } + } - if (this.emitTime < this.totalTime) { - const length = this.rate.getValue(time); - let i; + /** + * Ultra-fast particle creation - no optional parameters, minimal overhead + * @param {Number} count - Number of particles to create + * @private + */ + _fastCreateParticles(count) { + // Early exit for zero count + if (count <= 0 || !this.parent) return; + + // Direct property access - avoid repeated lookups + const parent = this.parent; + const pool = parent.pool; + const particlesArr = this.particles; + const initializes = this.initializes; + const behaviours = this.behaviours; + + // Emergency circuit breaker - prevent memory issues when too many particles + const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max + if (particlesArr.length + count > MAX_SAFE_PARTICLES) { + count = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length); + if (count <= 0) return; // Already at max capacity + } + + // Use faster bulk retrieval if available + let particles; + if (pool.getBulk) { + // Get multiple particles at once from pool + particles = pool.getBulk(Particle, count); + + // Fast-path batch initialization + this._initializeParticlesBulk(particles, initializes, behaviours); + } else { + // Fast path direct initialization - optimized for huge particle counts + this._createParticlesLoop(count, pool, particlesArr, initializes, behaviours); + } + } + + /** + * High-speed loop for creating many particles + * @private + */ + _createParticlesLoop(count, pool, particlesArr, initializes, behaviours) { + // Pre-calculate array growth to avoid resizing + const newLength = particlesArr.length + count; + + // Handle array growth efficiently for large particle counts + if (particlesArr.length === 0 && count > 10000) { + try { + // Try to preallocate the array with correct capacity + particlesArr.length = count; + particlesArr.length = 0; // Reset but keep capacity + } catch (e) { + // Ignore if this optimization isn't supported + } + } + + // Cache values for dispatch check + const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + + // Minimal particle creation loop - optimized for speed + let i = 0; + let particle; + + // Using while loop (faster than for loop in many JS engines) + while (i < count) { + // Get from pool + particle = pool.get(Particle); + + // Fastest possible reset + particle.reset(); + + // Direct initialize call with cached values + InitializeUtil.initialize(this, particle, initializes); + + // Add behaviors + particle.addBehaviours(behaviours); + particle.parent = this; + + // Push to array + particlesArr.push(particle); + + // Only dispatch if absolutely necessary + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); + } + + i++; + } + } + + /** + * Bulk initialization for particles - more efficient for large batches + * @private + */ + _initializeParticlesBulk(particles, initializes, behaviours) { + const count = particles.length; + const particlesArr = this.particles; + + // Cache values for dispatch check + const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + + // One-time binding of this context for the loop + const emitter = this; + + // Bulk initialize particles + for (let i = 0; i < count; i++) { + const particle = particles[i]; + + // Initialize the particle directly + InitializeUtil.initialize(emitter, particle, initializes); + + // Set properties + particle.parent = emitter; + + // Add behaviors - use direct array if possible for better performance + particle.addBehaviours(behaviours); + + // Add to particles array + particlesArr.push(particle); + + // Only dispatch if necessary + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); + } + } + } - if (length > 0) this.emitSpeed = length; - for (i = 0; i < length; i++) this.createParticle(); + /** + * High-performance batch particle creation for large quantities + * @param {Number} length - Number of particles to create + * @param {Object|Array} [initialize] - Initialization parameters + * @param {Object|Array} [behaviour] - Behavior parameters + */ + createParticlesBatch(length, initialize, behaviour) { + // Immediate redirect to fast creation when no custom initializers/behaviors + if (!initialize && !behaviour) { + this._fastCreateParticles(length); + return; + } + + // For huge batches, split into smaller chunks + const BATCH_SIZE = 5000; + + if (length > BATCH_SIZE && length > 10000) { + // Process in chunks for very large particle counts + for (let i = 0; i < length; i += BATCH_SIZE) { + const chunkSize = Math.min(BATCH_SIZE, length - i); + this._createParticleChunk(chunkSize, initialize, behaviour); + } + } else { + // Process all at once for smaller batches + this._createParticleChunk(length, initialize, behaviour); + } + } + + /** + * Internal method to create a chunk of particles + * @private + */ + _createParticleChunk(length, initialize, behaviour) { + // Early exit for zero particles + if (length <= 0) return; + + // Cache values for reuse + const parent = this.parent; + const pool = parent.pool; + const particlesArr = this.particles; + + // Check if we'd exceed max safe count + const MAX_SAFE_PARTICLES = 1000000; // 1 million particles max + if (particlesArr.length + length > MAX_SAFE_PARTICLES) { + length = Math.max(0, MAX_SAFE_PARTICLES - particlesArr.length); + if (length <= 0) return; + } + + // Only calculate this once outside the loop + const shouldDispatch = (this.parent || this.bindEvent) && particlesArr.length < 10000; + + // Handle initializes/behaviors + const initializes = initialize ? Util.toArray(initialize) : this.initializes; + const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Pre-bind functions and cache properties for the loop + const dispatchFn = shouldDispatch ? this.dispatch.bind(this) : null; + const emitter = this; + + // Pre-allocate capacity if possible + if (Array.prototype.reserve) { + const newCapacity = particlesArr.length + length; + if (particlesArr.capacity < newCapacity) { + particlesArr.reserve(newCapacity); + } + } + + // Creation loop - unrolled for performance + let i = 0; + let particle; + + // Fast loop with minimal overhead + while (i < length) { + particle = pool.get(Particle); + + // Fastest reset possible + particle.reset(); + + // Initialize using cached values + InitializeUtil.initialize(emitter, particle, initializes); + + // Add behaviors + particle.addBehaviours(behaviours); + particle.parent = emitter; + + // Add to particles array + particlesArr.push(particle); + + // Dispatch only if needed + if (dispatchFn) { + dispatchFn("PARTICLE_CREATED", particle); } + + i++; } } /** - * Creates a single particle. - * - * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects. - * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects. - * @returns {Particle} The created particle. - * + * Creates a single particle - now optimized for performance + * but batch methods should be preferred for multiple particles */ createParticle(initialize, behaviour) { + // Fast path when we have a parent + if (!this.parent) return null; + const particle = this.parent.pool.get(Particle); - this.setupParticle(particle, initialize, behaviour); - this.dispatch("PARTICLE_CREATED", particle); + + // Direct setup + particle.reset(); + + // Handle initializes/behaviors + const initializes = initialize ? Util.toArray(initialize) : this.initializes; + const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Initialize and add behaviors + InitializeUtil.initialize(this, particle, initializes); + particle.addBehaviours(behaviours); + particle.parent = this; + + // Add to array - directly push to avoid function call + this.particles.push(particle); + + // Only dispatch if needed and not too many particles + if ((this.parent || this.bindEvent) && this.particles.length < 10000) { + this.dispatch("PARTICLE_CREATED", particle); + } return particle; } /** * Sets up a particle with initialization and behavior. - * - * @param {Particle} particle - The particle to set up. - * @param {Object|Array} [initialize] - Initialization parameters or array of initialization objects. - * @param {Object|Array} [behaviour] - Behavior object or array of behavior objects. + * @deprecated Use direct methods instead for better performance */ setupParticle(particle, initialize, behaviour) { - let initializes = this.initializes; - let behaviours = this.behaviours; - - if (initialize) initializes = Util.toArray(initialize); - if (behaviour) behaviours = Util.toArray(behaviour); - + // Direct setup particle.reset(); + + // Handle initializes/behaviors + const initializes = initialize ? Util.toArray(initialize) : this.initializes; + const behaviours = behaviour ? Util.toArray(behaviour) : this.behaviours; + + // Initialize InitializeUtil.initialize(this, particle, initializes); particle.addBehaviours(behaviours); particle.parent = this; + // Add to array this.particles.push(particle); } @@ -310,7 +649,21 @@ export default class Emitter extends Particle { */ remove() { this.stop(); - Util.destroyAll(this.particles); + + // More efficient particle cleanup + const particles = this.particles; + const len = particles.length; + + // Return all particles to pool + if (this.parent && this.parent.pool) { + const pool = this.parent.pool; + for (let i = 0; i < len; i++) { + pool.expire(particles[i]); + } + } + + // Clear array in one operation + particles.length = 0; } /** diff --git a/src/render/PixiRenderer.js b/src/render/PixiRenderer.js index c8ef8c3..a4f5bbe 100755 --- a/src/render/PixiRenderer.js +++ b/src/render/PixiRenderer.js @@ -2,9 +2,86 @@ import Types from "../utils/Types"; import ColorUtil from "../utils/ColorUtil"; import MathUtil from "../math/MathUtil"; import BaseRenderer from "./BaseRenderer"; +import Pool from "../core/Pool"; let PIXIClass; +// Counter to generate unique IDs for each renderer instance +let rendererIdCounter = 0; + +/** + * A specialized pool that ensures particles are never shared between different emitters + */ +class EmitterAwarePool extends Pool { + constructor() { + super(); + // Store pools by emitter ID to ensure separation + this.emitterPools = new Map(); + } + + /** + * Get an item from the pool, ensuring it's specific to the emitter + */ + get(target, params, emitterId) { + // Ensure we have a valid emitter ID + emitterId = emitterId || (params && params.parent && params.parent.id) || 'default'; + + // Get or create the emitter-specific pool + if (!this.emitterPools.has(emitterId)) { + this.emitterPools.set(emitterId, []); + } + + const emitterPool = this.emitterPools.get(emitterId); + + // Get from the emitter-specific pool or create new + let p; + if (emitterPool.length > 0) { + p = emitterPool.pop(); + } else { + p = this.createOrClone(target, params); + // Tag with emitter ID for tracking + p.__emitterId = emitterId; + } + + return p; + } + + /** + * Return an item to its emitter-specific pool + */ + expire(target, emitterId) { + if (!emitterId && target.__emitterId) { + emitterId = target.__emitterId; + } + + // Default to the general pool if no emitter ID is found + emitterId = emitterId || 'default'; + + // Get or create the emitter-specific pool + if (!this.emitterPools.has(emitterId)) { + this.emitterPools.set(emitterId, []); + } + + // Return to the emitter-specific pool + return this.emitterPools.get(emitterId).push(target); + } + + /** + * Clean up all pools + */ + destroy() { + super.destroy(); + + // Clear all emitter-specific pools + this.emitterPools.forEach(pool => { + pool.length = 0; + }); + + this.emitterPools.clear(); + this.emitterPools = null; + } +} + /** * Represents a PIXI-based renderer for particle systems. * @extends BaseRenderer @@ -22,7 +99,17 @@ export default class PixiRenderer extends BaseRenderer { this.color = false; this.setColor = false; this.blendMode = null; - this.pool.create = (body, particle) => this.createBody(body, particle); + + // Assign a unique ID to this renderer instance + this.rendererId = ++rendererIdCounter; + + // Create a new emitter-aware pool for this renderer + this.pixiPool = new EmitterAwarePool(); + this.pixiPool.create = (body, particle) => this.createBody(body, particle); + + // Track emitters and their particles + this.emitterMap = new Map(); + this.setPIXI(window.PIXI); this.name = "PixiRenderer"; @@ -31,26 +118,51 @@ export default class PixiRenderer extends BaseRenderer { setPIXI(PIXI) { try { PIXIClass = PIXI || { Sprite: {} }; - this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage; + this.createFromImage = PIXIClass.Sprite.from; } catch (e) {} } onProtonUpdate() {} + onEmitterAdded(emitter) { + // Add emitter to tracking map + if (!this.emitterMap.has(emitter.id)) { + this.emitterMap.set(emitter.id, new Set()); + } + } + + onEmitterRemoved(emitter) { + // Clean up emitter's tracked particles + if (this.emitterMap.has(emitter.id)) { + this.emitterMap.delete(emitter.id); + } + } + /** * @param particle */ onParticleCreated(particle) { + // Get the emitter ID for this particle and store it directly on the particle + const emitterId = particle.parent ? particle.parent.id : 'orphaned'; + + // Store emitter ID directly on the particle for when parent reference is lost + particle.__emitterId = emitterId; + if (particle.body) { - particle.body = this.pool.get(particle.body, particle); + particle.body = this.pixiPool.get(particle.body, particle, emitterId); } else { - particle.body = this.pool.get(this.circleConf, particle); + particle.body = this.pixiPool.get(this.circleConf, particle, emitterId); } if (this.blendMode) { particle.body.blendMode = this.blendMode; } + // Track this particle with its emitter + if (this.emitterMap.has(emitterId)) { + this.emitterMap.get(emitterId).add(particle); + } + this.element.addChild(particle.body); } @@ -69,8 +181,21 @@ export default class PixiRenderer extends BaseRenderer { * @param particle */ onParticleDead(particle) { + if (!particle.body) return; + this.element.removeChild(particle.body); - this.pool.expire(particle.body); + + // Use the cached emitter ID instead of accessing parent which might be null + const emitterId = particle.__emitterId || (particle.parent ? particle.parent.id : 'orphaned'); + + // Return to the emitter-specific pool + this.pixiPool.expire(particle.body, emitterId); + + // Remove from tracked particles + if (this.emitterMap.has(emitterId)) { + this.emitterMap.get(emitterId).delete(particle); + } + particle.body = null; } @@ -83,8 +208,7 @@ export default class PixiRenderer extends BaseRenderer { target.scale.x = particle.scale; target.scale.y = particle.scale; - // using cached version of MathUtil.PI_180 for slight performance increase. - target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180; + target.rotation = particle.rotation * MathUtil.PI_180; } createBody(body, particle) { @@ -95,18 +219,17 @@ export default class PixiRenderer extends BaseRenderer { createSprite(body) { const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body); - sprite.anchor.x = 0.5; - sprite.anchor.y = 0.5; + sprite.anchor.set(0.5, 0.5); return sprite; } createCircle(particle) { const graphics = new PIXIClass.Graphics(); - + if (this.stroke) { const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000; - graphics.beginStroke(stroke); + graphics.lineStyle(1, stroke); } graphics.beginFill(particle.color || 0x008ced); @@ -123,12 +246,21 @@ export default class PixiRenderer extends BaseRenderer { destroy(particles) { super.destroy(); + // Clean up tracking maps + this.emitterMap.clear(); + this.emitterMap = null; + + // Clean up the instance-specific particle pool + this.pixiPool.destroy(); + this.pixiPool = null; + let i = particles.length; while (i--) { let particle = particles[i]; if (particle.body) { this.element.removeChild(particle.body); + particle.body.destroy({ children: true }); } } } -} +} \ No newline at end of file