Subversion Repository Public Repository

Nextrek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    "uid": "2F0E4A9D5A397344415A00371159005172AE",
    "isLoaded": true,
    "lastModificationTime": 0,
    "items": {
        "name": "Component_AnimationExecutor",
        "type": "game_script",
        "order": 13,
        "content": "# ===================================================================\n#\n#   Script: Component_AnimationExecutor\n#\n#   $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_AnimationExecutor extends gs.Component\n    ###*\n    * An animation-handler component allows a UI game object to execute\n    * a flow of animations. For more information about UI animations, see help-file.\n    * \n    * @module ui\n    * @class Component_AnimationExecutor\n    * @extends gs.Component\n    * @memberof ui\n    * @constructor\n    ###\n    constructor: ->\n        super\n        \n        ###*\n        * @property initialized\n        * @type boolean\n        * @protected\n        ###\n        @initialized = no\n        \n        ###*\n        * @property waitCounter\n        * @type number\n        * @protected\n        ###\n        @waitCounter = 0\n        \n        ###*\n        * @property pointer\n        * @type number\n        * @protected\n        ###\n        @pointer = 0\n        \n        @repeat = no\n        \n    ###*\n    * Initializes the animation-handler.\n    * \n    * @method setup\n    ###\n    setup: ->\n        @initialized = yes\n   \n        return null\n    \n    execute: (animation, callback) ->\n        @animation = animation\n        @callback = callback\n        @pointer = 0\n        @waitCounter = 0\n        \n    stop: ->\n        @animation = null\n        \n    ###*\n    * Starts the specified animation.\n    * \n    * @method startAnimation\n    * @param {Object} animation - The animation to start.\n    * @param {gs.Object_Base} target - The target object of the animation.\n    * @protected\n    ###    \n    startAnimation: (animation, duration, target, animator) ->\n        switch animation.type\n            when \"sound\"\n                AudioManager.playSound(animation.sound)\n            when \"maskTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                mask = { value: animation.value, graphic: { name: animation.mask }, vague: animation.vague, sourceType: 0 }\n                animator.maskTo(mask, duration, easing)\n            when \"changeImages\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.changeImages(animation.images, duration, easing)\n            when \"playAnimation\"\n                record = RecordManager.animations[animation.animationId]\n                if record?\n                    animator.playAnimation(record)\n            when \"changeTo\"\n                value = ui.Component_BindingHandler.fieldValue(target, animation.value)\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                \n                animator.change(value, animation.field, duration, easing)\n            when \"blendTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.blendTo(animation.opacity, duration, easing)\n            when \"colorTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.colorTo(Color.fromArray(animation.color), duration, easing) \n            when \"tintTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.tintTo(Tone.fromArray(animation.tone), duration, easing) \n            when \"moveTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.moveTo(animation.position[0], animation.position[1], duration, easing)\n            when \"rotate\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.rotate(0, animation.speed, duration, easing)\n            when \"rotateTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.rotateTo(animation.angle, duration, easing)\n            when \"moveBy\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.moveBy(@object.dstRect.x + animation.position[0], @object.dstRect.y + animation.position[1], duration, easing)\n            when \"zoomTo\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.zoomTo(animation.zoom[0] / 100, animation.zoom[1] / 100, duration, easing)\n            when \"scroll\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.scroll(animation.speed[0], animation.speed[1], 0, easing)\n            when \"move\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.move(animation.speed[0], animation.speed[1], duration, easing)\n            when \"shake\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                return animator.shake({ x: animation.range[0], y: animation.range[1] }, animation.speed, duration, easing)\n            when \"appear\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.appear(target.dstRect.x, target.dstRect.y, animation.animation, easing, duration)\n            when \"disappear\"\n                easing = if animation.easing then gs.Easings.fromString(animation.easing) else null\n                animator.disappear(animation.animation, easing, duration)\n        \n        if @object.visual\n            @object.visual.update() if duration == 0\n        else if @object.behavior\n            @object.behavior.update() if duration == 0\n\n    ###*\n    * Processes the animation flow.\n    * \n    * @method processAnimation\n    * @param {Object} descriptor - The animation-descriptor containing the animation-flow.\n    * @protected\n    ### \n    processAnimation: ->\n        while @animation and @pointer < @animation.flow.length\n            animation = @animation.flow[@pointer]\n            @pointer++\n            \n            if animation.executed then continue\n            \n            if(!@object.animator)\n                @object.animator = new gs.Component_Animator()\n                @object.addComponent(@object.animator)\n                \n            duration = ui.Component_FormulaHandler.fieldValue(@object, animation.duration || 0, yes)\n            @startAnimation(animation, duration, @object, @object.animator)\n            animation.executed = yes\n            \n            if animation.wait\n                if animation.type?\n                    @waitCounter = duration\n                else\n                    @waitCounter = animation.wait #ui.Component_FormulaHandler.fieldValue(@object, animation.wait || 0, yes)\n                break\n                \n        return null\n                \n    ###*\n    * Updates the animations.\n    * \n    * @method updateAnimations\n    ###\n    updateAnimation: ->\n        if @waitCounter > 0\n            @waitCounter--\n            return\n        \n        if @pointer >= @animation.flow.length\n            @pointer = 0\n            @callback?(@object)\n            if !@repeat\n                @animation = null\n            \n        @processAnimation(@animation) if @animation\n            \n        return null\n     \n    ###*\n    * Updates the animation-handler.\n    * \n    * @method update\n    ###   \n    update: ->\n        @object.needsUpdate = yes\n        @updateAnimation() if @animation\n        \nui.Component_AnimationExecutor = Component_AnimationExecutor",
        "parentId": "01A95DA3K01E8A4CB4SBE17E790BCE1FC035",
        "folder": false,
        "scriptType": 0,
        "compiledContent": "var Component_AnimationExecutor,\n  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n  hasProp = {}.hasOwnProperty;\n\nComponent_AnimationExecutor = (function(superClass) {\n  extend(Component_AnimationExecutor, superClass);\n\n\n  /**\n  * An animation-handler component allows a UI game object to execute\n  * a flow of animations. For more information about UI animations, see help-file.\n  * \n  * @module ui\n  * @class Component_AnimationExecutor\n  * @extends gs.Component\n  * @memberof ui\n  * @constructor\n   */\n\n  function Component_AnimationExecutor() {\n    Component_AnimationExecutor.__super__.constructor.apply(this, arguments);\n\n    /**\n    * @property initialized\n    * @type boolean\n    * @protected\n     */\n    this.initialized = false;\n\n    /**\n    * @property waitCounter\n    * @type number\n    * @protected\n     */\n    this.waitCounter = 0;\n\n    /**\n    * @property pointer\n    * @type number\n    * @protected\n     */\n    this.pointer = 0;\n    this.repeat = false;\n  }\n\n\n  /**\n  * Initializes the animation-handler.\n  * \n  * @method setup\n   */\n\n  Component_AnimationExecutor.prototype.setup = function() {\n    this.initialized = true;\n    return null;\n  };\n\n  Component_AnimationExecutor.prototype.execute = function(animation, callback) {\n    this.animation = animation;\n    this.callback = callback;\n    this.pointer = 0;\n    return this.waitCounter = 0;\n  };\n\n  Component_AnimationExecutor.prototype.stop = function() {\n    return this.animation = null;\n  };\n\n\n  /**\n  * Starts the specified animation.\n  * \n  * @method startAnimation\n  * @param {Object} animation - The animation to start.\n  * @param {gs.Object_Base} target - The target object of the animation.\n  * @protected\n   */\n\n  Component_AnimationExecutor.prototype.startAnimation = function(animation, duration, target, animator) {\n    var easing, mask, record, value;\n    switch (animation.type) {\n      case \"sound\":\n        AudioManager.playSound(animation.sound);\n        break;\n      case \"maskTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        mask = {\n          value: animation.value,\n          graphic: {\n            name: animation.mask\n          },\n          vague: animation.vague,\n          sourceType: 0\n        };\n        animator.maskTo(mask, duration, easing);\n        break;\n      case \"changeImages\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.changeImages(animation.images, duration, easing);\n        break;\n      case \"playAnimation\":\n        record = RecordManager.animations[animation.animationId];\n        if (record != null) {\n          animator.playAnimation(record);\n        }\n        break;\n      case \"changeTo\":\n        value = ui.Component_BindingHandler.fieldValue(target, animation.value);\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.change(value, animation.field, duration, easing);\n        break;\n      case \"blendTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.blendTo(animation.opacity, duration, easing);\n        break;\n      case \"colorTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.colorTo(Color.fromArray(animation.color), duration, easing);\n        break;\n      case \"tintTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.tintTo(Tone.fromArray(animation.tone), duration, easing);\n        break;\n      case \"moveTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.moveTo(animation.position[0], animation.position[1], duration, easing);\n        break;\n      case \"rotate\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.rotate(0, animation.speed, duration, easing);\n        break;\n      case \"rotateTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.rotateTo(animation.angle, duration, easing);\n        break;\n      case \"moveBy\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.moveBy(this.object.dstRect.x + animation.position[0], this.object.dstRect.y + animation.position[1], duration, easing);\n        break;\n      case \"zoomTo\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.zoomTo(animation.zoom[0] / 100, animation.zoom[1] / 100, duration, easing);\n        break;\n      case \"scroll\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.scroll(animation.speed[0], animation.speed[1], 0, easing);\n        break;\n      case \"move\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.move(animation.speed[0], animation.speed[1], duration, easing);\n        break;\n      case \"shake\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        return animator.shake({\n          x: animation.range[0],\n          y: animation.range[1]\n        }, animation.speed, duration, easing);\n      case \"appear\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.appear(target.dstRect.x, target.dstRect.y, animation.animation, easing, duration);\n        break;\n      case \"disappear\":\n        easing = animation.easing ? gs.Easings.fromString(animation.easing) : null;\n        animator.disappear(animation.animation, easing, duration);\n    }\n    if (this.object.visual) {\n      if (duration === 0) {\n        return this.object.visual.update();\n      }\n    } else if (this.object.behavior) {\n      if (duration === 0) {\n        return this.object.behavior.update();\n      }\n    }\n  };\n\n\n  /**\n  * Processes the animation flow.\n  * \n  * @method processAnimation\n  * @param {Object} descriptor - The animation-descriptor containing the animation-flow.\n  * @protected\n   */\n\n  Component_AnimationExecutor.prototype.processAnimation = function() {\n    var animation, duration;\n    while (this.animation && this.pointer < this.animation.flow.length) {\n      animation = this.animation.flow[this.pointer];\n      this.pointer++;\n      if (animation.executed) {\n        continue;\n      }\n      if (!this.object.animator) {\n        this.object.animator = new gs.Component_Animator();\n        this.object.addComponent(this.object.animator);\n      }\n      duration = ui.Component_FormulaHandler.fieldValue(this.object, animation.duration || 0, true);\n      this.startAnimation(animation, duration, this.object, this.object.animator);\n      animation.executed = true;\n      if (animation.wait) {\n        if (animation.type != null) {\n          this.waitCounter = duration;\n        } else {\n          this.waitCounter = animation.wait;\n        }\n        break;\n      }\n    }\n    return null;\n  };\n\n\n  /**\n  * Updates the animations.\n  * \n  * @method updateAnimations\n   */\n\n  Component_AnimationExecutor.prototype.updateAnimation = function() {\n    if (this.waitCounter > 0) {\n      this.waitCounter--;\n      return;\n    }\n    if (this.pointer >= this.animation.flow.length) {\n      this.pointer = 0;\n      if (typeof this.callback === \"function\") {\n        this.callback(this.object);\n      }\n      if (!this.repeat) {\n        this.animation = null;\n      }\n    }\n    if (this.animation) {\n      this.processAnimation(this.animation);\n    }\n    return null;\n  };\n\n\n  /**\n  * Updates the animation-handler.\n  * \n  * @method update\n   */\n\n  Component_AnimationExecutor.prototype.update = function() {\n    this.object.needsUpdate = true;\n    if (this.animation) {\n      return this.updateAnimation();\n    }\n  };\n\n  return Component_AnimationExecutor;\n\n})(gs.Component);\n\nui.Component_AnimationExecutor = Component_AnimationExecutor;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsMkJBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7Ozs7Ozs7RUFVYSxxQ0FBQTtJQUNULDhEQUFBLFNBQUE7O0FBRUE7Ozs7O0lBS0EsSUFBQyxDQUFBLFdBQUQsR0FBZTs7QUFFZjs7Ozs7SUFLQSxJQUFDLENBQUEsV0FBRCxHQUFlOztBQUVmOzs7OztJQUtBLElBQUMsQ0FBQSxPQUFELEdBQVc7SUFFWCxJQUFDLENBQUEsTUFBRCxHQUFVO0VBeEJEOzs7QUEwQmI7Ozs7Ozt3Q0FLQSxLQUFBLEdBQU8sU0FBQTtJQUNILElBQUMsQ0FBQSxXQUFELEdBQWU7QUFFZixXQUFPO0VBSEo7O3dDQUtQLE9BQUEsR0FBUyxTQUFDLFNBQUQsRUFBWSxRQUFaO0lBQ0wsSUFBQyxDQUFBLFNBQUQsR0FBYTtJQUNiLElBQUMsQ0FBQSxRQUFELEdBQVk7SUFDWixJQUFDLENBQUEsT0FBRCxHQUFXO1dBQ1gsSUFBQyxDQUFBLFdBQUQsR0FBZTtFQUpWOzt3Q0FNVCxJQUFBLEdBQU0sU0FBQTtXQUNGLElBQUMsQ0FBQSxTQUFELEdBQWE7RUFEWDs7O0FBR047Ozs7Ozs7Ozt3Q0FRQSxjQUFBLEdBQWdCLFNBQUMsU0FBRCxFQUFZLFFBQVosRUFBc0IsTUFBdEIsRUFBOEIsUUFBOUI7QUFDWixRQUFBO0FBQUEsWUFBTyxTQUFTLENBQUMsSUFBakI7QUFBQSxXQUNTLE9BRFQ7UUFFUSxZQUFZLENBQUMsU0FBYixDQUF1QixTQUFTLENBQUMsS0FBakM7QUFEQztBQURULFdBR1MsUUFIVDtRQUlRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLElBQUEsR0FBTztVQUFFLEtBQUEsRUFBTyxTQUFTLENBQUMsS0FBbkI7VUFBMEIsT0FBQSxFQUFTO1lBQUUsSUFBQSxFQUFNLFNBQVMsQ0FBQyxJQUFsQjtXQUFuQztVQUE2RCxLQUFBLEVBQU8sU0FBUyxDQUFDLEtBQTlFO1VBQXFGLFVBQUEsRUFBWSxDQUFqRzs7UUFDUCxRQUFRLENBQUMsTUFBVCxDQUFnQixJQUFoQixFQUFzQixRQUF0QixFQUFnQyxNQUFoQztBQUhDO0FBSFQsV0FPUyxjQVBUO1FBUVEsTUFBQSxHQUFZLFNBQVMsQ0FBQyxNQUFiLEdBQXlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBWCxDQUFzQixTQUFTLENBQUMsTUFBaEMsQ0FBekIsR0FBc0U7UUFDL0UsUUFBUSxDQUFDLFlBQVQsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLEVBQXdDLFFBQXhDLEVBQWtELE1BQWxEO0FBRkM7QUFQVCxXQVVTLGVBVlQ7UUFXUSxNQUFBLEdBQVMsYUFBYSxDQUFDLFVBQVcsQ0FBQSxTQUFTLENBQUMsV0FBVjtRQUNsQyxJQUFHLGNBQUg7VUFDSSxRQUFRLENBQUMsYUFBVCxDQUF1QixNQUF2QixFQURKOztBQUZDO0FBVlQsV0FjUyxVQWRUO1FBZVEsS0FBQSxHQUFRLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUE1QixDQUF1QyxNQUF2QyxFQUErQyxTQUFTLENBQUMsS0FBekQ7UUFDUixNQUFBLEdBQVksU0FBUyxDQUFDLE1BQWIsR0FBeUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFYLENBQXNCLFNBQVMsQ0FBQyxNQUFoQyxDQUF6QixHQUFzRTtRQUUvRSxRQUFRLENBQUMsTUFBVCxDQUFnQixLQUFoQixFQUF1QixTQUFTLENBQUMsS0FBakMsRUFBd0MsUUFBeEMsRUFBa0QsTUFBbEQ7QUFKQztBQWRULFdBbUJTLFNBbkJUO1FBb0JRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxPQUFULENBQWlCLFNBQVMsQ0FBQyxPQUEzQixFQUFvQyxRQUFwQyxFQUE4QyxNQUE5QztBQUZDO0FBbkJULFdBc0JTLFNBdEJUO1FBdUJRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxPQUFULENBQWlCLEtBQUssQ0FBQyxTQUFOLENBQWdCLFNBQVMsQ0FBQyxLQUExQixDQUFqQixFQUFtRCxRQUFuRCxFQUE2RCxNQUE3RDtBQUZDO0FBdEJULFdBeUJTLFFBekJUO1FBMEJRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxNQUFULENBQWdCLElBQUksQ0FBQyxTQUFMLENBQWUsU0FBUyxDQUFDLElBQXpCLENBQWhCLEVBQWdELFFBQWhELEVBQTBELE1BQTFEO0FBRkM7QUF6QlQsV0E0QlMsUUE1QlQ7UUE2QlEsTUFBQSxHQUFZLFNBQVMsQ0FBQyxNQUFiLEdBQXlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBWCxDQUFzQixTQUFTLENBQUMsTUFBaEMsQ0FBekIsR0FBc0U7UUFDL0UsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsU0FBUyxDQUFDLFFBQVMsQ0FBQSxDQUFBLENBQW5DLEVBQXVDLFNBQVMsQ0FBQyxRQUFTLENBQUEsQ0FBQSxDQUExRCxFQUE4RCxRQUE5RCxFQUF3RSxNQUF4RTtBQUZDO0FBNUJULFdBK0JTLFFBL0JUO1FBZ0NRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxNQUFULENBQWdCLENBQWhCLEVBQW1CLFNBQVMsQ0FBQyxLQUE3QixFQUFvQyxRQUFwQyxFQUE4QyxNQUE5QztBQUZDO0FBL0JULFdBa0NTLFVBbENUO1FBbUNRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxRQUFULENBQWtCLFNBQVMsQ0FBQyxLQUE1QixFQUFtQyxRQUFuQyxFQUE2QyxNQUE3QztBQUZDO0FBbENULFdBcUNTLFFBckNUO1FBc0NRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxNQUFULENBQWdCLElBQUMsQ0FBQSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQWhCLEdBQW9CLFNBQVMsQ0FBQyxRQUFTLENBQUEsQ0FBQSxDQUF2RCxFQUEyRCxJQUFDLENBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFoQixHQUFvQixTQUFTLENBQUMsUUFBUyxDQUFBLENBQUEsQ0FBbEcsRUFBc0csUUFBdEcsRUFBZ0gsTUFBaEg7QUFGQztBQXJDVCxXQXdDUyxRQXhDVDtRQXlDUSxNQUFBLEdBQVksU0FBUyxDQUFDLE1BQWIsR0FBeUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFYLENBQXNCLFNBQVMsQ0FBQyxNQUFoQyxDQUF6QixHQUFzRTtRQUMvRSxRQUFRLENBQUMsTUFBVCxDQUFnQixTQUFTLENBQUMsSUFBSyxDQUFBLENBQUEsQ0FBZixHQUFvQixHQUFwQyxFQUF5QyxTQUFTLENBQUMsSUFBSyxDQUFBLENBQUEsQ0FBZixHQUFvQixHQUE3RCxFQUFrRSxRQUFsRSxFQUE0RSxNQUE1RTtBQUZDO0FBeENULFdBMkNTLFFBM0NUO1FBNENRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxNQUFULENBQWdCLFNBQVMsQ0FBQyxLQUFNLENBQUEsQ0FBQSxDQUFoQyxFQUFvQyxTQUFTLENBQUMsS0FBTSxDQUFBLENBQUEsQ0FBcEQsRUFBd0QsQ0FBeEQsRUFBMkQsTUFBM0Q7QUFGQztBQTNDVCxXQThDUyxNQTlDVDtRQStDUSxNQUFBLEdBQVksU0FBUyxDQUFDLE1BQWIsR0FBeUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFYLENBQXNCLFNBQVMsQ0FBQyxNQUFoQyxDQUF6QixHQUFzRTtRQUMvRSxRQUFRLENBQUMsSUFBVCxDQUFjLFNBQVMsQ0FBQyxLQUFNLENBQUEsQ0FBQSxDQUE5QixFQUFrQyxTQUFTLENBQUMsS0FBTSxDQUFBLENBQUEsQ0FBbEQsRUFBc0QsUUFBdEQsRUFBZ0UsTUFBaEU7QUFGQztBQTlDVCxXQWlEUyxPQWpEVDtRQWtEUSxNQUFBLEdBQVksU0FBUyxDQUFDLE1BQWIsR0FBeUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFYLENBQXNCLFNBQVMsQ0FBQyxNQUFoQyxDQUF6QixHQUFzRTtBQUMvRSxlQUFPLFFBQVEsQ0FBQyxLQUFULENBQWU7VUFBRSxDQUFBLEVBQUcsU0FBUyxDQUFDLEtBQU0sQ0FBQSxDQUFBLENBQXJCO1VBQXlCLENBQUEsRUFBRyxTQUFTLENBQUMsS0FBTSxDQUFBLENBQUEsQ0FBNUM7U0FBZixFQUFpRSxTQUFTLENBQUMsS0FBM0UsRUFBa0YsUUFBbEYsRUFBNEYsTUFBNUY7QUFuRGYsV0FvRFMsUUFwRFQ7UUFxRFEsTUFBQSxHQUFZLFNBQVMsQ0FBQyxNQUFiLEdBQXlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBWCxDQUFzQixTQUFTLENBQUMsTUFBaEMsQ0FBekIsR0FBc0U7UUFDL0UsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUEvQixFQUFrQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQWpELEVBQW9ELFNBQVMsQ0FBQyxTQUE5RCxFQUF5RSxNQUF6RSxFQUFpRixRQUFqRjtBQUZDO0FBcERULFdBdURTLFdBdkRUO1FBd0RRLE1BQUEsR0FBWSxTQUFTLENBQUMsTUFBYixHQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxDQUFDLE1BQWhDLENBQXpCLEdBQXNFO1FBQy9FLFFBQVEsQ0FBQyxTQUFULENBQW1CLFNBQVMsQ0FBQyxTQUE3QixFQUF3QyxNQUF4QyxFQUFnRCxRQUFoRDtBQXpEUjtJQTJEQSxJQUFHLElBQUMsQ0FBQSxNQUFNLENBQUMsTUFBWDtNQUNJLElBQTJCLFFBQUEsS0FBWSxDQUF2QztlQUFBLElBQUMsQ0FBQSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWYsQ0FBQSxFQUFBO09BREo7S0FBQSxNQUVLLElBQUcsSUFBQyxDQUFBLE1BQU0sQ0FBQyxRQUFYO01BQ0QsSUFBNkIsUUFBQSxLQUFZLENBQXpDO2VBQUEsSUFBQyxDQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBakIsQ0FBQSxFQUFBO09BREM7O0VBOURPOzs7QUFpRWhCOzs7Ozs7Ozt3Q0FPQSxnQkFBQSxHQUFrQixTQUFBO0FBQ2QsUUFBQTtBQUFBLFdBQU0sSUFBQyxDQUFBLFNBQUQsSUFBZSxJQUFDLENBQUEsT0FBRCxHQUFXLElBQUMsQ0FBQSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQWhEO01BQ0ksU0FBQSxHQUFZLElBQUMsQ0FBQSxTQUFTLENBQUMsSUFBSyxDQUFBLElBQUMsQ0FBQSxPQUFEO01BQzVCLElBQUMsQ0FBQSxPQUFEO01BRUEsSUFBRyxTQUFTLENBQUMsUUFBYjtBQUEyQixpQkFBM0I7O01BRUEsSUFBRyxDQUFDLElBQUMsQ0FBQSxNQUFNLENBQUMsUUFBWjtRQUNJLElBQUMsQ0FBQSxNQUFNLENBQUMsUUFBUixHQUF1QixJQUFBLEVBQUUsQ0FBQyxrQkFBSCxDQUFBO1FBQ3ZCLElBQUMsQ0FBQSxNQUFNLENBQUMsWUFBUixDQUFxQixJQUFDLENBQUEsTUFBTSxDQUFDLFFBQTdCLEVBRko7O01BSUEsUUFBQSxHQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUE1QixDQUF1QyxJQUFDLENBQUEsTUFBeEMsRUFBZ0QsU0FBUyxDQUFDLFFBQVYsSUFBc0IsQ0FBdEUsRUFBeUUsSUFBekU7TUFDWCxJQUFDLENBQUEsY0FBRCxDQUFnQixTQUFoQixFQUEyQixRQUEzQixFQUFxQyxJQUFDLENBQUEsTUFBdEMsRUFBOEMsSUFBQyxDQUFBLE1BQU0sQ0FBQyxRQUF0RDtNQUNBLFNBQVMsQ0FBQyxRQUFWLEdBQXFCO01BRXJCLElBQUcsU0FBUyxDQUFDLElBQWI7UUFDSSxJQUFHLHNCQUFIO1VBQ0ksSUFBQyxDQUFBLFdBQUQsR0FBZSxTQURuQjtTQUFBLE1BQUE7VUFHSSxJQUFDLENBQUEsV0FBRCxHQUFlLFNBQVMsQ0FBQyxLQUg3Qjs7QUFJQSxjQUxKOztJQWRKO0FBcUJBLFdBQU87RUF0Qk87OztBQXdCbEI7Ozs7Ozt3Q0FLQSxlQUFBLEdBQWlCLFNBQUE7SUFDYixJQUFHLElBQUMsQ0FBQSxXQUFELEdBQWUsQ0FBbEI7TUFDSSxJQUFDLENBQUEsV0FBRDtBQUNBLGFBRko7O0lBSUEsSUFBRyxJQUFDLENBQUEsT0FBRCxJQUFZLElBQUMsQ0FBQSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQS9CO01BQ0ksSUFBQyxDQUFBLE9BQUQsR0FBVzs7UUFDWCxJQUFDLENBQUEsU0FBVSxJQUFDLENBQUE7O01BQ1osSUFBRyxDQUFDLElBQUMsQ0FBQSxNQUFMO1FBQ0ksSUFBQyxDQUFBLFNBQUQsR0FBYSxLQURqQjtPQUhKOztJQU1BLElBQWlDLElBQUMsQ0FBQSxTQUFsQztNQUFBLElBQUMsQ0FBQSxnQkFBRCxDQUFrQixJQUFDLENBQUEsU0FBbkIsRUFBQTs7QUFFQSxXQUFPO0VBYk07OztBQWVqQjs7Ozs7O3dDQUtBLE1BQUEsR0FBUSxTQUFBO0lBQ0osSUFBQyxDQUFBLE1BQU0sQ0FBQyxXQUFSLEdBQXNCO0lBQ3RCLElBQXNCLElBQUMsQ0FBQSxTQUF2QjthQUFBLElBQUMsQ0FBQSxlQUFELENBQUEsRUFBQTs7RUFGSTs7OztHQXpMOEIsRUFBRSxDQUFDOztBQTZMN0MsRUFBRSxDQUFDLDJCQUFILEdBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4jXG4jICAgU2NyaXB0OiBDb21wb25lbnRfQW5pbWF0aW9uRXhlY3V0b3JcbiNcbiMgICAkJENPUFlSSUdIVCQkXG4jXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmNsYXNzIENvbXBvbmVudF9BbmltYXRpb25FeGVjdXRvciBleHRlbmRzIGdzLkNvbXBvbmVudFxuICAgICMjIypcbiAgICAqIEFuIGFuaW1hdGlvbi1oYW5kbGVyIGNvbXBvbmVudCBhbGxvd3MgYSBVSSBnYW1lIG9iamVjdCB0byBleGVjdXRlXG4gICAgKiBhIGZsb3cgb2YgYW5pbWF0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVUkgYW5pbWF0aW9ucywgc2VlIGhlbHAtZmlsZS5cbiAgICAqIFxuICAgICogQG1vZHVsZSB1aVxuICAgICogQGNsYXNzIENvbXBvbmVudF9BbmltYXRpb25FeGVjdXRvclxuICAgICogQGV4dGVuZHMgZ3MuQ29tcG9uZW50XG4gICAgKiBAbWVtYmVyb2YgdWlcbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjI1xuICAgIGNvbnN0cnVjdG9yOiAtPlxuICAgICAgICBzdXBlclxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEBwcm9wZXJ0eSBpbml0aWFsaXplZFxuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICMjI1xuICAgICAgICBAaW5pdGlhbGl6ZWQgPSBub1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEBwcm9wZXJ0eSB3YWl0Q291bnRlclxuICAgICAgICAqIEB0eXBlIG51bWJlclxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEB3YWl0Q291bnRlciA9IDBcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBAcHJvcGVydHkgcG9pbnRlclxuICAgICAgICAqIEB0eXBlIG51bWJlclxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEBwb2ludGVyID0gMFxuICAgICAgICBcbiAgICAgICAgQHJlcGVhdCA9IG5vXG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIEluaXRpYWxpemVzIHRoZSBhbmltYXRpb24taGFuZGxlci5cbiAgICAqIFxuICAgICogQG1ldGhvZCBzZXR1cFxuICAgICMjI1xuICAgIHNldHVwOiAtPlxuICAgICAgICBAaW5pdGlhbGl6ZWQgPSB5ZXNcbiAgIFxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIFxuICAgIGV4ZWN1dGU6IChhbmltYXRpb24sIGNhbGxiYWNrKSAtPlxuICAgICAgICBAYW5pbWF0aW9uID0gYW5pbWF0aW9uXG4gICAgICAgIEBjYWxsYmFjayA9IGNhbGxiYWNrXG4gICAgICAgIEBwb2ludGVyID0gMFxuICAgICAgICBAd2FpdENvdW50ZXIgPSAwXG4gICAgICAgIFxuICAgIHN0b3A6IC0+XG4gICAgICAgIEBhbmltYXRpb24gPSBudWxsXG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIFN0YXJ0cyB0aGUgc3BlY2lmaWVkIGFuaW1hdGlvbi5cbiAgICAqIFxuICAgICogQG1ldGhvZCBzdGFydEFuaW1hdGlvblxuICAgICogQHBhcmFtIHtPYmplY3R9IGFuaW1hdGlvbiAtIFRoZSBhbmltYXRpb24gdG8gc3RhcnQuXG4gICAgKiBAcGFyYW0ge2dzLk9iamVjdF9CYXNlfSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCBvZiB0aGUgYW5pbWF0aW9uLlxuICAgICogQHByb3RlY3RlZFxuICAgICMjIyAgICBcbiAgICBzdGFydEFuaW1hdGlvbjogKGFuaW1hdGlvbiwgZHVyYXRpb24sIHRhcmdldCwgYW5pbWF0b3IpIC0+XG4gICAgICAgIHN3aXRjaCBhbmltYXRpb24udHlwZVxuICAgICAgICAgICAgd2hlbiBcInNvdW5kXCJcbiAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIucGxheVNvdW5kKGFuaW1hdGlvbi5zb3VuZClcbiAgICAgICAgICAgIHdoZW4gXCJtYXNrVG9cIlxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgbWFzayA9IHsgdmFsdWU6IGFuaW1hdGlvbi52YWx1ZSwgZ3JhcGhpYzogeyBuYW1lOiBhbmltYXRpb24ubWFzayB9LCB2YWd1ZTogYW5pbWF0aW9uLnZhZ3VlLCBzb3VyY2VUeXBlOiAwIH1cbiAgICAgICAgICAgICAgICBhbmltYXRvci5tYXNrVG8obWFzaywgZHVyYXRpb24sIGVhc2luZylcbiAgICAgICAgICAgIHdoZW4gXCJjaGFuZ2VJbWFnZXNcIlxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgYW5pbWF0b3IuY2hhbmdlSW1hZ2VzKGFuaW1hdGlvbi5pbWFnZXMsIGR1cmF0aW9uLCBlYXNpbmcpXG4gICAgICAgICAgICB3aGVuIFwicGxheUFuaW1hdGlvblwiXG4gICAgICAgICAgICAgICAgcmVjb3JkID0gUmVjb3JkTWFuYWdlci5hbmltYXRpb25zW2FuaW1hdGlvbi5hbmltYXRpb25JZF1cbiAgICAgICAgICAgICAgICBpZiByZWNvcmQ/XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdG9yLnBsYXlBbmltYXRpb24ocmVjb3JkKVxuICAgICAgICAgICAgd2hlbiBcImNoYW5nZVRvXCJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHVpLkNvbXBvbmVudF9CaW5kaW5nSGFuZGxlci5maWVsZFZhbHVlKHRhcmdldCwgYW5pbWF0aW9uLnZhbHVlKVxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgYW5pbWF0b3IuY2hhbmdlKHZhbHVlLCBhbmltYXRpb24uZmllbGQsIGR1cmF0aW9uLCBlYXNpbmcpXG4gICAgICAgICAgICB3aGVuIFwiYmxlbmRUb1wiXG4gICAgICAgICAgICAgICAgZWFzaW5nID0gaWYgYW5pbWF0aW9uLmVhc2luZyB0aGVuIGdzLkVhc2luZ3MuZnJvbVN0cmluZyhhbmltYXRpb24uZWFzaW5nKSBlbHNlIG51bGxcbiAgICAgICAgICAgICAgICBhbmltYXRvci5ibGVuZFRvKGFuaW1hdGlvbi5vcGFjaXR5LCBkdXJhdGlvbiwgZWFzaW5nKVxuICAgICAgICAgICAgd2hlbiBcImNvbG9yVG9cIlxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgYW5pbWF0b3IuY29sb3JUbyhDb2xvci5mcm9tQXJyYXkoYW5pbWF0aW9uLmNvbG9yKSwgZHVyYXRpb24sIGVhc2luZykgXG4gICAgICAgICAgICB3aGVuIFwidGludFRvXCJcbiAgICAgICAgICAgICAgICBlYXNpbmcgPSBpZiBhbmltYXRpb24uZWFzaW5nIHRoZW4gZ3MuRWFzaW5ncy5mcm9tU3RyaW5nKGFuaW1hdGlvbi5lYXNpbmcpIGVsc2UgbnVsbFxuICAgICAgICAgICAgICAgIGFuaW1hdG9yLnRpbnRUbyhUb25lLmZyb21BcnJheShhbmltYXRpb24udG9uZSksIGR1cmF0aW9uLCBlYXNpbmcpIFxuICAgICAgICAgICAgd2hlbiBcIm1vdmVUb1wiXG4gICAgICAgICAgICAgICAgZWFzaW5nID0gaWYgYW5pbWF0aW9uLmVhc2luZyB0aGVuIGdzLkVhc2luZ3MuZnJvbVN0cmluZyhhbmltYXRpb24uZWFzaW5nKSBlbHNlIG51bGxcbiAgICAgICAgICAgICAgICBhbmltYXRvci5tb3ZlVG8oYW5pbWF0aW9uLnBvc2l0aW9uWzBdLCBhbmltYXRpb24ucG9zaXRpb25bMV0sIGR1cmF0aW9uLCBlYXNpbmcpXG4gICAgICAgICAgICB3aGVuIFwicm90YXRlXCJcbiAgICAgICAgICAgICAgICBlYXNpbmcgPSBpZiBhbmltYXRpb24uZWFzaW5nIHRoZW4gZ3MuRWFzaW5ncy5mcm9tU3RyaW5nKGFuaW1hdGlvbi5lYXNpbmcpIGVsc2UgbnVsbFxuICAgICAgICAgICAgICAgIGFuaW1hdG9yLnJvdGF0ZSgwLCBhbmltYXRpb24uc3BlZWQsIGR1cmF0aW9uLCBlYXNpbmcpXG4gICAgICAgICAgICB3aGVuIFwicm90YXRlVG9cIlxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgYW5pbWF0b3Iucm90YXRlVG8oYW5pbWF0aW9uLmFuZ2xlLCBkdXJhdGlvbiwgZWFzaW5nKVxuICAgICAgICAgICAgd2hlbiBcIm1vdmVCeVwiXG4gICAgICAgICAgICAgICAgZWFzaW5nID0gaWYgYW5pbWF0aW9uLmVhc2luZyB0aGVuIGdzLkVhc2luZ3MuZnJvbVN0cmluZyhhbmltYXRpb24uZWFzaW5nKSBlbHNlIG51bGxcbiAgICAgICAgICAgICAgICBhbmltYXRvci5tb3ZlQnkoQG9iamVjdC5kc3RSZWN0LnggKyBhbmltYXRpb24ucG9zaXRpb25bMF0sIEBvYmplY3QuZHN0UmVjdC55ICsgYW5pbWF0aW9uLnBvc2l0aW9uWzFdLCBkdXJhdGlvbiwgZWFzaW5nKVxuICAgICAgICAgICAgd2hlbiBcInpvb21Ub1wiXG4gICAgICAgICAgICAgICAgZWFzaW5nID0gaWYgYW5pbWF0aW9uLmVhc2luZyB0aGVuIGdzLkVhc2luZ3MuZnJvbVN0cmluZyhhbmltYXRpb24uZWFzaW5nKSBlbHNlIG51bGxcbiAgICAgICAgICAgICAgICBhbmltYXRvci56b29tVG8oYW5pbWF0aW9uLnpvb21bMF0gLyAxMDAsIGFuaW1hdGlvbi56b29tWzFdIC8gMTAwLCBkdXJhdGlvbiwgZWFzaW5nKVxuICAgICAgICAgICAgd2hlbiBcInNjcm9sbFwiXG4gICAgICAgICAgICAgICAgZWFzaW5nID0gaWYgYW5pbWF0aW9uLmVhc2luZyB0aGVuIGdzLkVhc2luZ3MuZnJvbVN0cmluZyhhbmltYXRpb24uZWFzaW5nKSBlbHNlIG51bGxcbiAgICAgICAgICAgICAgICBhbmltYXRvci5zY3JvbGwoYW5pbWF0aW9uLnNwZWVkWzBdLCBhbmltYXRpb24uc3BlZWRbMV0sIDAsIGVhc2luZylcbiAgICAgICAgICAgIHdoZW4gXCJtb3ZlXCJcbiAgICAgICAgICAgICAgICBlYXNpbmcgPSBpZiBhbmltYXRpb24uZWFzaW5nIHRoZW4gZ3MuRWFzaW5ncy5mcm9tU3RyaW5nKGFuaW1hdGlvbi5lYXNpbmcpIGVsc2UgbnVsbFxuICAgICAgICAgICAgICAgIGFuaW1hdG9yLm1vdmUoYW5pbWF0aW9uLnNwZWVkWzBdLCBhbmltYXRpb24uc3BlZWRbMV0sIGR1cmF0aW9uLCBlYXNpbmcpXG4gICAgICAgICAgICB3aGVuIFwic2hha2VcIlxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFuaW1hdG9yLnNoYWtlKHsgeDogYW5pbWF0aW9uLnJhbmdlWzBdLCB5OiBhbmltYXRpb24ucmFuZ2VbMV0gfSwgYW5pbWF0aW9uLnNwZWVkLCBkdXJhdGlvbiwgZWFzaW5nKVxuICAgICAgICAgICAgd2hlbiBcImFwcGVhclwiXG4gICAgICAgICAgICAgICAgZWFzaW5nID0gaWYgYW5pbWF0aW9uLmVhc2luZyB0aGVuIGdzLkVhc2luZ3MuZnJvbVN0cmluZyhhbmltYXRpb24uZWFzaW5nKSBlbHNlIG51bGxcbiAgICAgICAgICAgICAgICBhbmltYXRvci5hcHBlYXIodGFyZ2V0LmRzdFJlY3QueCwgdGFyZ2V0LmRzdFJlY3QueSwgYW5pbWF0aW9uLmFuaW1hdGlvbiwgZWFzaW5nLCBkdXJhdGlvbilcbiAgICAgICAgICAgIHdoZW4gXCJkaXNhcHBlYXJcIlxuICAgICAgICAgICAgICAgIGVhc2luZyA9IGlmIGFuaW1hdGlvbi5lYXNpbmcgdGhlbiBncy5FYXNpbmdzLmZyb21TdHJpbmcoYW5pbWF0aW9uLmVhc2luZykgZWxzZSBudWxsXG4gICAgICAgICAgICAgICAgYW5pbWF0b3IuZGlzYXBwZWFyKGFuaW1hdGlvbi5hbmltYXRpb24sIGVhc2luZywgZHVyYXRpb24pXG4gICAgICAgIFxuICAgICAgICBpZiBAb2JqZWN0LnZpc3VhbFxuICAgICAgICAgICAgQG9iamVjdC52aXN1YWwudXBkYXRlKCkgaWYgZHVyYXRpb24gPT0gMFxuICAgICAgICBlbHNlIGlmIEBvYmplY3QuYmVoYXZpb3JcbiAgICAgICAgICAgIEBvYmplY3QuYmVoYXZpb3IudXBkYXRlKCkgaWYgZHVyYXRpb24gPT0gMFxuXG4gICAgIyMjKlxuICAgICogUHJvY2Vzc2VzIHRoZSBhbmltYXRpb24gZmxvdy5cbiAgICAqIFxuICAgICogQG1ldGhvZCBwcm9jZXNzQW5pbWF0aW9uXG4gICAgKiBAcGFyYW0ge09iamVjdH0gZGVzY3JpcHRvciAtIFRoZSBhbmltYXRpb24tZGVzY3JpcHRvciBjb250YWluaW5nIHRoZSBhbmltYXRpb24tZmxvdy5cbiAgICAqIEBwcm90ZWN0ZWRcbiAgICAjIyMgXG4gICAgcHJvY2Vzc0FuaW1hdGlvbjogLT5cbiAgICAgICAgd2hpbGUgQGFuaW1hdGlvbiBhbmQgQHBvaW50ZXIgPCBAYW5pbWF0aW9uLmZsb3cubGVuZ3RoXG4gICAgICAgICAgICBhbmltYXRpb24gPSBAYW5pbWF0aW9uLmZsb3dbQHBvaW50ZXJdXG4gICAgICAgICAgICBAcG9pbnRlcisrXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIGFuaW1hdGlvbi5leGVjdXRlZCB0aGVuIGNvbnRpbnVlXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCFAb2JqZWN0LmFuaW1hdG9yKVxuICAgICAgICAgICAgICAgIEBvYmplY3QuYW5pbWF0b3IgPSBuZXcgZ3MuQ29tcG9uZW50X0FuaW1hdG9yKClcbiAgICAgICAgICAgICAgICBAb2JqZWN0LmFkZENvbXBvbmVudChAb2JqZWN0LmFuaW1hdG9yKVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgZHVyYXRpb24gPSB1aS5Db21wb25lbnRfRm9ybXVsYUhhbmRsZXIuZmllbGRWYWx1ZShAb2JqZWN0LCBhbmltYXRpb24uZHVyYXRpb24gfHwgMCwgeWVzKVxuICAgICAgICAgICAgQHN0YXJ0QW5pbWF0aW9uKGFuaW1hdGlvbiwgZHVyYXRpb24sIEBvYmplY3QsIEBvYmplY3QuYW5pbWF0b3IpXG4gICAgICAgICAgICBhbmltYXRpb24uZXhlY3V0ZWQgPSB5ZXNcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgYW5pbWF0aW9uLndhaXRcbiAgICAgICAgICAgICAgICBpZiBhbmltYXRpb24udHlwZT9cbiAgICAgICAgICAgICAgICAgICAgQHdhaXRDb3VudGVyID0gZHVyYXRpb25cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEB3YWl0Q291bnRlciA9IGFuaW1hdGlvbi53YWl0ICN1aS5Db21wb25lbnRfRm9ybXVsYUhhbmRsZXIuZmllbGRWYWx1ZShAb2JqZWN0LCBhbmltYXRpb24ud2FpdCB8fCAwLCB5ZXMpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBVcGRhdGVzIHRoZSBhbmltYXRpb25zLlxuICAgICogXG4gICAgKiBAbWV0aG9kIHVwZGF0ZUFuaW1hdGlvbnNcbiAgICAjIyNcbiAgICB1cGRhdGVBbmltYXRpb246IC0+XG4gICAgICAgIGlmIEB3YWl0Q291bnRlciA+IDBcbiAgICAgICAgICAgIEB3YWl0Q291bnRlci0tXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgXG4gICAgICAgIGlmIEBwb2ludGVyID49IEBhbmltYXRpb24uZmxvdy5sZW5ndGhcbiAgICAgICAgICAgIEBwb2ludGVyID0gMFxuICAgICAgICAgICAgQGNhbGxiYWNrPyhAb2JqZWN0KVxuICAgICAgICAgICAgaWYgIUByZXBlYXRcbiAgICAgICAgICAgICAgICBAYW5pbWF0aW9uID0gbnVsbFxuICAgICAgICAgICAgXG4gICAgICAgIEBwcm9jZXNzQW5pbWF0aW9uKEBhbmltYXRpb24pIGlmIEBhbmltYXRpb25cbiAgICAgICAgICAgIFxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICBcbiAgICAjIyMqXG4gICAgKiBVcGRhdGVzIHRoZSBhbmltYXRpb24taGFuZGxlci5cbiAgICAqIFxuICAgICogQG1ldGhvZCB1cGRhdGVcbiAgICAjIyMgICBcbiAgICB1cGRhdGU6IC0+XG4gICAgICAgIEBvYmplY3QubmVlZHNVcGRhdGUgPSB5ZXNcbiAgICAgICAgQHVwZGF0ZUFuaW1hdGlvbigpIGlmIEBhbmltYXRpb25cbiAgICAgICAgXG51aS5Db21wb25lbnRfQW5pbWF0aW9uRXhlY3V0b3IgPSBDb21wb25lbnRfQW5pbWF0aW9uRXhlY3V0b3IiXX0=\n//# sourceURL=Component_AnimationExecutor_140.js"
    },
    "summary": [
        "name",
        "type"
    ]
}

Commits for Nextrek/s2s/data/2F0E4A9D5A397344415A00371159005172AE.json

Diff revisions: vs.
Revision Author Commited Message
1084 MOliva picture MOliva Fri 11 May, 2018 12:41:55 +0000