-
Notifications
You must be signed in to change notification settings - Fork 2
/
4655.1d85d823.iframe.bundle.js
2 lines (2 loc) · 364 KB
/
4655.1d85d823.iframe.bundle.js
1
2
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[4655],{"./node_modules/@code-dot-org/maze/dist/main.js":module=>{window,module.exports=function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=22)}([function(t,e,i){"use strict";var r=i(1),n=t.exports;n.Direction={NORTH:0,EAST:1,SOUTH:2,WEST:3},n.SquareType={WALL:0,OPEN:1,START:2,FINISH:3,OBSTACLE:4,STARTANDFINISH:5},n.TurnDirection={LEFT:-1,RIGHT:1},n.MoveDirection={FORWARD:0,RIGHT:1,BACKWARD:2,LEFT:3},n.directionToDxDy=function(t){switch(t){case n.Direction.NORTH:return{dx:0,dy:-1};case n.Direction.EAST:return{dx:1,dy:0};case n.Direction.SOUTH:return{dx:0,dy:1};case n.Direction.WEST:return{dx:-1,dy:0}}throw new Error("Invalid direction value"+t)},n.directionToFrame=function(t){return r.mod(4*t,16)},n.constrainDirection4=function(t){return r.mod(t,4)}},function(t,e,i){"use strict";var r=i(5);t.exports.mod=function(t,e){return(t%e+e)%e},t.exports.randomValue=function(t){return t[Math.floor(Math.random()*t.length)]},t.exports.rotate2DArray=function(t){return t[0].map((function(e,i){return t.map((function(e){return e[t.length-i-1]}))}))},t.exports.range=function(t,e){for(var i=[],r=t;r<=e;r++)i.push(r);return i},t.exports.createUuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}))},t.exports.isFarmerSkin=function(t){return/farmer(_night)?/.test(t)},t.exports.isBeeSkin=function(t){return/bee(_night)?/.test(t)},t.exports.isCollectorSkin=function(t){return/collector(_night)?/.test(t)},t.exports.isScratSkin=function(t){return/scrat/.test(t)},t.exports.isPlanterSkin=function(t){return/planter/.test(t)},t.exports.isHarvesterSkin=function(t){return/harvester/.test(t)},t.exports.isWordSearchSkin=function(t){return"letters"===t},t.exports.isNeighborhoodSkin=function(t){return"neighborhood"===t},t.exports.getSubtypeForSkin=function(e){return t.exports.isFarmerSkin(e)?i(8):t.exports.isBeeSkin(e)?i(9):t.exports.isCollectorSkin(e)?i(12):t.exports.isWordSearchSkin(e)?i(13):t.exports.isScratSkin(e)?i(30):t.exports.isHarvesterSkin(e)?i(14):t.exports.isPlanterSkin(e)?i(16):t.exports.isNeighborhoodSkin(e)?i(18):i(2)},t.exports.getPegmanElementId=function(t,e){var i="";return null!=e&&e!==r.DEFAULT_PEGMAN_ID&&(i="-"+e),""+t+i}},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(4),s=i(25),a=i(0).SquareType,u=i(26).EventEmitter,l={10010:[4,0],10001:[3,3],11e3:[0,1],10100:[0,2],11010:[4,1],10101:[3,2],10110:[0,0],10011:[2,0],11001:[4,2],11100:[2,3],11110:[1,1],10111:[1,0],11011:[2,1],11101:[1,2],11111:[2,2],null0:[4,3],null1:[3,0],null2:[3,1],null3:[0,3],null4:[1,3]};t.exports=function(t){function e(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=o.skin,a=o.level;r(this,e);var u=n(this,t.call(this));return u.maze_=i,u.skin_=s,u.startDirection=a?a.startDirection:0,u}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getValue=function(t,e){return this.getCell(t,e).getCurrentValue()},e.prototype.setValue=function(t,e,i){this.getCell(t,e).setCurrentValue(i)},e.prototype.getCell=function(t,e){return this.maze_.map.currentStaticGrid[t][e]},e.prototype.getCellClass=function(){return o},e.prototype.loadAudio=function(t){},e.prototype.playAudio_=function(t){this.maze_.playAudio&&this.maze_.playAudio(t)},e.prototype.createDrawer=function(t){this.drawer=new s(this.maze_.map,this.skin_.dirt,t)},e.prototype.reset=function(){this.emit("reset")},e.prototype.isFarmer=function(){return!1},e.prototype.isCollector=function(){return!1},e.prototype.isScrat=function(){return!1},e.prototype.isWordSearch=function(){return!1},e.prototype.isBee=function(){return!1},e.prototype.isNeighborhood=function(){return!1},e.prototype.isOnPathStr_=function(t,e){return this.isWallOrOutOfBounds_(t,e)?"0":"1"},e.prototype.isWallOrOutOfBounds_=function(t,e){return this.maze_.map.getTile(e,t)===a.WALL||void 0===this.maze_.map.getTile(e,t)},e.prototype.getEmptyTile=function(t,e,i,r){var n=void 0;if(r||!i&&Math.random()>.2)this.wallMap[e][t]=0,n="null0";else{var o=Math.floor(1+4*Math.random());this.wallMap[e][t]=o,n="null"+o}return n},e.prototype.drawMapTiles=function(t){var e=this,i=0,r=void 0;this.maze_.map.forEachCell((function(n,o,s){if(r=e.isOnPathStr_(s,o)+e.isOnPathStr_(s,o-1)+e.isOnPathStr_(s+1,o)+e.isOnPathStr_(s,o+1)+e.isOnPathStr_(s-1,o),!l[r]){var a="00000"!==r,u=a&&r.split("1").length>2;r=e.getEmptyTile(s,o,a,u)}e.drawTile(t,l[r],o,s,i),e.drawer.updateItemImage(o,s,!1),i++}))},e.prototype.scheduleDirtChange=function(t,e){this.drawer.updateItemImage(t,e,!0)},e.prototype.drawTile=function(t,e,i,r,n){this.drawer.drawTile(t,e,i,r,n,this.skin_.tiles)},e.prototype.initWallMap=function(){this.wallMap=new Array(this.maze_.map.ROWS);for(var t=0;t<this.maze_.map.ROWS;t++)this.wallMap[t]=new Array(this.maze_.map.COLS)},e.prototype.initStartFinish=function(){this.start=void 0,this.finish=void 0;for(var t=0;t<this.maze_.map.ROWS;t++)for(var e=0;e<this.maze_.map.COLS;e++){var i=this.maze_.map.getTile(t,e);i===a.START?this.start={x:e,y:t}:i===a.FINISH?this.finish={x:e,y:t}:i===a.STARTANDFINISH&&(this.start={x:e,y:t},this.finish={x:e,y:t})}},e.prototype.allowMultiplePegmen=function(){return!1},e}(u)},function(t,e,i){"use strict";var r=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],r=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(r=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);r=!0);}catch(t){n=!0,o=t}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},n="http://www.w3.org/2000/svg";t.exports=function(){function t(e,i,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.map_=e,this.asset_=i,this.svg_=r}return t.cellId=function(t,e,i){return t+"_"+e+"_"+i},t.prototype.getAsset=function(t,e,i){return this.asset_},t.prototype.reset=function(){},t.prototype.updateItemImage=function(t,e,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:50;return this.drawImage_("",t,e,r)},t.prototype.drawImage_=function(e,i,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:50,o=this.svg_.querySelector("#"+t.cellId(e,i,r)),s=this.getAsset(e,i,r);if(o||s)return(o=this.getOrCreateImage_(e,i,r,!0,n))&&(o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s||""),o.setAttribute("visibility",s?"visible":"hidden")),o},t.prototype.getOrCreateImage_=function(e,i,r){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,a=this.getAsset(e,i,r),u=t.cellId(e,i,r),l=this.svg_.querySelector("#"+u);if(l)return l;if(a){var p=this.svg_.getElementsByClassName("pegman-location")[0],c=void 0;if(o){c=t.cellId(e+"Clip",i,r);var h=document.createElementNS(n,"clipPath");h.setAttribute("id",c);var f=document.createElementNS(n,"rect");f.setAttribute("x",r*s),f.setAttribute("y",i*s),f.setAttribute("width",s),f.setAttribute("height",s),h.appendChild(f),this.svg_.insertBefore(h,p)}return(l=document.createElementNS(n,"image")).setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),l.setAttribute("height",s),l.setAttribute("width",s),l.setAttribute("x",s*r),l.setAttribute("y",s*i),l.setAttribute("id",u),o&&l.setAttribute("clip-path","url(#"+c+")"),this.svg_.insertBefore(l,p),l}},t.prototype.updateOrCreateText_=function(e,i,r,o){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:2,u=arguments.length>6&&void 0!==arguments[6]?arguments[6]:2,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"karel-counter-text",p=this.svg_.getElementsByClassName("pegman-location")[0],c=this.svg_.querySelector("#"+t.cellId(e,i,r));return c||((c=document.createElementNS(n,"text")).setAttribute("class",l),c.setAttribute("x",(r+1)*s-a),c.setAttribute("y",(i+1)*s-u),c.setAttribute("id",t.cellId(e,i,r)),c.appendChild(document.createTextNode("")),this.svg_.insertBefore(c,p)),c.firstChild.nodeValue=o,c},t.prototype.drawTile=function(t,e,i,r,n,o){this.drawTileHelper(t,e,i,r,n,o,250,200,50)},t.prototype.drawTileHelper=function(t,e,i,o,s,a,u,l,p){var c=r(e,2),h=c[0],f=c[1],m=document.createElementNS(n,"clipPath");m.setAttribute("id","tileClipPath"+s);var d=document.createElementNS(n,"rect");d.setAttribute("width",p),d.setAttribute("height",p),d.setAttribute("x",o*p),d.setAttribute("y",i*p),m.appendChild(d),t.appendChild(m);var y=document.createElementNS(n,"image");y.setAttribute("id","tileElement"+s),y.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),y.setAttribute("height",l),y.setAttribute("width",u),y.setAttribute("clip-path","url(#tileClipPath"+s+")"),y.setAttribute("x",(o-h)*p),y.setAttribute("y",(i-f)*p),t.appendChild(y);var g=document.createElementNS(n,"animate");g.setAttribute("id","tileAnimation"+s),g.setAttribute("attributeType","CSS"),g.setAttribute("attributeName","opacity"),g.setAttribute("from",1),g.setAttribute("to",0),g.setAttribute("dur","1s"),g.setAttribute("begin","indefinite"),y.appendChild(g)},t}(),t.exports.SQUARE_SIZE=50,t.exports.SVG_NS=n},function(t,e,i){"use strict";t.exports=function(){function t(e,i,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.tileType_=e,this.originalValue_=i,this.currentValue_=void 0,this.resetCurrentValue(),this.range_=isNaN(r)?i:r}return t.prototype.clone=function(){var t=this.constructor.deserialize(this.serialize());return t.setCurrentValue(this.currentValue_),t},t.prototype.getTile=function(){return this.tileType_},t.prototype.hasValue=function(){return void 0!==this.currentValue_},t.prototype.isDirt=function(){return void 0!==this.currentValue_},t.prototype.isVariableRange=function(){return this.range_!==this.originalValue_},t.prototype.isVariable=function(){return this.isVariableRange()},t.prototype.getOriginalValue=function(){return this.originalValue_},t.prototype.getCurrentValue=function(){return this.currentValue_},t.prototype.setCurrentValue=function(t){this.currentValue_=t},t.prototype.resetCurrentValue=function(){this.currentValue_=this.originalValue_},t.prototype.getPossibleGridAssets=function(){var e=[];if(this.isVariableRange())for(var i=Math.min(this.originalValue_,this.range_),r=Math.max(this.originalValue_,this.range_),n=i;n<=r;n++)e.push(new t(this.tileType_,n));else e.push(this);return e},t.prototype.serialize=function(){return{tileType:this.tileType_,value:this.originalValue_,range:this.range_}},t.deserialize=function(e){return new t(e.tileType,e.value,e.range)},t.parseFromOldValues=function(e,i){e=parseInt(e),i=parseInt(i);var r,n=void 0;return r=parseInt(e),isNaN(i)||0===i||(n=i),new t(r,n)},t}()},function(t,e,i){"use strict";t.exports.SVG_NS="http://www.w3.org/2000/svg",t.exports.DEFAULT_PEGMAN_ID="default",t.exports.pegmanElements={PEGMAN:"pegman",IDLE:"idlePegman",CLIP_RECT:"clipRect",FADEOUT:"pegmanFadeoutAnimation",WALL:"wallPegman",WALL_ANIMATION:"wallAnimation",MOVE:"movePegman",CELEBRATE:"celebratePegman"}},function(t,e,i){"use strict";var r=i(5),n=r.SVG_NS,o=r.pegmanElements,s=i(0),a=i(1),u=a.createUuid,l=a.getPegmanElementId,p=s.SquareType;function c(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50;return Math.floor(i*(e+.5)-t.pegmanHeight/2+t.pegmanYOffset)}function h(t,e,i,r,n,o){var s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:50,a=t.pegmanXOffset||0;e.setAttribute("x",r*s-o*t.pegmanWidth+1+a),e.setAttribute("y",c(t,n,s)),i.setAttribute("x",r*s+1+a),i.setAttribute("y",e.getAttribute("y"))}function f(t,e,i,r,a,p){var c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:50,f=document.createElementNS(n,"clipPath"),m="pegmanClipPath-"+u();f.setAttribute("id",m);var d=document.createElementNS(n,"rect");d.setAttribute("id",l(o.CLIP_RECT,e)),d.setAttribute("width",t.pegmanWidth),d.setAttribute("height",t.pegmanHeight),f.appendChild(d),p.appendChild(f);var y=document.createElementNS(n,"image");y.setAttribute("id",l(o.PEGMAN,e)),y.setAttribute("class","pegman-location"),y.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t.avatar),y.setAttribute("height",t.pegmanHeight);var g=t.pegmanSheetWidth||21*t.pegmanWidth;y.setAttribute("width",g),y.setAttribute("clip-path","url(#"+m+")"),p.appendChild(y),h(t,y,d,i,r,s.directionToFrame(a),c);var b=document.createElementNS(n,"animate");b.setAttribute("id",l(o.FADEOUT,e)),b.setAttribute("attributeType","CSS"),b.setAttribute("attributeName","opacity"),b.setAttribute("from",1),b.setAttribute("to",0),b.setAttribute("dur","1s"),b.setAttribute("begin","indefinite"),y.appendChild(b)}t.exports=function(t,e,i,r){var o,s,a,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,l=r.COLS*u,c=r.ROWS*u,h=document.createElementNS(n,"rect");h.setAttribute("width",l),h.setAttribute("height",c),h.setAttribute("fill","#F1EEE7"),h.setAttribute("stroke-width",1),h.setAttribute("stroke","#CCB"),t.appendChild(h),e.background&&((a=document.createElementNS(n,"image")).setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.background),a.setAttribute("height",c),a.setAttribute("width",l),a.setAttribute("x",0),a.setAttribute("y",0),t.appendChild(a)),i.drawMapTiles(t);var m=document.createElementNS(n,"path");if(m.setAttribute("id","hintPath"),m.setAttribute("stroke","#c00"),m.setAttribute("stroke-width","5"),m.setAttribute("fill","none"),m.setAttribute("stroke-linecap","round"),m.setAttribute("stroke-linejoin","round"),t.appendChild(m),i.start&&f(e,void 0,i.start.x,i.start.y,i.startDirection,t,u),i.finish&&e.goalIdle){var d=document.createElementNS(n,"image");d.setAttribute("id","finish"),d.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.goalIdle),d.setAttribute("height",43),d.setAttribute("width",50),t.appendChild(d),d.setAttribute("x",u*(i.finish.x+.5)-d.getAttribute("width")/2),d.setAttribute("y",u*(i.finish.y+.9)-d.getAttribute("height")),d.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.goalIdle),d.setAttribute("visibility","visible")}if(e.obstacleIdle){var y=0;for(s=0;s<r.ROWS;s++)for(o=0;o<r.COLS;o++){if(r.getTile(s,o)===p.OBSTACLE){var g=document.createElementNS(n,"image");g.setAttribute("id","obstacle"+y),g.setAttribute("height",43*e.obstacleScale),g.setAttribute("width",50*e.obstacleScale),g.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.obstacleIdle),g.setAttribute("x",u*(o+.5)-g.getAttribute("width")/2),g.setAttribute("y",u*(s+.9)-g.getAttribute("height")),t.appendChild(g)}++y}}},t.exports.getPegmanYForRow=c,t.exports.displayPegman=h,t.exports.addNewPegman=f},function(t,e,i){"use strict";var r=[];t.exports.setTimeout=function(t,e){var i=window.setTimeout.apply(window,arguments);return r.push(i),i},t.exports.clearTimeouts=function(){r.forEach(window.clearTimeout,window),r.length=0},t.exports.clearTimeout=function(t){window.clearTimeout(t);var e=r.indexOf(t);e>-1&&r.splice(e,1)};var n=[];t.exports.setInterval=function(t,e){var i=window.setInterval.apply(window,arguments);return n.push(i),i},t.exports.clearIntervals=function(){n.forEach(window.clearInterval,window),n.length=0},t.exports.clearInterval=function(t){window.clearInterval(t);var e=o.indexOf(t);e>-1&&o.splice(e,1);var i=n.indexOf(t);i>-1&&n.splice(i,1)};var o=[];t.exports.timedLoop=function(t,e){var i=setInterval(e,t);return o.push(i),i},t.exports.stopTimedLoop=function(t){void 0===t?o.slice().forEach((function(t){return e.clearInterval(t)})):clearInterval(t)}},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(2);t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.isFarmer=function(){return!0},e}(o)},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(1).randomValue,s=i(10),a=i(11),u=i(27);t.exports=function(t){function e(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r(this,e);var s=n(this,t.call(this,i,o)),a=o.level;return s.defaultFlowerColor_=a&&"redWithNectar"===a.flowerType?"red":"purple",s.userChecks_=[],s.overrideStepSpeed=2,s.honey_=void 0,s.nectars_=void 0,s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.isBee=function(){return!0},e.prototype.getCellClass=function(){return a},e.prototype.loadAudio=function(t){t.beeSound&&(this.maze_.loadAudio(t.nectarSound,"nectar"),this.maze_.loadAudio(t.honeySound,"honey"))},e.prototype.createDrawer=function(t){this.drawer=new u(this.maze_.map,this.skin_,t,this)},e.prototype.reset=function(){this.honey_=0,this.nectars_=[];for(var e=0;e<this.maze_.map.currentStaticGrid.length;e++){this.userChecks_[e]=[];for(var i=0;i<this.maze_.map.currentStaticGrid[e].length;i++)this.userChecks_[e][i]={checkedForFlower:!1,checkedForHive:!1,checkedForNectar:!1}}t.prototype.reset.call(this)},e.prototype.getHoneyCount=function(){return this.honey_},e.prototype.getNectarCount=function(){return this.nectars_.length},e.prototype.isHive=function(t,e){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]&&(this.userChecks_[t][e].checkedForHive=!0),this.maze_.map.currentStaticGrid[t][e].isHive()},e.prototype.isFlower=function(t,e){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]&&(this.userChecks_[t][e].checkedForFlower=!0),this.maze_.map.currentStaticGrid[t][e].isFlower()},e.prototype.isCloudable=function(t,e){return this.maze_.map.currentStaticGrid[t][e].isStaticCloud()},e.prototype.shouldCheckCloud=function(t,e){return this.maze_.map.getVariableCell(t,e).isStaticCloud()},e.prototype.shouldCheckPurple=function(t,e){return this.isPurpleFlower(t,e)&&!this.maze_.map.getVariableCell(t,e).isVariableRange()},e.prototype.checkedCloud=function(t,e){return this.userChecks_[t][e].checkedForFlower||this.userChecks_[t][e].checkedForHive},e.prototype.checkedAllClouded=function(){for(var t=0;t<this.maze_.map.currentStaticGrid.length;t++)for(var e=0;e<this.maze_.map.currentStaticGrid[t].length;e++)if(this.shouldCheckCloud(t,e)&&!this.checkedCloud(t,e))return!1;return!0},e.prototype.checkedAllPurple=function(){for(var t=0;t<this.maze_.map.currentStaticGrid.length;t++)for(var e=0;e<this.maze_.map.currentStaticGrid[t].length;e++)if(this.shouldCheckPurple(t,e)&&!this.userChecks_[t][e].checkedForNectar)return!1;return!0},e.prototype.isRedFlower=function(t,e){return!!this.isFlower(t,e,!1)&&(!!this.maze_.map.currentStaticGrid[t][e].isRedFlower()||!this.maze_.map.currentStaticGrid[t][e].isPurpleFlower()&&"red"===this.defaultFlowerColor_)},e.prototype.isPurpleFlower=function(t,e){return this.isFlower(t,e,!1)&&!this.isRedFlower(t,e)},e.prototype.hiveRemainingCapacity=function(t,e){if(!this.isHive(t,e))return 0;var i=this.getValue(t,e);return-99===i?1/0:-98===i?0:i},e.prototype.flowerRemainingCapacity=function(t,e){if(!this.isFlower(t,e))return 0;var i=this.getValue(t,e);return 99===i?1/0:98===i?0:i},e.prototype.madeHoneyAt=function(t,e){-99!==this.getValue(t,e)&&this.setValue(t,e,this.getValue(t,e)-1),this.honey_+=1},e.prototype.gotNectarAt=function(t,e){99!==this.getValue(t,e)&&this.setValue(t,e,this.getValue(t,e)-1),this.nectars_.push({row:t,col:e})},e.prototype.tryGetNectar=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY();return this.isFlower(e,t)?0===this.flowerRemainingCapacity(e,t)?(this.emit("flowerEmpty"),!1):(this.gotNectarAt(e,t),!0):(this.emit("notAtFlower"),!1)},e.prototype.tryMakeHoney=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY();return this.isHive(e,t)?0===this.hiveRemainingCapacity(e,t)?(this.emit("hiveFull"),!1):(this.madeHoneyAt(e,t),!0):(this.emit("notAtHive"),!1)},e.prototype.nectarRemaining=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.maze_.getPegmanX(),i=this.maze_.getPegmanY();return t&&(this.userChecks_[i][e].checkedForNectar=!0),this.flowerRemainingCapacity(i,e)},e.prototype.honeyAvailable=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY();return this.hiveRemainingCapacity(e,t)},e.prototype.animateGetNectar=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY();if(this.getValue(e,t)<=0)throw new Error("Shouldn't be able to end up with a nectar animation if there was no nectar to be had");this.playAudio_("nectar"),this.gotNectarAt(e,t),this.drawer.updateItemImage(e,t,!0)},e.prototype.animateMakeHoney=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY();if(!this.isHive(e,t))throw new Error("Shouldn't be able to end up with a honey animation if we arent at a hive or dont have nectar");this.playAudio_("honey"),this.madeHoneyAt(e,t),this.drawer.updateItemImage(e,t,!0)},e.prototype.getEmptyTile=function(t,e,i){for(var r=["null3","null4","null0"],n=i?2*r.length:6*r.length,s=0;s<n;s++)r.push("null1");return o(r)},e.prototype.drawTile=function(e,i,r,n,o){if(t.prototype.drawTile.call(this,e,i,r,n,o),(r+n)%2==0){var s=!this.isWallOrOutOfBounds_(n,r);this.drawer.addCheckerboardTile(r,n,s)}},e}(s)},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(2);t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.reset=function(){this.maze_.map.resetDirt()},e.prototype.collectedEverything=function(){return!this.maze_.map.currentStaticGrid.some((function(t){return t.some((function(t){return t.isDirt()&&t.getCurrentValue()>0}))}))},e.prototype.succeeded=function(){return this.collectedEverything()},e}(o)},function(t,e,i){"use strict";var r=i(4),n=i(0).SquareType,o={NONE:void 0,HIVE:0,FLOWER:1,VARIABLE:2},s={NONE:void 0,STATIC:0,HIVE_OR_FLOWER:1,FLOWER_OR_NOTHING:2,HIVE_OR_NOTHING:3,ANY:4},a={DEFAULT:void 0,RED:0,PURPLE:1};t.exports=function(t){function e(i,r,n,o,s,a){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),r===e.FeatureType.NONE&&(n=void 0,a=void 0);var u=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,n,a));return u.featureType_=r,u.flowerColor_=s,u.cloudType_=o,u}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.isFlower=function(){return this.featureType_===o.FLOWER},e.prototype.isHive=function(){return this.featureType_===o.HIVE},e.prototype.isRedFlower=function(){return this.isFlower()&&this.flowerColor_===a.RED},e.prototype.isPurpleFlower=function(){return this.isFlower()&&this.flowerColor_===a.PURPLE},e.prototype.isStaticCloud=function(){return this.cloudType_===s.STATIC},e.prototype.isVariableCloud=function(){return this.cloudType_!==s.NONE&&this.cloudType_!==s.STATIC},e.prototype.isVariable=function(){return this.isVariableRange()||this.isVariableCloud()},e.prototype.getPossibleGridAssets=function(){var t=[];if(this.isVariableCloud()){var i=new e(this.tileType_,o.FLOWER,this.originalValue_,s.STATIC,this.flowerColor_),r=new e(this.tileType_,o.HIVE,this.originalValue_,s.STATIC),n=new e(this.tileType_,o.NONE,void 0,s.STATIC);switch(this.cloudType_){case s.HIVE_OR_FLOWER:t=[i,r];break;case s.FLOWER_OR_NOTHING:t=[i,n];break;case s.HIVE_OR_NOTHING:t=[r,n];break;case s.ANY:t=[i,r,n]}}else if(this.isVariableRange())for(var u=this.originalValue_;u<=this.range_;u++)t.push(new e(this.tileType_,o.FLOWER,u,s.NONE,a.PURPLE));else t.push(this);return t},e.prototype.serialize=function(){return Object.assign({},t.prototype.serialize.call(this),{featureType:this.featureType_,cloudType:this.cloudType_,flowerColor:this.flowerColor_})},e.deserialize=function(t){return new e(t.tileType,t.featureType,t.value,t.cloudType,t.flowerColor,t.range)},e.parseFromOldValues=function(t,i){t=t.toString(),i=parseInt(i);var r=void 0,u=void 0,l=void 0,p=void 0,c=void 0;return!isNaN(i)&&t.match(/[1|R|P|FC]/)&&0!==i?(r=n.OPEN,u=i>0?o.FLOWER:o.HIVE,l=Math.abs(i),p="FC"===t?s.STATIC:s.NONE,c="R"===t?a.RED:"P"===t?a.PURPLE:a.DEFAULT):r=parseInt(t),new e(r,u,l,p,c)},e}(r),t.exports.FeatureType=o,t.exports.CloudType=s,t.exports.FlowerColor=a},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(2),s=i(28);t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.scheduleDirtChange=function(e,i){t.prototype.scheduleDirtChange.call(this,e,i),this.collectSoundsCount&&(this.collectSoundsI=this.collectSoundsI||0,this.playAudio_("collect"+this.collectSoundsI),this.collectSoundsI+=1,this.collectSoundsI%=this.collectSoundsCount),this.emit("collected",this.getTotalCollected())},e.prototype.isCollector=function(){return!0},e.prototype.tryCollect=function(t,e){var i=this.maze_.map.getValue(t,e);return void 0===i||i<1?(this.emit("collectedTooMany"),!1):(this.maze_.map.setValue(t,e,i-1),!0)},e.prototype.getTotalCollected=function(){var t=0;return this.maze_.map.forEachCell((function(e,i,r){e.isDirt()&&(t+=e.getOriginalValue()-e.getCurrentValue())})),t},e.prototype.loadAudio=function(t){var e=this;t.collectSounds&&(this.collectSoundsCount=t.collectSounds.length,t.collectSounds.forEach((function(t,i){e.maze_.loadAudio(t,"collect"+i)})))},e.prototype.createDrawer=function(t){this.drawer=new s(this.maze_.map,this.skin_.goal,t)},e.prototype.getEmptyTile=function(){return"null0"},e.prototype.drawTile=function(e,i,r,n,o){t.prototype.drawTile.call(this,e,i,r,n,o),this.drawCorners(e,r,n,o)},e.prototype.drawCorners=function(t,e,i,r){var n=this,o={NE:[1,-1],NW:[-1,-1],SE:[1,1],SW:[-1,1]},s="http://www.w3.org/2000/svg",a=t.getElementsByClassName("pegman-location")[0];this.isWallOrOutOfBounds_(i,e)||Object.keys(o).filter((function(t){var r=o[t];return!n.isWallOrOutOfBounds_(i+r[0],e)&&!n.isWallOrOutOfBounds_(i,e+r[1])&&n.isWallOrOutOfBounds_(i+r[0],e+r[1])})).forEach((function(u){var l=document.createElementNS(s,"clipPath");l.setAttribute("id","tileCorner"+u+"ClipPath"+r);var p=document.createElementNS(s,"rect");p.setAttribute("width",25),p.setAttribute("height",25);var c=o[u];p.setAttribute("x",50*i+50*(c[0]+1)/4),p.setAttribute("y",50*e+50*(c[1]+1)/4),l.appendChild(p),t.appendChild(l);var h=document.createElementNS(s,"image");h.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n.skin_.corners),h.setAttribute("height",50),h.setAttribute("width",50),h.setAttribute("x",50*i),h.setAttribute("y",50*e),h.setAttribute("id","tileCorner"+u+r),h.setAttribute("clip-path","url(#"+l.id+")"),t.insertBefore(h,a)}))},e}(o)},function(t,e,i){"use strict";var r=i(2),n=i(29),o=i(0).SquareType,s=i(1).randomValue,a=function(t){function e(i,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,r));return n.goal_=r.level.searchWord,n.visited_="",n.map_=r.level.map,n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getVisited=function(){return this.visited_},e.prototype.isWordSearch=function(){return!0},e.prototype.createDrawer=function(t){this.drawer=new n(this.maze_.map,"",t)},e.prototype.isOpen_=function(t,e){var i=this.map_;return void 0!==i[t]&&void 0!==i[t][e]&&i[t][e]!==o.WALL},e.prototype.openNeighbors_=function(t,e){var i=[];return this.isOpen_(t+1,e)&&i.push([t+1,e]),this.isOpen_(t-1,e)&&i.push([t-1,e]),this.isOpen_(t,e+1)&&i.push([t,e+1]),this.isOpen_(t,e-1)&&i.push([t,e-1]),i},e.prototype.restrictedValues_=function(t,i){for(var r=this.map_,n=this.openNeighbors_(t,i),o=[],s=0;s<n.length;s++)for(var a=this.openNeighbors_(n[s][0],n[s][1]),u=0;u<a.length;u++){var l=a[u][0],p=a[u][1],c=e.letterValue(r[l][p],!1);o.push(c,!1)}return o},e.prototype.drawMapTiles=function(t){for(var i=void 0,r=void 0,n=0;n<this.map_.length;n++)for(var o=0;o<this.map_[n].length;o++){var s=this.map_[n][o];s===e.EMPTY_CHAR?(r=this.restrictedValues_(n,o),i=e.randomLetter(r)):i=e.letterValue(s,!0),this.drawTile(t,i,n,o)}},e.prototype.resetTiles=function(){for(var t=0;t<this.map_.length;t++)for(var e=0;e<this.map_[t].length;e++)this.drawer.updateTileHighlight(t,e,!1);document.getElementById("currentWordContents").textContent="",this.visited_=""},e.prototype.markTileVisited=function(t,e,i){var r=document.getElementById(n.cellId("letter",t,e));this.visited_+=r.textContent,i&&(this.drawer.updateTileHighlight(t,e,!0),document.getElementById("currentWordContents").textContent=this.visited_)},e}(r);a.START_CHAR="-",a.EMPTY_CHAR="_",a.ALL_CHARS=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],a.letterValue=function(t){if("number"==typeof t)return a.START_CHAR;if("string"==typeof t)return 2===t.length&&"_"===t[0]?t[1]:t[0];throw new Error("unexpected value for letterValue")},a.randomLetter=function(t){var e=a.ALL_CHARS;return t&&(t=new Set(t),e=e.filter((function(e){return!t.has(e)}))),s(e)},t.exports=a},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(10),s=i(15),a=i(31);t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getCellClass=function(){return s},e.prototype.loadAudio=function(t){t.harvestSound&&this.maze_.loadAudio(t.harvestSound,"harvest")},e.prototype.createDrawer=function(t){this.drawer=new a(this.maze_.map,this.skin_,t,this)},e.prototype.hasCorn=function(){return this.hasCrop(s.FeatureType.CORN)},e.prototype.hasPumpkin=function(){return this.hasCrop(s.FeatureType.PUMPKIN)},e.prototype.hasLettuce=function(){return this.hasCrop(s.FeatureType.LETTUCE)},e.prototype.hasCrop=function(t){var e=this.maze_.getPegmanX(),i=this.maze_.getPegmanY(),r=this.getCell(i,e);return r.featureType()===t&&r.getCurrentValue()>0},e.prototype.atCorn=function(){return this.atCrop(s.FeatureType.CORN)},e.prototype.atPumpkin=function(){return this.atCrop(s.FeatureType.PUMPKIN)},e.prototype.atLettuce=function(){return this.atCrop(s.FeatureType.LETTUCE)},e.prototype.atCrop=function(t){var e=this.maze_.getPegmanX(),i=this.maze_.getPegmanY();return this.getCell(i,e).featureType()===t},e.prototype.gotCropAt=function(t,e){var i=this.getCell(t,e);i.setCurrentValue(i.getCurrentValue()-1)},e.prototype.tryGetCorn=function(){return this.tryGetCrop(s.FeatureType.CORN)},e.prototype.tryGetPumpkin=function(){return this.tryGetCrop(s.FeatureType.PUMPKIN)},e.prototype.tryGetLettuce=function(){return this.tryGetCrop(s.FeatureType.LETTUCE)},e.prototype.tryGetCrop=function(t){var e=this.maze_.getPegmanX(),i=this.maze_.getPegmanY(),r=this.getCell(i,e);return r.featureType()!==t?(this.emit("wrongCrop"),!1):0===r.getCurrentValue()?(this.emit("emptyCrop"),!1):(this.gotCropAt(i,e),!0)},e.prototype.animateGetCorn=function(){this.animateGetCrop(s.FeatureType.CORN)},e.prototype.animateGetPumpkin=function(){this.animateGetCrop(s.FeatureType.PUMPKIN)},e.prototype.animateGetLettuce=function(){this.animateGetCrop(s.FeatureType.LETTUCE)},e.prototype.animateGetCrop=function(t){var e=this.maze_.getPegmanX(),i=this.maze_.getPegmanY(),r=this.getCell(i,e);if(r.featureType()!==t)throw new Error("Shouldn't be able to harvest the wrong kind of crop");if(r.getCurrentValue()<=0)throw new Error("Shouldn't be able to end up with a harvest animation if there was nothing left to harvest");this.playAudio_("harvest"),this.gotCropAt(i,e),this.drawer.updateItemImage(i,e,!0)},e}(o)},function(t,e,i){"use strict";var r=i(4),n=i(0).SquareType,o={NONE:0,CORN:1,PUMPKIN:2,LETTUCE:3};t.exports=function(t){function e(i,r,s,a,u){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),void 0!==a&&i===n.OPEN||(a=[o.NONE]),Array.isArray(a)||(a=[a]),a.every((function(t){return t===o.NONE}))&&(r=void 0,s=void 0);var l=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,r,s));return a.length>1&&(u=!0),l.possibleFeatures_=a,l.startsHidden_=!!u,l}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.startsHidden=function(){return this.startsHidden_},e.prototype.isVariableFeature=function(){return this.possibleFeatures_.length>1},e.prototype.isVariable=function(){return this.isVariableFeature()||t.prototype.isVariable.call(this)},e.prototype.getPossibleGridAssets=function(){var t=this,i=[];if(this.isVariableFeature())i=this.possibleFeatures_.map((function(i){return e.deserialize(Object.assign({},t.serialize(),{possibleFeatures:[i]}))}));else if(this.isVariableRange())for(var r=this.originalValue_;r<=this.range_;r++)i.push(e.deserialize(Object.assign({},this.serialize(),{value:r,range:r})));else i.push(this);return i},e.prototype.featureType=function(){if(!this.isVariableFeature())return this.possibleFeatures_[0]},e.prototype.featureName=function(){return this.isVariableFeature()?"unknown":["none","corn","pumpkin","lettuce"][this.possibleFeatures_[0]]},e.prototype.isCorn=function(){return this.possibleFeatures_.includes(o.CORN)},e.prototype.isPumpkin=function(){return this.possibleFeatures_.includes(o.PUMPKIN)},e.prototype.isLettuce=function(){return this.possibleFeatures_.includes(o.LETTUCE)},e.prototype.serialize=function(){return Object.assign({},t.prototype.serialize.call(this),{possibleFeatures:this.possibleFeatures_,startsHidden:this.startsHidden_})},e.deserialize=function(t){return new e(t.tileType,t.value,t.range,t.possibleFeatures,t.startsHidden)},e}(r),t.exports.FeatureType=o},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(2),s=i(17),a=i(32);t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.reset=function(){this.maze_.map.forEachCell((function(t){t.resetCurrentFeature()}))},e.prototype.getCellClass=function(){return s},e.prototype.createDrawer=function(t){this.drawer=new a(this.maze_.map,this.skin_,t,this)},e.prototype.atSprout=function(){return this.atType(s.FeatureType.SPROUT)},e.prototype.atSoil=function(){return this.atType(s.FeatureType.SOIL)},e.prototype.atType=function(t){var e=this.maze_.getPegmanX(),i=this.maze_.getPegmanY();return this.getCell(i,e).featureType()===t},e.prototype.tryPlant=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY(),i=this.getCell(e,t);return i.featureType()!==s.FeatureType.SOIL?(this.emit("plantInNonSoil"),!1):(i.setFeatureType(s.FeatureType.SPROUT),!0)},e.prototype.animatePlant=function(){var t=this.maze_.getPegmanX(),e=this.maze_.getPegmanY(),i=this.getCell(e,t);if(i.featureType()!==s.FeatureType.SOIL)throw new Error("Shouldn't be able to plant in anything but soil");i.setFeatureType(s.FeatureType.SPROUT),this.drawer.updateItemImage(e,t,!0)},e}(o)},function(t,e,i){"use strict";var r=i(4),n={NONE:0,SOIL:1,SPROUT:2};t.exports=function(t){function e(i,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),void 0===r&&(r=n.NONE);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i));return o.originalFeatureType_=r,o.currentFeatureType_=void 0,o.resetCurrentFeature(),o}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.setFeatureType=function(t){this.currentFeatureType_=t},e.prototype.featureType=function(){return this.currentFeatureType_},e.prototype.originalFeatureType=function(){return this.originalFeatureType_},e.prototype.resetCurrentFeature=function(){this.currentFeatureType_=this.originalFeatureType_},e.prototype.featureName=function(){return["none","soil","sprout"][this.currentFeatureType_]},e.prototype.isSoil=function(){return this.currentFeatureType_===n.SOIL},e.prototype.isSprout=function(){return this.currentFeatureType_===n.SPROUT},e.prototype.serialize=function(){return Object.assign({},t.prototype.serialize.call(this),{featureType:this.originalFeatureType_})},e.deserialize=function(t){return new e(t.tileType,t.featureType)},e}(r),t.exports.FeatureType=n},function(t,e,i){"use strict";var r=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],r=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(r=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);r=!0);}catch(t){n=!0,o=t}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},n=u(i(2)),o=u(i(19)),s=u(i(33)),a=i(0);function u(t){return t&&t.__esModule?t:{default:t}}function l(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}t.exports=function(t){function e(i){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};l(this,e);var n=p(this,t.call(this,i,r));return n.spriteMap=n.skin_.spriteMap,n.sheetRows=n.skin_.sheetRows,n.squareSize=n.skin_.squareSize,n.assetList=[],n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.isNeighborhood=function(){return!0},e.prototype.allowMultiplePegmen=function(){return!0},e.prototype.getCellClass=function(){return o.default},e.prototype.drawMapTiles=function(t){var e=this,i=0;this.maze_.map.forEachCell((function(n,o,s){e.drawTile(t,[0,0],o,s,i);var a=e.drawer.getBackgroundTileInfo(o,s);if(a){e.assetList.push("tileElement"+i+"-asset");var u=e.skin_.assetUrl(a.sheet),l=e.getDimensionsForSheet(a.sheet),p=r(l,2),c=p[0],h=p[1];e.drawer.drawTileHelper(t,[a.column,a.row],o,s,i+"-asset",u,c,h,e.squareSize)}e.drawer.updateItemImage(o,s,!1),i++}))},e.prototype.createDrawer=function(t){this.drawer=new s.default(this.maze_.map,this.skin_,t,this.squareSize,this)},e.prototype.addPaint=function(t,e){var i=this.maze_.getPegmanX(t),r=this.maze_.getPegmanY(t);this.getCell(r,i).setColor(e),this.drawer.updateItemImage(r,i,!0),this.drawer.drawAssets()},e.prototype.removePaint=function(t){var e=this.maze_.getPegmanX(t),i=this.maze_.getPegmanY(t);this.drawer.resetTile(i,e),this.drawer.updateItemImage(i,e,!0),this.drawer.drawAssets()},e.prototype.turnLeft=function(t){var e=null;switch(this.maze_.getPegmanD(t)){case a.Direction.NORTH:e=a.Direction.WEST;break;case a.Direction.EAST:e=a.Direction.NORTH;break;case a.Direction.SOUTH:e=a.Direction.EAST;break;case a.Direction.WEST:e=a.Direction.SOUTH}this.maze_.animatedCardinalTurn(e,t)},e.prototype.takePaint=function(t){var e=this.maze_.getPegmanX(t),i=this.maze_.getPegmanY(t),r=this.getCell(i,e);r.setCurrentValue(r.getCurrentValue()-1),this.drawer.updateItemImage(i,e,!0)},e.prototype.setBucketVisibility=function(t){this.drawer.getBucketVisibility()!=t&&(this.drawer.setBucketVisibility(t),this.redrawBucketTiles())},e.prototype.redrawBucketTiles=function(){var t=this;this.maze_.map.forEachCell((function(e,i,r){e.getCurrentValue()>0&&t.drawer.updateItemImage(i,r,!0)}))},e.prototype.reset=function(){this.drawer.resetTiles()},e.prototype.getSpriteMap=function(){return this.spriteMap},e.prototype.getDimensionsForSheet=function(t){return[10*this.squareSize,this.sheetRows[t]*this.squareSize]},e.prototype.getAssetList=function(){return this.assetList},e}(n.default)},function(t,e,i){"use strict";var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}return t},n=i(4);t.exports=function(t){function e(i,r,n,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var s=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,r));return s.assetId=n,s.color=o,s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getColor=function(){return this.color},e.prototype.setColor=function(t){this.color=t},e.prototype.getAssetId=function(){return this.assetId},e.prototype.serialize=function(){return r({},t.prototype.serialize.call(this),{assetId:this.assetId,color:this.color})},e.deserialize=function(t){return new e(t.tileType,t.value,t.assetId,t.color)},e}(n)},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}t.exports=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];if(r(this,t),null==e)throw new Error("Pegman id cannot be null or undefined");this.x=i,this.y=n,this.direction=o,this.id=e,this.isVisible=s}return t.prototype.getX=function(){return this.x},t.prototype.getY=function(){return this.y},t.prototype.getDirection=function(){return this.direction},t.prototype.getId=function(){return this.id},t.prototype.getIsVisible=function(){return this.isVisible},t.prototype.setX=function(t){this.x=t},t.prototype.setY=function(t){this.y=t},t.prototype.setDirection=function(t){this.direction=t},t.prototype.setIsVisible=function(t){this.isVisible=t},t}()},function(t,e,i){"use strict";t.exports=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.grid_=e,this.ROWS=this.grid_.length,this.COLS=this.grid_[0].length,this.staticGrids=this.constructor.getAllStaticGrids(this.grid_),this.currentStaticGrid=this.staticGrids[0]}return t.cloneGrid=function(t){return t.map((function(t){return t.map((function(t){return t.clone()}))}))},t.getAllStaticGrids=function(t){var e=this,i=[t];return t.forEach((function(t,r){t.forEach((function(t,n){if(t.isVariable()){var o=t.getPossibleGridAssets(),s=[];o.forEach((function(t){i.forEach((function(i){var o=e.cloneGrid(i);o[r][n]=t,s.push(o)}))})),i=s}}))})),i},t.deserialize=function(e,i){return new t(e.map((function(t){return t.map(i.deserialize)})))},t.parseFromOldValues=function(e,i,r){return new t(e.map((function(t,e){return t.map((function(t,n){var o=i&&i[e][n];return r.parseFromOldValues(t,o)}))})))},t.prototype.resetDirt=function(){this.forEachCell((function(t){t.resetCurrentValue()}))},t.prototype.forEachCell=function(t){this.currentStaticGrid.forEach((function(e,i){e.forEach((function(e,r){t(e,i,r)}))}))},t.prototype.getAllCells=function(){return this.currentStaticGrid.reduce((function(t,e){return t.concat(e)}),[])},t.prototype.getCell=function(t,e){return this.currentStaticGrid[t]&&this.currentStaticGrid[t][e]},t.prototype.isDirt=function(t,e){var i=this.getCell(t,e);return i&&i.isDirt()},t.prototype.getTile=function(t,e){var i=this.getCell(t,e);return i&&i.getTile()},t.prototype.getValue=function(t,e){var i=this.getCell(t,e);return i&&i.getCurrentValue()},t.prototype.setValue=function(t,e,i){this.currentStaticGrid[t]&&this.currentStaticGrid[t][e]&&this.currentStaticGrid[t][e].setCurrentValue(i)},t.prototype.getVariableCell=function(t,e){if(this.grid_[t]&&this.grid_[t][e])return this.grid_[t][e]},t.prototype.useGridWithId=function(t){this.currentStaticGrid=this.staticGrids[t],this.resetDirt()},t.prototype.clone=function(){this.constructor.cloneGrid(this.grid_)},t.prototype.hasMultiplePossibleGrids=function(){return this.staticGrids.length>1},t}()},function(t,e,i){"use strict";var r=i(23),n=i(21),o=i(35),s=i(6),a=i(36),u=i(0),l=i(1);t.exports={MazeController:r,MazeMap:n,cells:o,drawMap:s,subtypes:a,tiles:u,utils:l}},function(t,e,i){"use strict";var r=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],r=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(r=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);r=!0);}catch(t){n=!0,o=t}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")};function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=i(7),s=i(24),a=i(34),u=i(20),l=i(21),p=i(6),c=i(1).getSubtypeForSkin,h=i(0);t.exports=function(){function t(e,i,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};n(this,t),this.stepSpeed=100,this.level=e,this.skin=i,this.startDirection=null,this.subtype=null,this.map=null,this.animationsController=null,this.pegmanController=new a,this.MAZE_HEIGHT=null,this.MAZE_WIDTH=null,this.PATH_WIDTH=null,this.PEGMAN_HEIGHT=null,this.PEGMAN_WIDTH=null,this.PEGMAN_X_OFFSET=null,this.PEGMAN_Y_OFFSET=null,this.SQUARE_SIZE=null,this.SVG_WIDTH=null,this.SVG_HEIGHT=null,o.methods&&this.rebindMethods(o.methods);var s=c(r.skinId);this.subtype=new s(this,r),this.loadLevel_()}return t.prototype.playAudio=function(){},t.prototype.playAudioOnFailure=function(){},t.prototype.loadAudio=function(){},t.prototype.getTestResults=function(){},t.prototype.rebindMethods=function(t){this.playAudio=t.playAudio||this.playAudio,this.playAudioOnFailure=t.playAudioOnFailure||this.playAudioOnFailure,this.loadAudio=t.loadAudio||this.loadAudio,this.getTestResults=t.getTestResults||this.getTestResults},t.prototype.initWithSvg=function(t){t.setAttribute("width",this.SVG_WIDTH),t.setAttribute("height",this.SVG_HEIGHT),t.setAttribute("viewBox","0 0 "+this.MAZE_WIDTH+" "+this.MAZE_HEIGHT),p(t,this.skin,this.subtype,this.map,this.SQUARE_SIZE),this.animationsController=new s(this,t)},t.prototype.loadLevel_=function(){this.level.serializedMaze?this.map=l.deserialize(this.level.serializedMaze,this.subtype.getCellClass()):this.map=l.parseFromOldValues(this.level.map,this.level.initialDirt,this.subtype.getCellClass()),this.startDirection=this.level.startDirection,this.level.fastGetNectarAnimation&&(this.skin.actionSpeedScale.nectar=.5),this.SQUARE_SIZE=this.skin.squareSize||50,this.PEGMAN_HEIGHT=this.skin.pegmanHeight,this.PEGMAN_WIDTH=this.skin.pegmanWidth,this.PEGMAN_X_OFFSET=this.skin.pegmanXOffset||0,this.PEGMAN_Y_OFFSET=this.skin.pegmanYOffset,this.MAZE_WIDTH=this.SQUARE_SIZE*this.map.COLS,this.MAZE_HEIGHT=this.SQUARE_SIZE*this.map.ROWS,this.SVG_WIDTH=this.skin.svgWidth||this.MAZE_WIDTH,this.SVG_HEIGHT=this.skin.svgHeight||this.MAZE_HEIGHT,this.PATH_WIDTH=this.SQUARE_SIZE/3},t.prototype.resetDirtImages=function(t){var e=this;this.map.forEachCell((function(i,r,n){e.subtype.drawer.updateItemImage(r,n,t)}))},t.prototype.gridNumberToPosition_=function(t){return(t+.5)*this.SQUARE_SIZE},t.prototype.drawHintPath=function(t,e){var i=this;t.getElementById("hintPath").setAttribute("d","M"+e.map((function(t){var e=r(t,2),n=e[0],o=e[1];return i.gridNumberToPosition_(n)+","+i.gridNumberToPosition_(o)})).join(" "))},t.prototype.reset=function(t){var e=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.subtype.reset(),o.clearTimeouts(),this.subtype.start&&(this.setPegmanX(this.subtype.start.x),this.setPegmanY(this.subtype.start.y),this.setPegmanD(this.startDirection)),this.subtype.allowMultiplePegmen()&&this.pegmanController.getAllPegmanIds().forEach((function(t){e.pegmanController.isDefaultPegman(t)&&i?e.animationsController.showPegman(t):e.animationsController.hidePegman(t)})),this.animationsController.reset(t),this.map.resetDirt(),this.resetDirtImages(!1);var n,s,a=0;for(s=0;s<this.map.ROWS;s++)for(n=0;n<this.map.COLS;n++){var u=document.getElementById("obstacle"+a);u&&u.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.skin.obstacleIdle),++a}this.subtype.resetTiles?this.subtype.resetTiles():this.resetTiles_()},t.prototype.resetTiles_=function(){for(var t=0,e=0;e<this.map.ROWS;e++)for(var i=0;i<this.map.COLS;i++){document.getElementById("tileClipPath"+t).setAttribute("visibility","visible");var r=document.getElementById("tileElement"+t);r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.skin.tiles),r.setAttribute("opacity",1),t++}},t.prototype.animatedFinish=function(t){this.animationsController.scheduleDance(!0,t)},t.prototype.animatedMove=function(t,e,i){var r=h.directionToDxDy(t),n=this.getPegmanX(i)+r.dx,o=this.getPegmanY(i)+r.dy;this.animationsController.scheduleMove(n,o,e,i),this.playAudio("walk"),this.setPegmanX(n,i),this.setPegmanY(o,i)},t.prototype.animatedTurn=function(t,e){var i=this.getPegmanD(e)+t;this.animationsController.scheduleTurn(i,e),this.setPegmanD(h.constrainDirection4(i),e)},t.prototype.animatedCardinalTurn=function(t,e){this.animationsController.simpleTurn(t,e),this.setPegmanD(t,e)},t.prototype.animatedFail=function(t,e){var i=this,r=h.directionToDxDy(this.getPegmanD(e)),n=r.dx,s=r.dy;t||(n=-n,s=-s);var a=this.getPegmanX(e)+n,u=this.getPegmanY(e)+s,l=h.directionToFrame(this.getPegmanD(e));this.animationsController.displayPegman(this.getPegmanX(e)+n/4,this.getPegmanY(e)+s/4,l,e);var p=this.map.getTile(u,a);p===h.SquareType.WALL||void 0===p||this.subtype.isScrat()&&p===h.SquareType.OBSTACLE?(this.playAudio("wall"),void 0!==p&&this.playAudio("wall"+this.subtype.wallMap[u][a]),this.subtype.isScrat()&&p===h.SquareType.OBSTACLE&&this.animationsController.crackSurroundingIce(a,u),this.animationsController.scheduleWallHit(a,u,n,s,l,e),o.setTimeout((function(){i.playAudioOnFailure()}),2*this.stepSpeed)):p===h.SquareType.OBSTACLE&&(this.playAudio("obstacle"),this.animationsController.scheduleObstacleHit(a,u,n,s,l,e),o.setTimeout((function(){i.playAudioOnFailure()}),this.stepSpeed))},t.prototype.animatedLook=function(t,e){var i=this.getPegmanX(e),r=this.getPegmanY(e);switch(t){case h.Direction.NORTH:i+=.5;break;case h.Direction.EAST:i+=1,r+=.5;break;case h.Direction.SOUTH:i+=.5,r+=1;break;case h.Direction.WEST:r+=.5}i*=this.SQUARE_SIZE,r*=this.SQUARE_SIZE;var n=90*t-45;this.animationsController.scheduleLook(i,r,n)},t.prototype.scheduleDirtChange_=function(t){var e=this.getPegmanX(),i=this.getPegmanY(),r=this.map.getValue(i,e)||0;this.map.setValue(i,e,r+t.amount),this.subtype.scheduleDirtChange(i,e),this.playAudio(t.sound)},t.prototype.scheduleFill=function(){this.scheduleDirtChange_({amount:1,sound:"fill"})},t.prototype.scheduleDig=function(){this.scheduleDirtChange_({amount:-1,sound:"dig"})},t.prototype.getPegmanX=function(t){var e=this.pegmanController.getPegman(t);return e&&e.getX()},t.prototype.getPegmanY=function(t){var e=this.pegmanController.getPegman(t);return e&&e.getY()},t.prototype.getPegmanD=function(t){var e=this.pegmanController.getPegman(t);return e&&e.getDirection()},t.prototype.setPegmanX=function(t,e){this.pegmanController.getOrCreatePegman(e).setX(t)},t.prototype.setPegmanY=function(t,e){this.pegmanController.getOrCreatePegman(e).setY(t)},t.prototype.setPegmanD=function(t,e){this.pegmanController.getOrCreatePegman(e).setDirection(t)},t.prototype.addPegman=function(t,e,i,r){if(this.pegmanController.getPegman(t)){this.animationsController.hidePegman(t);var n=this.pegmanController.getPegman(t);n.setX(e),n.setY(i),n.setDirection(r);var o=h.directionToFrame(r);this.animationsController.displayPegman(e,i,o,t),this.animationsController.showPegman(t)}else this.createAndDisplayPegman(t,e,i,r)},t.prototype.createAndDisplayPegman=function(t,e,i,r){var n=new u(t,e,i,r);this.pegmanController.addPegman(n),this.animationsController.addNewPegman(t,e,i,r)},t.prototype.hideDefaultPegman=function(){this.pegmanController.getPegman()&&this.animationsController.hidePegman()},t.prototype.showPegman=function(t){this.animationsController.showPegman(t)},t.prototype.hidePegman=function(t){this.animationsController.hidePegman(t)},t}()},function(t,e,i){"use strict";var r=i(5),n=r.SVG_NS,o=r.pegmanElements,s=i(6),a=s.displayPegman,u=s.getPegmanYForRow,l=s.addNewPegman,p=i(7),c=i(1),h=i(0);t.exports=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maze=e,this.svg=i,this.createAnimations_()}return t.prototype.createAnimations_=function(t){var e=this;if(this.maze.skin.idlePegmanAnimation&&(this.createPegmanAnimation_({type:o.IDLE,pegmanImage:this.maze.skin.idlePegmanAnimation,row:this.maze.subtype.start.y,col:this.maze.subtype.start.x,direction:this.maze.startDirection,numColPegman:this.maze.skin.idlePegmanCol,numRowPegman:this.maze.skin.idlePegmanRow,pegmanId:t}),this.maze.skin.idlePegmanCol>1||this.maze.skin.idlePegmanRow>1)){var i=this.maze.skin.idlePegmanRow,r=document.getElementById(c.getPegmanElementId(o.IDLE,t)),s=0;setInterval((function(){"visible"===r.getAttribute("visibility")&&(e.updatePegmanAnimation_({type:o.IDLE,row:e.maze.subtype.start.y,col:e.maze.subtype.start.x,direction:e.maze.startDirection,animationRow:s,pegmanId:t}),s=(s+1)%i)}),600)}if(this.maze.skin.celebrateAnimation&&this.createPegmanAnimation_({type:o.CELEBRATE,pegmanImage:this.maze.skin.celebrateAnimation,row:this.maze.subtype.start.y,col:this.maze.subtype.start.x,direction:h.Direction.NORTH,numColPegman:this.maze.skin.celebratePegmanCol,numRowPegman:this.maze.skin.celebratePegmanRow,pegmanId:t}),this.maze.skin.wallPegmanAnimation&&this.createPegmanAnimation_({type:o.WALL,pegmanImage:this.maze.skin.wallPegmanAnimation,pegmanId:t}),this.maze.skin.hittingWallAnimation&&this.maze.skin.hittingWallAnimationFrameNumber&&(this.createPegmanAnimation_({type:o.WALL,pegmanImage:this.maze.skin.hittingWallAnimation,numColPegman:this.maze.skin.hittingWallPegmanCol,numRowPegman:this.maze.skin.hittingWallPegmanRow,pegmanId:t}),document.getElementById(c.getPegmanElementId(o.WALL,t)).setAttribute("visibility","hidden")),this.maze.skin.movePegmanAnimation&&this.createPegmanAnimation_({type:o.MOVE,pegmanImage:this.maze.skin.movePegmanAnimation,numColPegman:4,numRowPegman:this.maze.skin.movePegmanAnimationFrameNumber||9,pegmanId:t}),this.maze.skin.hittingWallAnimation){var a=document.createElementNS(n,"image");a.setAttribute("id",c.getPegmanElementId(o.WALL_ANIMATION,t)),a.setAttribute("height",this.maze.SQUARE_SIZE),a.setAttribute("width",this.maze.SQUARE_SIZE),a.setAttribute("visibility","hidden"),this.svg.appendChild(a)}},t.prototype.reset=function(t){var e=this;if(t)this.maze.skin.danceOnLoad&&this.scheduleDance(!1,750),p.setTimeout((function(){e.maze.stepSpeed=100,e.scheduleTurn(e.maze.startDirection)}),900);else{this.maze.subtype.allowMultiplePegmen()||this.displayPegman(this.maze.getPegmanX(),this.maze.getPegmanY(),h.directionToFrame(this.maze.getPegmanD()));var i=document.getElementById("finish");i&&(i.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.maze.skin.goalIdle),i.setAttribute("visibility","visible"))}var r=document.getElementById("look");r.style.display="none",r.parentNode.appendChild(r);for(var n=r.getElementsByTagName("path"),s=0;s<n.length;s++)n[s].setAttribute("stroke",this.maze.skin.look);var a=this.getPegmanIcon();this.maze.subtype.allowMultiplePegmen()||a.setAttribute("opacity",1),this.maze.skin.idlePegmanAnimation?(a.setAttribute("visibility","hidden"),document.getElementById(c.getPegmanElementId(o.IDLE)).setAttribute("visibility","visible")):this.maze.subtype.allowMultiplePegmen()||a.setAttribute("visibility","visible"),this.maze.skin.wallPegmanAnimation&&document.getElementById(c.getPegmanElementId(o.WALL)).setAttribute("visibility","hidden"),this.maze.skin.movePegmanAnimation&&document.getElementById(c.getPegmanElementId(o.MOVE)).setAttribute("visibility","hidden"),this.maze.skin.celebrateAnimation&&document.getElementById(c.getPegmanElementId(o.CELEBRATE)).setAttribute("visibility","hidden")},t.prototype.createPegmanAnimation_=function(t){var e=document.createElementNS(n,"clipPath"),i=c.getPegmanElementId(t.type+"Clip",t.pegmanId);e.setAttribute("id",i);var r=document.createElementNS(n,"rect");r.setAttribute("id",c.getPegmanElementId(t.type+"ClipRect",t.pegmanId)),void 0!==t.col&&r.setAttribute("x",t.col*this.maze.SQUARE_SIZE+1+this.maze.PEGMAN_X_OFFSET),void 0!==t.row&&r.setAttribute("y",u(this.maze.skin,t.row,this.maze.SQUARE_SIZE)),r.setAttribute("width",this.maze.PEGMAN_WIDTH),r.setAttribute("height",this.maze.PEGMAN_HEIGHT),e.appendChild(r),this.svg.appendChild(e);var o=t.pegmanImage,s=document.createElementNS(n,"image");if(s.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),s.setAttribute("height",this.maze.PEGMAN_HEIGHT*(t.numRowPegman||1)),s.setAttribute("width",this.maze.PEGMAN_WIDTH*(t.numColPegman||4)),s.setAttribute("clip-path","url(#"+i+")"),s.setAttribute("id",c.getPegmanElementId(t.type,t.pegmanId)),this.svg.appendChild(s),void 0!==t.col&&void 0!==t.direction){var a=this.maze.SQUARE_SIZE*t.col-t.direction*this.maze.PEGMAN_WIDTH+1+this.maze.PEGMAN_X_OFFSET;s.setAttribute("x",a)}void 0!==t.row&&s.setAttribute("y",u(this.maze.skin,t.row,this.maze.SQUARE_SIZE))},t.prototype.getPegmanFrameOffsetY_=function(t){return(t=t||0)*this.maze.PEGMAN_HEIGHT},t.prototype.updatePegmanAnimation_=function(t){var e=document.getElementById(c.getPegmanElementId(t.type+"ClipRect",t.pegmanId));if(e){e.setAttribute("x",t.col*this.maze.SQUARE_SIZE+1+this.maze.PEGMAN_X_OFFSET),e.setAttribute("y",u(this.maze.skin,t.row,this.maze.SQUARE_SIZE));var i=document.getElementById(c.getPegmanElementId(t.type,t.pegmanId));if(i){var r=this.maze.SQUARE_SIZE*t.col-t.direction*this.maze.PEGMAN_WIDTH+1+this.maze.PEGMAN_X_OFFSET;i.setAttribute("x",r);var n=u(this.maze.skin,t.row,this.maze.SQUARE_SIZE)-this.getPegmanFrameOffsetY_(t.animationRow);i.setAttribute("y",n),i.setAttribute("visibility","visible")}}},t.prototype.scheduleSheetedMovement_=function(t,e,i,r,n,o,s,a){var u=this,l=this.getPegmanIcon(a);c.range(0,i-1).forEach((function(c){p.setTimeout((function(){s&&l.setAttribute("visibility","hidden"),u.updatePegmanAnimation_({type:n,col:t.x+e.x*c/i,row:t.y+e.y*c/i,direction:o,animationRow:c,pegmanId:a})}),r*c)}))},t.prototype.scheduleMove=function(t,e,i,r){var n,s,a=this,u=this.maze.getPegmanX(r),l=this.maze.getPegmanY(r),f=this.maze.getPegmanD(r),m=t-u,d=e-l;if(this.maze.skin.movePegmanAnimation){n=this.maze.skin.movePegmanAnimationFrameNumber;var y=this.getPegmanIcon(r),g=document.getElementById(c.getPegmanElementId(o.MOVE,r));s=i/n,this.scheduleSheetedMovement_({x:u,y:l},{x:m,y:d},n,s,o.MOVE,f,!0,r),p.setTimeout((function(){g.setAttribute("visibility","hidden"),y.setAttribute("visibility","visible"),a.displayPegman(t,e,h.directionToFrame(f),r),a.maze.subtype.isWordSearch()&&a.maze.subtype.markTileVisited(e,t,!0)}),s*n)}else s=i/(n=4),c.range(1,n).forEach((function(t){p.setTimeout((function(){a.displayPegman(u+m*t/n,l+d*t/n,h.directionToFrame(f),r)}),s*t)}));if(this.maze.skin.approachingGoalAnimation){var b=document.getElementById("finish");this.maze.subtype.finish&&Math.abs(t-this.maze.subtype.finish.x)<=1&&Math.abs(e-this.maze.subtype.finish.y)<=1?b.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.maze.skin.approachingGoalAnimation):b.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.maze.skin.goalIdle)}},t.prototype.scheduleTurn=function(t,e){var i=this,r=this.maze.getPegmanD(e),n=t-r;c.range(1,4).forEach((function(t){p.setTimeout((function(){i.displayPegman(i.maze.getPegmanX(e),i.maze.getPegmanY(e),h.directionToFrame(r+n*t/4),e)}),i.maze.stepSpeed*(t-1))}))},t.prototype.simpleTurn=function(t,e){var i=this;c.range(1,2).forEach((function(r){p.setTimeout((function(){i.displayPegman(i.maze.getPegmanX(e),i.maze.getPegmanY(e),h.directionToFrame(t),e)}),i.maze.stepSpeed*(r-1))}))},t.prototype.crackSurroundingIce=function(t,e){var i=this;this.updateSurroundingTiles_(e,t,(function(t,e){e.getTile()===h.SquareType.OPEN?t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i.maze.skin.largerObstacleAnimationTiles):e.getTile()===h.SquareType.OBSTACLE&&t.setAttribute("opacity",0)}))},t.prototype.updateSurroundingTiles_=function(t,e,i){for(var r=[[t-1,e-1],[t-1,e],[t-1,e+1],[t,e-1],[t,e],[t,e+1],[t+1,e-1],[t+1,e],[t+1,e+1]],n=0;n<r.length;++n){var o=r[n][1],s=r[n][0],a=o+this.maze.map.COLS*s,u=document.getElementById("tileElement"+a);u&&i(u,this.maze.map.getCell(s,o))}},t.prototype.scheduleWallHit=function(t,e,i,r,n,s){var a=this,u=this.maze.getPegmanX(s),l=this.maze.getPegmanY(s);if(this.maze.skin.hittingWallAnimation){var f=document.getElementById(c.getPegmanElementId(o.WALL_ANIMATION,s)),m=this.maze.skin.hittingWallAnimationFrameNumber||0;m>1?(r>=0&&(r+=1),this.scheduleSheetedMovement_({x:u,y:l},{x:i,y:r},m,100,o.WALL,h.Direction.NORTH,!0,s),setTimeout((function(){document.getElementById(c.getPegmanElementId(o.WALL,s)).setAttribute("visibility","hidden")}),100*m)):p.setTimeout((function(){f.setAttribute("x",a.maze.SQUARE_SIZE*(u+.5+.5*i)-f.getAttribute("width")/2),f.setAttribute("y",a.maze.SQUARE_SIZE*(l+1+.5*r)-f.getAttribute("height")),f.setAttribute("visibility","visible"),f.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a.maze.skin.hittingWallAnimation)}),this.maze.stepSpeed/2)}p.setTimeout((function(){a.displayPegman(u,l,n,s)}),this.maze.stepSpeed),p.setTimeout((function(){a.displayPegman(u+i/4,l+r/4,n,s)}),2*this.maze.stepSpeed),p.setTimeout((function(){a.displayPegman(u,l,n,s)}),3*this.maze.stepSpeed),this.maze.skin.wallPegmanAnimation&&p.setTimeout((function(){a.getPegmanIcon(s).setAttribute("visibility","hidden"),a.updatePegmanAnimation_({type:o.WALL,row:l,col:u,direction:a.maze.getPegmanD(s)})}),4*this.maze.stepSpeed)},t.prototype.scheduleObstacleHit=function(t,e,i,r,n,o){var s=this,a=t+this.maze.map.COLS*e;if(document.getElementById("obstacle"+a).setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.maze.skin.obstacleAnimation),p.setTimeout((function(){s.displayPegman(s.maze.getPegmanX(o)+i/2,s.maze.getPegmanY(o)+r/2,n)}),this.maze.stepSpeed),this.maze.skin.largerObstacleAnimationTiles&&p.setTimeout((function(){s.updateSurroundingTiles_(e,t,(function(t){return t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s.maze.skin.largerObstacleAnimationTiles)}))}),this.maze.stepSpeed),!this.maze.skin.nonDisappearingPegmanHittingObstacle){var u=this.getPegmanIcon(o);p.setTimeout((function(){u.setAttribute("visibility","hidden")}),2*this.maze.stepSpeed)}},t.prototype.scheduleLook=function(t,e,i){var r=document.getElementById("look");r.setAttribute("transform","translate("+t+", "+e+") rotate("+i+" 0 0) scale(.4)");var n=r.getElementsByTagName("path");r.style.display="inline";for(var o=0;o<n.length;o++){var s=n[o];this.scheduleLookStep_(s,this.maze.stepSpeed*o)}},t.prototype.scheduleLookStep_=function(t,e){var i=this;p.setTimeout((function(){t.style.display="inline",window.setTimeout((function(){t.style.display="none"}),2*i.maze.stepSpeed)}),e)},t.prototype.stopIdling=function(t){if(this.maze.skin.idlePegmanAnimation){var e=this.getPegmanIcon(t);document.getElementById(c.getPegmanElementId(o.IDLE,t)).setAttribute("visibility","hidden"),e.setAttribute("visibility","visible")}},t.prototype.hidePegman=function(t){this.getPegmanIcon(t).setAttribute("visibility","hidden")},t.prototype.showPegman=function(t){this.getPegmanIcon(t).setAttribute("visibility","visible")},t.prototype.scheduleDance=function(t,e,i){var r=this,n=document.getElementById("finish"),s=this.maze.getPegmanX(i),a=this.maze.getPegmanY(i);if(t&&this.maze.skin.celebrateAnimation){n&&n.setAttribute("visibility","hidden");var u=this.maze.skin.celebratePegmanRow,l=e/u,c={x:s,y:a};this.scheduleSheetedMovement_({x:c.x,y:c.y},{x:0,y:0},u,l,o.CELEBRATE,h.Direction.NORTH,!0,i)}else{var f=h.directionToFrame(this.maze.getPegmanD(i));this.displayPegman(s,a,16,i),t&&n&&n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.maze.skin.goalAnimation);var m=e/5;p.setTimeout((function(){r.displayPegman(s,a,18,i)}),m),p.setTimeout((function(){r.displayPegman(s,a,20,i)}),2*m),p.setTimeout((function(){r.displayPegman(s,a,18,i)}),3*m),p.setTimeout((function(){r.displayPegman(s,a,20,i)}),4*m),p.setTimeout((function(){t&&!r.maze.skin.turnAfterVictory||r.displayPegman(s,a,f,i),t&&r.maze.skin.transparentTileEnding&&r.setTileTransparent_(),r.maze.subtype.isWordSearch()&&r.setPegmanTransparent_()}),5*m)}},t.prototype.setTileTransparent_=function(){for(var t=0,e=0;e<this.maze.map.ROWS;e++)for(var i=0;i<this.maze.map.COLS;i++){var r=document.getElementById("tileElement"+t),n=document.getElementById("tileAnimation"+t);r&&r.setAttribute("opacity",0),n&&n.beginElement&&n.beginElement(),t++}},t.prototype.setPegmanTransparent_=function(t){var e=document.getElementById(c.getPegmanElementId(o.FADEOUT,t)),i=this.getPegmanIcon(t);i&&i.setAttribute("opacity",0),e&&e.beginElement&&e.beginElement()},t.prototype.displayPegman=function(t,e,i,r){var n=this.getPegmanIcon(r),s=document.getElementById(c.getPegmanElementId(o.CLIP_RECT,r));a(this.maze.skin,n,s,t,e,i,this.maze.SQUARE_SIZE)},t.prototype.getPegmanIcon=function(t){return document.getElementById(c.getPegmanElementId(o.PEGMAN,t))},t.prototype.addNewPegman=function(t,e,i,r){l(this.maze.skin,t,e,i,r,this.svg,this.maze.SQUARE_SIZE)},t}()},function(t,e,i){"use strict";var r=i(3),n=r.SQUARE_SIZE,o=22*n;t.exports=function(t){function e(i,r,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,r,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getAsset=function(e,i,r){return 0===(this.map_.getValue(i,r)||0)?void 0:t.prototype.getAsset.call(this,e,i,r)},e.prototype.updateItemImage=function(i,r,o){var s=t.prototype.updateItemImage.call(this,i,r,o);if(s){var a=this.map_.getValue(i,r)||0;this.map_.getVariableCell(i,r).isVariable()&&(o?this.updateOrCreateText_("counter",i,r,""):(a=a<0?-11:11,this.updateOrCreateText_("counter",i,r,"?")));var u=e.spriteIndexForDirt(a),l=u<0;return s.setAttribute("visibility",l?"hidden":"visible"),l||s.setAttribute("x",n*(r-u)),s}},e.prototype.getOrCreateImage_=function(e,i,r){var n=t.prototype.getOrCreateImage_.call(this,e,i,r);return n&&n.setAttribute("width",o),n},e.spriteIndexForDirt=function(t){var e=void 0;return 0===t?e=-1:t<-10?e=0:t<0?e=10+t+1:t>10?e=21:t>0&&(e=10+t),e},e}(r)},function(t,e,i){"use strict";var r,n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o="object"===("undefined"==typeof Reflect?"undefined":n(Reflect))?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};r=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var a=Number.isNaN||function(t){return t!=t};function u(){u.init.call(this)}t.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var l=10;function p(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+(void 0===t?"undefined":n(t)))}function c(t){return void 0===t._maxListeners?u.defaultMaxListeners:t._maxListeners}function h(t,e,i,r){var n,o,s,a;if(p(i),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),o=t._events),s=o[e]),void 0===s)s=o[e]=i,++t._eventsCount;else if("function"==typeof s?s=o[e]=r?[i,s]:[s,i]:r?s.unshift(i):s.push(i),(n=c(t))>0&&s.length>n&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,a=u,console&&console.warn&&console.warn(a)}return t}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function m(t,e,i){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:i},n=f.bind(r);return n.listener=i,r.wrapFn=n,n}function d(t,e,i){var r=t._events;if(void 0===r)return[];var n=r[e];return void 0===n?[]:"function"==typeof n?i?[n.listener||n]:[n]:i?function(t){for(var e=new Array(t.length),i=0;i<e.length;++i)e[i]=t[i].listener||t[i];return e}(n):g(n,n.length)}function y(t){var e=this._events;if(void 0!==e){var i=e[t];if("function"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function g(t,e){for(var i=new Array(e),r=0;r<e;++r)i[r]=t[r];return i}Object.defineProperty(u,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(t){if("number"!=typeof t||t<0||a(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");l=t}}),u.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},u.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||a(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},u.prototype.getMaxListeners=function(){return c(this)},u.prototype.emit=function(t){for(var e=[],i=1;i<arguments.length;i++)e.push(arguments[i]);var r="error"===t,n=this._events;if(void 0!==n)r=r&&void 0===n.error;else if(!r)return!1;if(r){var o;if(e.length>0&&(o=e[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var u=n[t];if(void 0===u)return!1;if("function"==typeof u)s(u,this,e);else{var l=u.length,p=g(u,l);for(i=0;i<l;++i)s(p[i],this,e)}return!0},u.prototype.addListener=function(t,e){return h(this,t,e,!1)},u.prototype.on=u.prototype.addListener,u.prototype.prependListener=function(t,e){return h(this,t,e,!0)},u.prototype.once=function(t,e){return p(e),this.on(t,m(this,t,e)),this},u.prototype.prependOnceListener=function(t,e){return p(e),this.prependListener(t,m(this,t,e)),this},u.prototype.removeListener=function(t,e){var i,r,n,o,s;if(p(e),void 0===(r=this._events))return this;if(void 0===(i=r[t]))return this;if(i===e||i.listener===e)0==--this._eventsCount?this._events=Object.create(null):(delete r[t],r.removeListener&&this.emit("removeListener",t,i.listener||e));else if("function"!=typeof i){for(n=-1,o=i.length-1;o>=0;o--)if(i[o]===e||i[o].listener===e){s=i[o].listener,n=o;break}if(n<0)return this;0===n?i.shift():function(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}(i,n),1===i.length&&(r[t]=i[0]),void 0!==r.removeListener&&this.emit("removeListener",t,s||e)}return this},u.prototype.off=u.prototype.removeListener,u.prototype.removeAllListeners=function(t){var e,i,r;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[t]),this;if(0===arguments.length){var n,o=Object.keys(i);for(r=0;r<o.length;++r)"removeListener"!==(n=o[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(e=i[t]))this.removeListener(t,e);else if(void 0!==e)for(r=e.length-1;r>=0;r--)this.removeListener(t,e[r]);return this},u.prototype.listeners=function(t){return d(this,t,!0)},u.prototype.rawListeners=function(t){return d(this,t,!1)},u.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):y.call(t,e)},u.prototype.listenerCount=y,u.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(t,e,i){"use strict";var r=i(3),n=r.SQUARE_SIZE,o=r.SVG_NS;t.exports=function(t){function e(i,r,n,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var s=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,"",n));return s.skin_=r,s.bee_=o,s.clouded_=void 0,s.resetClouded(),s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getAsset=function(t,e,i){switch(t){case"cloud":return this.skin_.cloud;case"cloudAnimation":return this.skin_.cloudAnimation;case"beeItem":if(this.bee_.isHive(e,i,!1))return this.skin_.honey;if(this.bee_.isFlower(e,i,!1))return this.flowerImageHref_(e,i)}},e.prototype.reset=function(){this.resetClouded()},e.prototype.resetClouded=function(){this.clouded_=this.map_.currentStaticGrid.map((function(t){return[]}))},e.prototype.updateItemImage=function(t,e,i){var r,n=this.bee_.isCloudable(t,e),o=!i&&n,s=n&&!0===this.clouded_[t][e],a=Math.abs(this.bee_.getValue(t,e));r=o||isNaN(a)?"":!i&&this.bee_.isPurpleFlower(t,e)?"?":99===a?"":98===a?"0":""+a;var u=this.drawImage_("beeItem",t,e);this.updateOrCreateText_("counter",t,e,u?r:""),o?(this.showCloud_(t,e),this.clouded_[t][e]=!0):s&&(this.hideCloud_(t,e),this.clouded_[t][e]=!1)},e.prototype.flowerImageHref_=function(t,e){return this.bee_.isRedFlower(t,e)?this.skin_.redFlower:this.skin_.purpleFlower},e.prototype.showCloud_=function(t,e){this.drawImage_("cloud",t,e),this.displayCloudAnimation_(t,e,!1)},e.prototype.hideCloud_=function(t,e){var i=document.getElementById(r.cellId("cloud",t,e));i&&i.setAttribute("visibility","hidden"),this.displayCloudAnimation_(t,e,!0)},e.prototype.displayCloudAnimation_=function(t,e,i){this.getOrCreateImage_("cloudAnimation",t,e,!1).setAttribute("visibility",i?"visible":"hidden")},e.prototype.addCheckerboardTile=function(t,e,i){var r=document.createElementNS(o,"rect");if(r.setAttribute("width",n),r.setAttribute("height",n),r.setAttribute("x",e*n),r.setAttribute("y",t*n),r.setAttribute("fill","#78bb29"),r.setAttribute("opacity",i?.2:.5),i)this.svg_.appendChild(r);else{var s=this.svg_.querySelector("#tileElement"+(8*t+e));this.svg_.insertBefore(r,s)}},e}(r)},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(3);t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.drawImage_=function(e,i,r){var n=t.prototype.drawImage_.call(this,e,i,r),o=this.map_.getValue(i,r);return n.setAttribute("visibility",o?"visible":"hidden"),n},e.prototype.updateItemImage=function(e,i,r){if(this.shouldUpdateItemImage(e,i,r)){t.prototype.updateItemImage.call(this,e,i);var n=this.map_.getValue(e,i)||null;this.updateOrCreateText_("counter",e,i,n)}},e.prototype.shouldUpdateItemImage=function(t,e){var i=this.map_.getCell(t,e);return i&&i.getOriginalValue()},e}(o)},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(3),s=o.SQUARE_SIZE,a=o.SVG_NS,u="#000",l="#fff";t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.drawTile=function(t,e,i,r){var n=o.cellId("backgroundLetter",i,r),u=document.createElementNS(a,"g"),l=document.createElementNS(a,"rect");l.setAttribute("id",n),l.setAttribute("width",s),l.setAttribute("height",s),l.setAttribute("x",r*s),l.setAttribute("y",i*s),l.setAttribute("stroke","#000000"),l.setAttribute("stroke-width",3),u.appendChild(l);var p=this.updateOrCreateText_("letter",i,r,e);u.appendChild(p),t.appendChild(u)},e.prototype.updateOrCreateText_=function(e,i,r,n){var o=t.prototype.updateOrCreateText_.call(this,e,i,r,n);return o.setAttribute("class","search-letter"),o.setAttribute("width",s),o.setAttribute("height",s),o.setAttribute("x",(r+.5)*s),o.setAttribute("y",(i+.5)*s),o.setAttribute("font-size",32),o.setAttribute("text-anchor","middle"),o.setAttribute("font-family","Verdana"),o},e.prototype.updateTileHighlight=function(t,e,i){var r=(t+e)%2==0?"#dae3f3":"#ffffff",n=i?l:u;i&&(r="#00b050");var a=o.cellId("backgroundLetter",t,e),p=o.cellId("letter",t,e);document.getElementById(a).setAttribute("fill",r);var c=document.getElementById(p);if(c.setAttribute("fill",n),c.getBBox){var h=c.getBBox(),f=s-h.height,m=t*s+f/2-h.y;c.setAttribute("transform","translate(0, "+m+")")}},e}(o)},function(t,e,i){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var o=i(0).SquareType,s=i(1).randomValue,a=i(2),u={log:[0,0],lily1:[1,0],land1:[2,0],island_start:[0,1],island_topRight:[1,1],island_botLeft:[0,2],island_botRight:[1,2],water:[0,4],lily2:[2,1],lily3:[3,1],lily4:[2,2],lily5:[3,2],ice:[3,0],cracked_ice:[4,0],empty:[0,4]};t.exports=function(t){function e(){return r(this,e),n(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.isScrat=function(){return!0},e.prototype.isWaterOrOutOfBounds=function(t,e){return this.isWater(t,e)||void 0===this.maze_.map.getTile(e,t)},e.prototype.isWater=function(t,e){return this.maze_.map.getTile(e,t)===o.WALL},e.prototype.isObstacle=function(t,e){return this.maze_.map.getTile(e,t)===o.OBSTACLE},e.prototype.drawMapTiles=function(t){var e=void 0,i=void 0,r=[];for(e=0;e<this.maze_.map.ROWS;e++)for(i=0;i<this.maze_.map.COLS;i++)this.isWater(i,e)&&this.isWater(i+1,e)&&this.isWater(i,e+1)&&this.isWater(i+1,e+1)&&r.push({row:e,col:i});var n=s(r),o={};n&&(o[n.row+0+"_"+(n.col+0)]="island_start",o[n.row+1+"_"+(n.col+0)]="island_botLeft",o[n.row+0+"_"+(n.col+1)]="island_topRight",o[n.row+1+"_"+(n.col+1)]="island_botRight");var a=0,l=void 0;for(e=0;e<this.maze_.map.ROWS;e++)for(i=0;i<this.maze_.map.COLS;i++){if(this.isObstacle(i,e))l="cracked_ice";else if(this.isWaterOrOutOfBounds(i,e)){var p=!(this.isWaterOrOutOfBounds(i,e-1)&&this.isWaterOrOutOfBounds(i+1,e)&&this.isWaterOrOutOfBounds(i,e+1)&&this.isWaterOrOutOfBounds(i-1,e));l="water",(l=o[e+"_"+i])||(l=s(["empty","empty","empty","empty","empty","lily2","lily3","lily4","lily5","lily1","log","lily1","land1"])),p&&"land1"===l&&(l="empty")}else l="ice";this.drawTile(t,u[l],e,i,a),a++}},e}(a)},function(t,e,i){"use strict";var r=i(3);t.exports=function(t){function e(i,r,n,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var s=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,"",n));return s.skin_=r,s.subtype_=o,s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getAsset=function(t,e,i){switch(t){case"sprout":return this.skin_.sprout;case"crop":var r=this.subtype_.getCell(e,i).featureName();return this.skin_[r]}},e.prototype.updateItemImage=function(t,e,i){var r=this.map_.getVariableCell(t,e),n=this.map_.getCell(t,e);r.hasValue()&&(n.startsHidden()&&!i?(this.show("sprout",t,e),this.hide("crop",t,e)):(n.getCurrentValue()>0?this.show("crop",t,e):this.hide("crop",t,e),this.hide("sprout",t,e)),i?n.getCurrentValue()>0?this.updateOrCreateText_("counter",t,e,n.getCurrentValue()):this.updateOrCreateText_("counter",t,e,""):n.startsHidden()?this.updateOrCreateText_("counter",t,e,""):r.isVariableRange()?this.updateOrCreateText_("counter",t,e,"?"):this.updateOrCreateText_("counter",t,e,n.getCurrentValue()))},e.prototype.hide=function(t,e,i){var r=this.getOrCreateImage_(t,e,i);r&&r.setAttribute("visibility","hidden")},e.prototype.show=function(t,e,i){this.drawImage_(t,e,i)},e}(r)},function(t,e,i){"use strict";var r=i(3);t.exports=function(t){function e(i,r,n,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var s=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,"",n));return s.skin_=r,s.subtype_=o,s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getAsset=function(t,e,i){var r=this.subtype_.getCell(e,i).featureName();return this.skin_[r]},e}(r)},function(t,e,i){"use strict";var r=i(3).SVG_NS,n=i(3),o=i(0),s=Object.freeze({topLeft:"topLeft",topRight:"topRight",bottomLeft:"bottomLeft",bottomRight:"bottomRight"});function a(t,e,i,n){var o=document.getElementById(n);if(o||(o=document.createElementNS(r,t)).setAttribute("id",n),Object.keys(e).map((function(t){o.setAttribute(t,e[t])})),i&&n.startsWith("g")){var s=i.getElementsByClassName("pegman-location")[0];i.insertBefore(o,s)}else i&&i.appendChild(o);return o}function u(t,e,i,r,n){return(e?"m0,"+.3*t+" L"+.3*t+",0":"m0,0")+" "+(i?"L"+.7*t+",0 L"+t+","+.3*t:"L"+t+",0")+" "+(r?"L"+t+","+.7*t+" L"+.7*t+","+t:"L"+t+","+t)+" "+(n?"L"+.3*t+","+t+" L0,"+.7*t:"L0,"+t)+" Z"}function l(t,e,i,r,n,o,u,l){!n||n!==r||n!==o&&n!==u?n&&n!==r||function(t,e,i,r,n){var o=void 0,u=void 0;n===s.topLeft?(o=i+"-triangle-tl",u="m0,0 L"+r+",0 L0,"+r+" Z"):n===s.topRight?(o=i+"-triangle-tr",u="m"+r+",0 L"+r+","+r+" L0,0 Z"):n===s.bottomLeft?(o=i+"-triangle-bl",u="m0,"+r+" L"+r+","+r+" L0,0 Z"):n===s.bottomRight&&(o=i+"-triangle-br",u="m"+r+","+r+" L"+r+",0 L0,"+r+" Z"),a("path",{d:u,stroke:t,fill:t},e,o)}(r,t,e,i,l):function(t,e,i,r,n){var o=void 0,u=void 0;n===s.topLeft?(o=i+"-smallCorner-tl",u="m0,0 L"+.3*r+",0 L0,"+.3*r+" Z"):n===s.topRight?(o=i+"-smallCorner-tr",u="m"+r+",0 L"+.7*r+",0 L"+r+","+.3*r+" Z"):n===s.bottomLeft?(o=i+"-smallCorner-bl",u="m0,"+r+" L0,"+.7*r+" L"+.3*r+","+r+" Z"):n===s.bottomRight&&(o=i+"-smallCorner-br",u="m"+r+","+r+" L"+.7*r+","+r+" L"+r+","+.7*r+" Z"),a("path",{d:u,stroke:t,fill:t},e,o)}(r,t,e,i,l)}t.exports=function(t){function e(i,r,n,o,s){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var a=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this,i,"",n));return a.squareSize=o,a.neighborhood=s,a.skin_=r,a.showBuckets=!0,a}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.setBucketVisibility=function(t){this.showBuckets=t},e.prototype.getBucketVisibility=function(){return this.showBuckets},e.prototype.resetTile=function(t,e){var i="g"+t+"."+e;this.neighborhood.getCell(t,e).setColor(null);var r=document.getElementById(i);r&&r.querySelectorAll("*").forEach((function(t){return t.remove()}))},e.prototype.getAsset=function(t,e,i){if(this.neighborhood.getCell(e,i).getCurrentValue()&&this.showBuckets)return this.skin_.paintCan},e.prototype.getBackgroundTileInfo=function(t,e){var i=this.neighborhood.getCell(t,e);if(null!=i.getAssetId()&&i.getAssetId()>0&&i.getTile()!==o.SquareType.START&&!i.getOriginalValue())return this.getSpriteData(i)},e.prototype.getSpriteData=function(t){return this.neighborhood.getSpriteMap()[t.getAssetId()]},e.prototype.resetTiles=function(){this.showBuckets=!0;for(var t=0;t<this.map_.ROWS;t++)for(var e=0;e<this.map_.COLS;e++)this.resetTile(t,e)},e.prototype.cellColor=function(t,e){return t>=this.map_.ROWS||t<0||e>=this.map_.COLS||e<0?null:this.map_.getCell(t,e).getColor()||null},e.prototype.centerFill=function(t,e,i){var r=t[0],n=t[1],o=t[2],s=t[3],l=t[4],p=t[5],c=t[6],h=t[7],f=t[8];a("path",{d:l!=n||l!=p||h||s||r||f?l!=p||l!=h||s||n||o||c?l!=h||l!=s||n||p||f||r?u(this.squareSize,!1,!1,!(l!=s||l!=n||p||h||c||o),!1):u(this.squareSize,!1,!0,!1,!1):u(this.squareSize,!0,!1,!1,!1):u(this.squareSize,!1,!1,!1,!0),stroke:l,fill:l},e,i+"-center")},e.prototype.colorCells=function(t,e,i){var r=this.squareSize,n=t[0],o=t[1],a=t[2],u=t[3],p=t[4],c=t[5],h=t[6],f=t[7],m=t[8],d="g"+i,y=document.getElementById(d);y&&y.querySelectorAll("*").forEach((function(t){return t.remove()})),p?this.centerFill(t,e,i):(o&&c&&o===c&&l(e,i,r,o,a,n,m,s.topRight),c&&f&&c===f&&l(e,i,r,c,m,a,h,s.bottomRight),f&&u&&f===u&&l(e,i,r,f,h,m,n,s.bottomLeft),u&&o&&u===o&&l(e,i,r,u,n,h,a,s.topLeft))},e.prototype.makeGrid=function(t,e,i){var r="g"+t+"."+e;a("g",{transform:"translate("+e*this.squareSize+", \n "+t*this.squareSize+")"},i,r)},e.prototype.getGrid=function(t,e){var i="g"+t+"."+e;return document.getElementById(i)},e.prototype.drawTile=function(e,i,r,n,o,s){var a=this.squareSize,u=this.squareSize;t.prototype.drawTileHelper.call(this,e,i,r,n,o,s,a,u,this.squareSize)},e.prototype.drawAssets=function(){var t,e=this.neighborhood.getAssetList();for(t=0;t<e.length;t++){var i=e[t],r=document.getElementById(i),n=this.svg_.getElementsByClassName("pegman-location")[0];this.svg_.insertBefore(r,n)}},e.prototype.updateItemImage=function(e,i,r){var n=this.map_.getCell(e,i);if(n.getOriginalValue()>0){var o=n.getCurrentValue()>0&&this.showBuckets?n.getCurrentValue():"";t.prototype.drawImage_.call(this,"",e,i,this.squareSize),t.prototype.updateOrCreateText_.call(this,"counter",e,i,o,this.squareSize,1,1,"karel-counter-text paint")}if(this.makeGrid(e,i,this.svg_),this.cellColor(e,i))for(var s=e-1;s<e+2;s++)for(var a=i-1;a<i+2;a++){var u=s+"."+a,l=[this.cellColor(s-1,a-1),this.cellColor(s-1,a),this.cellColor(s-1,a+1),this.cellColor(s,a-1),this.cellColor(s,a),this.cellColor(s,a+1),this.cellColor(s+1,a-1),this.cellColor(s+1,a),this.cellColor(s+1,a+1)],p=this.getGrid(s,a);this.colorCells(l,p,u)}},e}(n)},function(t,e,i){"use strict";var r=i(20),n=i(5).DEFAULT_PEGMAN_ID;t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.pegmen={}}return t.prototype.getOrCreatePegman=function(t){null==t&&(t=n);var e=this.getPegman(t);return e||(e=new r(t),this.addPegman(e)),e},t.prototype.getPegman=function(t){return null==t&&(t=n),this.pegmen[t]},t.prototype.addPegman=function(t){if(this.pegmen[t.id])throw new Error("Pegman with id "+t.id+" already exists.");this.pegmen[t.id]=t},t.prototype.getAllPegmanIds=function(){return Object.keys(this.pegmen)},t.prototype.isDefaultPegman=function(t){return null==t||t===n},t}()},function(t,e,i){"use strict";var r=i(4),n=i(11),o=i(15),s=i(17),a=i(19);t.exports={Cell:r,BeeCell:n,HarvesterCell:o,PlanterCell:s,NeighborhoodCell:a}},function(t,e,i){"use strict";var r=i(8),n=i(9),o=i(12),s=i(13),a=i(14),u=i(16),l=i(18);t.exports={Farmer:r,Bee:n,Collector:o,Wordsearch:s,Harvester:a,Planter:u,Neighborhood:l}}])}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUVELFFBQVEsQ0FBQ3dvQixPQUFPcG9CLEVBQUVxb0IsSUFBSXBvQixFQUFFcW9CLFVBQVUvbkIsRUFBRWdvQixXQUFXam5CLEVBQUVrbkIsVUFBVTlqQixFQUFFK2pCLFFBQVE5akIsRUFBRStqQixhQUFheG9CLEVBQUUsRyIsInNvdXJjZXMiOlsid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9AY29kZS1kb3Qtb3JnL21hemUvZGlzdC9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbih0LGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgaT1lKCk7Zm9yKHZhciByIGluIGkpKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHM6dClbcl09aVtyXX19KHdpbmRvdywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gaShyKXtpZihlW3JdKXJldHVybiBlW3JdLmV4cG9ydHM7dmFyIG49ZVtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbcl0uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsaSksbi5sPSEwLG4uZXhwb3J0c31yZXR1cm4gaS5tPXQsaS5jPWUsaS5kPWZ1bmN0aW9uKHQsZSxyKXtpLm8odCxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxpLnI9ZnVuY3Rpb24odCl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0saS50PWZ1bmN0aW9uKHQsZSl7aWYoMSZlJiYodD1pKHQpKSw4JmUpcmV0dXJuIHQ7aWYoNCZlJiZcIm9iamVjdFwiPT10eXBlb2YgdCYmdCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoaS5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KSwyJmUmJlwic3RyaW5nXCIhPXR5cGVvZiB0KWZvcih2YXIgbiBpbiB0KWkuZChyLG4sZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19LmJpbmQobnVsbCxuKSk7cmV0dXJuIHJ9LGkubj1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gaS5kKGUsXCJhXCIsZSksZX0saS5vPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxpLnA9XCJcIixpKGkucz0yMil9KFtmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSgxKSxuPXQuZXhwb3J0cztuLkRpcmVjdGlvbj17Tk9SVEg6MCxFQVNUOjEsU09VVEg6MixXRVNUOjN9LG4uU3F1YXJlVHlwZT17V0FMTDowLE9QRU46MSxTVEFSVDoyLEZJTklTSDozLE9CU1RBQ0xFOjQsU1RBUlRBTkRGSU5JU0g6NX0sbi5UdXJuRGlyZWN0aW9uPXtMRUZUOi0xLFJJR0hUOjF9LG4uTW92ZURpcmVjdGlvbj17Rk9SV0FSRDowLFJJR0hUOjEsQkFDS1dBUkQ6MixMRUZUOjN9LG4uZGlyZWN0aW9uVG9EeER5PWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIG4uRGlyZWN0aW9uLk5PUlRIOnJldHVybntkeDowLGR5Oi0xfTtjYXNlIG4uRGlyZWN0aW9uLkVBU1Q6cmV0dXJue2R4OjEsZHk6MH07Y2FzZSBuLkRpcmVjdGlvbi5TT1VUSDpyZXR1cm57ZHg6MCxkeToxfTtjYXNlIG4uRGlyZWN0aW9uLldFU1Q6cmV0dXJue2R4Oi0xLGR5OjB9fXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGlyZWN0aW9uIHZhbHVlXCIrdCl9LG4uZGlyZWN0aW9uVG9GcmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gci5tb2QoNCp0LDE2KX0sbi5jb25zdHJhaW5EaXJlY3Rpb240PWZ1bmN0aW9uKHQpe3JldHVybiByLm1vZCh0LDQpfX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPWkoNSk7dC5leHBvcnRzLm1vZD1mdW5jdGlvbih0LGUpe3JldHVybih0JWUrZSklZX0sdC5leHBvcnRzLnJhbmRvbVZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSp0Lmxlbmd0aCldfSx0LmV4cG9ydHMucm90YXRlMkRBcnJheT1mdW5jdGlvbih0KXtyZXR1cm4gdFswXS5tYXAoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZVt0Lmxlbmd0aC1pLTFdfSkpfSkpfSx0LmV4cG9ydHMucmFuZ2U9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10scj10O3I8PWU7cisrKWkucHVzaChyKTtyZXR1cm4gaX0sdC5leHBvcnRzLmNyZWF0ZVV1aWQ9ZnVuY3Rpb24oKXtyZXR1cm5cInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eFwiLnJlcGxhY2UoL1t4eV0vZywoZnVuY3Rpb24odCl7dmFyIGU9MTYqTWF0aC5yYW5kb20oKXwwO3JldHVybihcInhcIj09PXQ/ZTozJmV8OCkudG9TdHJpbmcoMTYpfSkpfSx0LmV4cG9ydHMuaXNGYXJtZXJTa2luPWZ1bmN0aW9uKHQpe3JldHVybi9mYXJtZXIoX25pZ2h0KT8vLnRlc3QodCl9LHQuZXhwb3J0cy5pc0JlZVNraW49ZnVuY3Rpb24odCl7cmV0dXJuL2JlZShfbmlnaHQpPy8udGVzdCh0KX0sdC5leHBvcnRzLmlzQ29sbGVjdG9yU2tpbj1mdW5jdGlvbih0KXtyZXR1cm4vY29sbGVjdG9yKF9uaWdodCk/Ly50ZXN0KHQpfSx0LmV4cG9ydHMuaXNTY3JhdFNraW49ZnVuY3Rpb24odCl7cmV0dXJuL3NjcmF0Ly50ZXN0KHQpfSx0LmV4cG9ydHMuaXNQbGFudGVyU2tpbj1mdW5jdGlvbih0KXtyZXR1cm4vcGxhbnRlci8udGVzdCh0KX0sdC5leHBvcnRzLmlzSGFydmVzdGVyU2tpbj1mdW5jdGlvbih0KXtyZXR1cm4vaGFydmVzdGVyLy50ZXN0KHQpfSx0LmV4cG9ydHMuaXNXb3JkU2VhcmNoU2tpbj1mdW5jdGlvbih0KXtyZXR1cm5cImxldHRlcnNcIj09PXR9LHQuZXhwb3J0cy5pc05laWdoYm9yaG9vZFNraW49ZnVuY3Rpb24odCl7cmV0dXJuXCJuZWlnaGJvcmhvb2RcIj09PXR9LHQuZXhwb3J0cy5nZXRTdWJ0eXBlRm9yU2tpbj1mdW5jdGlvbihlKXtyZXR1cm4gdC5leHBvcnRzLmlzRmFybWVyU2tpbihlKT9pKDgpOnQuZXhwb3J0cy5pc0JlZVNraW4oZSk/aSg5KTp0LmV4cG9ydHMuaXNDb2xsZWN0b3JTa2luKGUpP2koMTIpOnQuZXhwb3J0cy5pc1dvcmRTZWFyY2hTa2luKGUpP2koMTMpOnQuZXhwb3J0cy5pc1NjcmF0U2tpbihlKT9pKDMwKTp0LmV4cG9ydHMuaXNIYXJ2ZXN0ZXJTa2luKGUpP2koMTQpOnQuZXhwb3J0cy5pc1BsYW50ZXJTa2luKGUpP2koMTYpOnQuZXhwb3J0cy5pc05laWdoYm9yaG9vZFNraW4oZSk/aSgxOCk6aSgyKX0sdC5leHBvcnRzLmdldFBlZ21hbkVsZW1lbnRJZD1mdW5jdGlvbih0LGUpe3ZhciBpPVwiXCI7cmV0dXJuIG51bGwhPWUmJmUhPT1yLkRFRkFVTFRfUEVHTUFOX0lEJiYoaT1cIi1cIitlKSxcIlwiK3QraX19LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBuKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9dmFyIG89aSg0KSxzPWkoMjUpLGE9aSgwKS5TcXVhcmVUeXBlLHU9aSgyNikuRXZlbnRFbWl0dGVyLGw9ezEwMDEwOls0LDBdLDEwMDAxOlszLDNdLDExZTM6WzAsMV0sMTAxMDA6WzAsMl0sMTEwMTA6WzQsMV0sMTAxMDE6WzMsMl0sMTAxMTA6WzAsMF0sMTAwMTE6WzIsMF0sMTEwMDE6WzQsMl0sMTExMDA6WzIsM10sMTExMTA6WzEsMV0sMTAxMTE6WzEsMF0sMTEwMTE6WzIsMV0sMTExMDE6WzEsMl0sMTExMTE6WzIsMl0sbnVsbDA6WzQsM10sbnVsbDE6WzMsMF0sbnVsbDI6WzMsMV0sbnVsbDM6WzAsM10sbnVsbDQ6WzEsM119O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkpe3ZhciBvPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxzPW8uc2tpbixhPW8ubGV2ZWw7cih0aGlzLGUpO3ZhciB1PW4odGhpcyx0LmNhbGwodGhpcykpO3JldHVybiB1Lm1hemVfPWksdS5za2luXz1zLHUuc3RhcnREaXJlY3Rpb249YT9hLnN0YXJ0RGlyZWN0aW9uOjAsdX1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0oZSx0KSxlLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldENlbGwodCxlKS5nZXRDdXJyZW50VmFsdWUoKX0sZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlLGkpe3RoaXMuZ2V0Q2VsbCh0LGUpLnNldEN1cnJlbnRWYWx1ZShpKX0sZS5wcm90b3R5cGUuZ2V0Q2VsbD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1hemVfLm1hcC5jdXJyZW50U3RhdGljR3JpZFt0XVtlXX0sZS5wcm90b3R5cGUuZ2V0Q2VsbENsYXNzPWZ1bmN0aW9uKCl7cmV0dXJuIG99LGUucHJvdG90eXBlLmxvYWRBdWRpbz1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLnBsYXlBdWRpb189ZnVuY3Rpb24odCl7dGhpcy5tYXplXy5wbGF5QXVkaW8mJnRoaXMubWF6ZV8ucGxheUF1ZGlvKHQpfSxlLnByb3RvdHlwZS5jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dGhpcy5kcmF3ZXI9bmV3IHModGhpcy5tYXplXy5tYXAsdGhpcy5za2luXy5kaXJ0LHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZW1pdChcInJlc2V0XCIpfSxlLnByb3RvdHlwZS5pc0Zhcm1lcj1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc0NvbGxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc1NjcmF0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLmlzV29yZFNlYXJjaD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc0JlZT1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc05laWdoYm9yaG9vZD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc09uUGF0aFN0cl89ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pc1dhbGxPck91dE9mQm91bmRzXyh0LGUpP1wiMFwiOlwiMVwifSxlLnByb3RvdHlwZS5pc1dhbGxPck91dE9mQm91bmRzXz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1hemVfLm1hcC5nZXRUaWxlKGUsdCk9PT1hLldBTEx8fHZvaWQgMD09PXRoaXMubWF6ZV8ubWFwLmdldFRpbGUoZSx0KX0sZS5wcm90b3R5cGUuZ2V0RW1wdHlUaWxlPWZ1bmN0aW9uKHQsZSxpLHIpe3ZhciBuPXZvaWQgMDtpZihyfHwhaSYmTWF0aC5yYW5kb20oKT4uMil0aGlzLndhbGxNYXBbZV1bdF09MCxuPVwibnVsbDBcIjtlbHNle3ZhciBvPU1hdGguZmxvb3IoMSs0Kk1hdGgucmFuZG9tKCkpO3RoaXMud2FsbE1hcFtlXVt0XT1vLG49XCJudWxsXCIrb31yZXR1cm4gbn0sZS5wcm90b3R5cGUuZHJhd01hcFRpbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT0wLHI9dm9pZCAwO3RoaXMubWF6ZV8ubWFwLmZvckVhY2hDZWxsKChmdW5jdGlvbihuLG8scyl7aWYocj1lLmlzT25QYXRoU3RyXyhzLG8pK2UuaXNPblBhdGhTdHJfKHMsby0xKStlLmlzT25QYXRoU3RyXyhzKzEsbykrZS5pc09uUGF0aFN0cl8ocyxvKzEpK2UuaXNPblBhdGhTdHJfKHMtMSxvKSwhbFtyXSl7dmFyIGE9XCIwMDAwMFwiIT09cix1PWEmJnIuc3BsaXQoXCIxXCIpLmxlbmd0aD4yO3I9ZS5nZXRFbXB0eVRpbGUocyxvLGEsdSl9ZS5kcmF3VGlsZSh0LGxbcl0sbyxzLGkpLGUuZHJhd2VyLnVwZGF0ZUl0ZW1JbWFnZShvLHMsITEpLGkrK30pKX0sZS5wcm90b3R5cGUuc2NoZWR1bGVEaXJ0Q2hhbmdlPWZ1bmN0aW9uKHQsZSl7dGhpcy5kcmF3ZXIudXBkYXRlSXRlbUltYWdlKHQsZSwhMCl9LGUucHJvdG90eXBlLmRyYXdUaWxlPWZ1bmN0aW9uKHQsZSxpLHIsbil7dGhpcy5kcmF3ZXIuZHJhd1RpbGUodCxlLGkscixuLHRoaXMuc2tpbl8udGlsZXMpfSxlLnByb3RvdHlwZS5pbml0V2FsbE1hcD1mdW5jdGlvbigpe3RoaXMud2FsbE1hcD1uZXcgQXJyYXkodGhpcy5tYXplXy5tYXAuUk9XUyk7Zm9yKHZhciB0PTA7dDx0aGlzLm1hemVfLm1hcC5ST1dTO3QrKyl0aGlzLndhbGxNYXBbdF09bmV3IEFycmF5KHRoaXMubWF6ZV8ubWFwLkNPTFMpfSxlLnByb3RvdHlwZS5pbml0U3RhcnRGaW5pc2g9ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0PXZvaWQgMCx0aGlzLmZpbmlzaD12b2lkIDA7Zm9yKHZhciB0PTA7dDx0aGlzLm1hemVfLm1hcC5ST1dTO3QrKylmb3IodmFyIGU9MDtlPHRoaXMubWF6ZV8ubWFwLkNPTFM7ZSsrKXt2YXIgaT10aGlzLm1hemVfLm1hcC5nZXRUaWxlKHQsZSk7aT09PWEuU1RBUlQ/dGhpcy5zdGFydD17eDplLHk6dH06aT09PWEuRklOSVNIP3RoaXMuZmluaXNoPXt4OmUseTp0fTppPT09YS5TVEFSVEFOREZJTklTSCYmKHRoaXMuc3RhcnQ9e3g6ZSx5OnR9LHRoaXMuZmluaXNoPXt4OmUseTp0fSl9fSxlLnByb3RvdHlwZS5hbGxvd011bHRpcGxlUGVnbWVuPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGV9KHUpfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZnVuY3Rpb24odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIGk9W10scj0hMCxuPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIHMsYT10W1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KHM9YS5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHMudmFsdWUpLCFlfHxpLmxlbmd0aCE9PWUpO3I9ITApO31jYXRjaCh0KXtuPSEwLG89dH1maW5hbGx5e3RyeXshciYmYS5yZXR1cm4mJmEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IG99fXJldHVybiBpfSh0LGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfTt2YXIgbj1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkscil7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSx0aGlzLm1hcF89ZSx0aGlzLmFzc2V0Xz1pLHRoaXMuc3ZnXz1yfXJldHVybiB0LmNlbGxJZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQrXCJfXCIrZStcIl9cIitpfSx0LnByb3RvdHlwZS5nZXRBc3NldD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYXNzZXRffSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUudXBkYXRlSXRlbUltYWdlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106NTA7cmV0dXJuIHRoaXMuZHJhd0ltYWdlXyhcIlwiLHQsZSxyKX0sdC5wcm90b3R5cGUuZHJhd0ltYWdlXz1mdW5jdGlvbihlLGkscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjUwLG89dGhpcy5zdmdfLnF1ZXJ5U2VsZWN0b3IoXCIjXCIrdC5jZWxsSWQoZSxpLHIpKSxzPXRoaXMuZ2V0QXNzZXQoZSxpLHIpO2lmKG98fHMpcmV0dXJuKG89dGhpcy5nZXRPckNyZWF0ZUltYWdlXyhlLGksciwhMCxuKSkmJihvLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLHN8fFwiXCIpLG8uc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLHM/XCJ2aXNpYmxlXCI6XCJoaWRkZW5cIikpLG99LHQucHJvdG90eXBlLmdldE9yQ3JlYXRlSW1hZ2VfPWZ1bmN0aW9uKGUsaSxyKXt2YXIgbz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjUwLGE9dGhpcy5nZXRBc3NldChlLGksciksdT10LmNlbGxJZChlLGksciksbD10aGlzLnN2Z18ucXVlcnlTZWxlY3RvcihcIiNcIit1KTtpZihsKXJldHVybiBsO2lmKGEpe3ZhciBwPXRoaXMuc3ZnXy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicGVnbWFuLWxvY2F0aW9uXCIpWzBdLGM9dm9pZCAwO2lmKG8pe2M9dC5jZWxsSWQoZStcIkNsaXBcIixpLHIpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiY2xpcFBhdGhcIik7aC5zZXRBdHRyaWJ1dGUoXCJpZFwiLGMpO3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwicmVjdFwiKTtmLnNldEF0dHJpYnV0ZShcInhcIixyKnMpLGYuc2V0QXR0cmlidXRlKFwieVwiLGkqcyksZi5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLHMpLGYuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIscyksaC5hcHBlbmRDaGlsZChmKSx0aGlzLnN2Z18uaW5zZXJ0QmVmb3JlKGgscCl9cmV0dXJuKGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sXCJpbWFnZVwiKSkuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsYSksbC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixzKSxsLnNldEF0dHJpYnV0ZShcIndpZHRoXCIscyksbC5zZXRBdHRyaWJ1dGUoXCJ4XCIscypyKSxsLnNldEF0dHJpYnV0ZShcInlcIixzKmkpLGwuc2V0QXR0cmlidXRlKFwiaWRcIix1KSxvJiZsLnNldEF0dHJpYnV0ZShcImNsaXAtcGF0aFwiLFwidXJsKCNcIitjK1wiKVwiKSx0aGlzLnN2Z18uaW5zZXJ0QmVmb3JlKGwscCksbH19LHQucHJvdG90eXBlLnVwZGF0ZU9yQ3JlYXRlVGV4dF89ZnVuY3Rpb24oZSxpLHIsbyl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjUwLGE9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjIsdT1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06MixsPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpcImthcmVsLWNvdW50ZXItdGV4dFwiLHA9dGhpcy5zdmdfLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJwZWdtYW4tbG9jYXRpb25cIilbMF0sYz10aGlzLnN2Z18ucXVlcnlTZWxlY3RvcihcIiNcIit0LmNlbGxJZChlLGkscikpO3JldHVybiBjfHwoKGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sXCJ0ZXh0XCIpKS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLGwpLGMuc2V0QXR0cmlidXRlKFwieFwiLChyKzEpKnMtYSksYy5zZXRBdHRyaWJ1dGUoXCJ5XCIsKGkrMSkqcy11KSxjLnNldEF0dHJpYnV0ZShcImlkXCIsdC5jZWxsSWQoZSxpLHIpKSxjLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpKSx0aGlzLnN2Z18uaW5zZXJ0QmVmb3JlKGMscCkpLGMuZmlyc3RDaGlsZC5ub2RlVmFsdWU9byxjfSx0LnByb3RvdHlwZS5kcmF3VGlsZT1mdW5jdGlvbih0LGUsaSxyLG4sbyl7dGhpcy5kcmF3VGlsZUhlbHBlcih0LGUsaSxyLG4sbywyNTAsMjAwLDUwKX0sdC5wcm90b3R5cGUuZHJhd1RpbGVIZWxwZXI9ZnVuY3Rpb24odCxlLGksbyxzLGEsdSxsLHApe3ZhciBjPXIoZSwyKSxoPWNbMF0sZj1jWzFdLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sXCJjbGlwUGF0aFwiKTttLnNldEF0dHJpYnV0ZShcImlkXCIsXCJ0aWxlQ2xpcFBhdGhcIitzKTt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobixcInJlY3RcIik7ZC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLHApLGQuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIscCksZC5zZXRBdHRyaWJ1dGUoXCJ4XCIsbypwKSxkLnNldEF0dHJpYnV0ZShcInlcIixpKnApLG0uYXBwZW5kQ2hpbGQoZCksdC5hcHBlbmRDaGlsZChtKTt2YXIgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobixcImltYWdlXCIpO3kuc2V0QXR0cmlidXRlKFwiaWRcIixcInRpbGVFbGVtZW50XCIrcykseS5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmhyZWZcIixhKSx5LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGwpLHkuc2V0QXR0cmlidXRlKFwid2lkdGhcIix1KSx5LnNldEF0dHJpYnV0ZShcImNsaXAtcGF0aFwiLFwidXJsKCN0aWxlQ2xpcFBhdGhcIitzK1wiKVwiKSx5LnNldEF0dHJpYnV0ZShcInhcIiwoby1oKSpwKSx5LnNldEF0dHJpYnV0ZShcInlcIiwoaS1mKSpwKSx0LmFwcGVuZENoaWxkKHkpO3ZhciBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiYW5pbWF0ZVwiKTtnLnNldEF0dHJpYnV0ZShcImlkXCIsXCJ0aWxlQW5pbWF0aW9uXCIrcyksZy5zZXRBdHRyaWJ1dGUoXCJhdHRyaWJ1dGVUeXBlXCIsXCJDU1NcIiksZy5zZXRBdHRyaWJ1dGUoXCJhdHRyaWJ1dGVOYW1lXCIsXCJvcGFjaXR5XCIpLGcuc2V0QXR0cmlidXRlKFwiZnJvbVwiLDEpLGcuc2V0QXR0cmlidXRlKFwidG9cIiwwKSxnLnNldEF0dHJpYnV0ZShcImR1clwiLFwiMXNcIiksZy5zZXRBdHRyaWJ1dGUoXCJiZWdpblwiLFwiaW5kZWZpbml0ZVwiKSx5LmFwcGVuZENoaWxkKGcpfSx0fSgpLHQuZXhwb3J0cy5TUVVBUkVfU0laRT01MCx0LmV4cG9ydHMuU1ZHX05TPW59LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxyKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMudGlsZVR5cGVfPWUsdGhpcy5vcmlnaW5hbFZhbHVlXz1pLHRoaXMuY3VycmVudFZhbHVlXz12b2lkIDAsdGhpcy5yZXNldEN1cnJlbnRWYWx1ZSgpLHRoaXMucmFuZ2VfPWlzTmFOKHIpP2k6cn1yZXR1cm4gdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnN0cnVjdG9yLmRlc2VyaWFsaXplKHRoaXMuc2VyaWFsaXplKCkpO3JldHVybiB0LnNldEN1cnJlbnRWYWx1ZSh0aGlzLmN1cnJlbnRWYWx1ZV8pLHR9LHQucHJvdG90eXBlLmdldFRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWxlVHlwZV99LHQucHJvdG90eXBlLmhhc1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY3VycmVudFZhbHVlX30sdC5wcm90b3R5cGUuaXNEaXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY3VycmVudFZhbHVlX30sdC5wcm90b3R5cGUuaXNWYXJpYWJsZVJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VfIT09dGhpcy5vcmlnaW5hbFZhbHVlX30sdC5wcm90b3R5cGUuaXNWYXJpYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFyaWFibGVSYW5nZSgpfSx0LnByb3RvdHlwZS5nZXRPcmlnaW5hbFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxWYWx1ZV99LHQucHJvdG90eXBlLmdldEN1cnJlbnRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRWYWx1ZV99LHQucHJvdG90eXBlLnNldEN1cnJlbnRWYWx1ZT1mdW5jdGlvbih0KXt0aGlzLmN1cnJlbnRWYWx1ZV89dH0sdC5wcm90b3R5cGUucmVzZXRDdXJyZW50VmFsdWU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRWYWx1ZV89dGhpcy5vcmlnaW5hbFZhbHVlX30sdC5wcm90b3R5cGUuZ2V0UG9zc2libGVHcmlkQXNzZXRzPWZ1bmN0aW9uKCl7dmFyIGU9W107aWYodGhpcy5pc1ZhcmlhYmxlUmFuZ2UoKSlmb3IodmFyIGk9TWF0aC5taW4odGhpcy5vcmlnaW5hbFZhbHVlXyx0aGlzLnJhbmdlXykscj1NYXRoLm1heCh0aGlzLm9yaWdpbmFsVmFsdWVfLHRoaXMucmFuZ2VfKSxuPWk7bjw9cjtuKyspZS5wdXNoKG5ldyB0KHRoaXMudGlsZVR5cGVfLG4pKTtlbHNlIGUucHVzaCh0aGlzKTtyZXR1cm4gZX0sdC5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJue3RpbGVUeXBlOnRoaXMudGlsZVR5cGVfLHZhbHVlOnRoaXMub3JpZ2luYWxWYWx1ZV8scmFuZ2U6dGhpcy5yYW5nZV99fSx0LmRlc2VyaWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLnRpbGVUeXBlLGUudmFsdWUsZS5yYW5nZSl9LHQucGFyc2VGcm9tT2xkVmFsdWVzPWZ1bmN0aW9uKGUsaSl7ZT1wYXJzZUludChlKSxpPXBhcnNlSW50KGkpO3ZhciByLG49dm9pZCAwO3JldHVybiByPXBhcnNlSW50KGUpLGlzTmFOKGkpfHwwPT09aXx8KG49aSksbmV3IHQocixuKX0sdH0oKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3QuZXhwb3J0cy5TVkdfTlM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHQuZXhwb3J0cy5ERUZBVUxUX1BFR01BTl9JRD1cImRlZmF1bHRcIix0LmV4cG9ydHMucGVnbWFuRWxlbWVudHM9e1BFR01BTjpcInBlZ21hblwiLElETEU6XCJpZGxlUGVnbWFuXCIsQ0xJUF9SRUNUOlwiY2xpcFJlY3RcIixGQURFT1VUOlwicGVnbWFuRmFkZW91dEFuaW1hdGlvblwiLFdBTEw6XCJ3YWxsUGVnbWFuXCIsV0FMTF9BTklNQVRJT046XCJ3YWxsQW5pbWF0aW9uXCIsTU9WRTpcIm1vdmVQZWdtYW5cIixDRUxFQlJBVEU6XCJjZWxlYnJhdGVQZWdtYW5cIn19LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1pKDUpLG49ci5TVkdfTlMsbz1yLnBlZ21hbkVsZW1lbnRzLHM9aSgwKSxhPWkoMSksdT1hLmNyZWF0ZVV1aWQsbD1hLmdldFBlZ21hbkVsZW1lbnRJZCxwPXMuU3F1YXJlVHlwZTtmdW5jdGlvbiBjKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjUwO3JldHVybiBNYXRoLmZsb29yKGkqKGUrLjUpLXQucGVnbWFuSGVpZ2h0LzIrdC5wZWdtYW5ZT2Zmc2V0KX1mdW5jdGlvbiBoKHQsZSxpLHIsbixvKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06NTAsYT10LnBlZ21hblhPZmZzZXR8fDA7ZS5zZXRBdHRyaWJ1dGUoXCJ4XCIscipzLW8qdC5wZWdtYW5XaWR0aCsxK2EpLGUuc2V0QXR0cmlidXRlKFwieVwiLGModCxuLHMpKSxpLnNldEF0dHJpYnV0ZShcInhcIixyKnMrMSthKSxpLnNldEF0dHJpYnV0ZShcInlcIixlLmdldEF0dHJpYnV0ZShcInlcIikpfWZ1bmN0aW9uIGYodCxlLGkscixhLHApe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTo1MCxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiY2xpcFBhdGhcIiksbT1cInBlZ21hbkNsaXBQYXRoLVwiK3UoKTtmLnNldEF0dHJpYnV0ZShcImlkXCIsbSk7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sXCJyZWN0XCIpO2Quc2V0QXR0cmlidXRlKFwiaWRcIixsKG8uQ0xJUF9SRUNULGUpKSxkLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsdC5wZWdtYW5XaWR0aCksZC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIix0LnBlZ21hbkhlaWdodCksZi5hcHBlbmRDaGlsZChkKSxwLmFwcGVuZENoaWxkKGYpO3ZhciB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiaW1hZ2VcIik7eS5zZXRBdHRyaWJ1dGUoXCJpZFwiLGwoby5QRUdNQU4sZSkpLHkuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcInBlZ21hbi1sb2NhdGlvblwiKSx5LnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLHQuYXZhdGFyKSx5LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLHQucGVnbWFuSGVpZ2h0KTt2YXIgZz10LnBlZ21hblNoZWV0V2lkdGh8fDIxKnQucGVnbWFuV2lkdGg7eS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLGcpLHkuc2V0QXR0cmlidXRlKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI1wiK20rXCIpXCIpLHAuYXBwZW5kQ2hpbGQoeSksaCh0LHksZCxpLHIscy5kaXJlY3Rpb25Ub0ZyYW1lKGEpLGMpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiYW5pbWF0ZVwiKTtiLnNldEF0dHJpYnV0ZShcImlkXCIsbChvLkZBREVPVVQsZSkpLGIuc2V0QXR0cmlidXRlKFwiYXR0cmlidXRlVHlwZVwiLFwiQ1NTXCIpLGIuc2V0QXR0cmlidXRlKFwiYXR0cmlidXRlTmFtZVwiLFwib3BhY2l0eVwiKSxiLnNldEF0dHJpYnV0ZShcImZyb21cIiwxKSxiLnNldEF0dHJpYnV0ZShcInRvXCIsMCksYi5zZXRBdHRyaWJ1dGUoXCJkdXJcIixcIjFzXCIpLGIuc2V0QXR0cmlidXRlKFwiYmVnaW5cIixcImluZGVmaW5pdGVcIikseS5hcHBlbmRDaGlsZChiKX10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkscil7dmFyIG8scyxhLHU9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjUwLGw9ci5DT0xTKnUsYz1yLlJPV1MqdSxoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwicmVjdFwiKTtoLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsbCksaC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixjKSxoLnNldEF0dHJpYnV0ZShcImZpbGxcIixcIiNGMUVFRTdcIiksaC5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIiwxKSxoLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLFwiI0NDQlwiKSx0LmFwcGVuZENoaWxkKGgpLGUuYmFja2dyb3VuZCYmKChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiaW1hZ2VcIikpLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLGUuYmFja2dyb3VuZCksYS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixjKSxhLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsbCksYS5zZXRBdHRyaWJ1dGUoXCJ4XCIsMCksYS5zZXRBdHRyaWJ1dGUoXCJ5XCIsMCksdC5hcHBlbmRDaGlsZChhKSksaS5kcmF3TWFwVGlsZXModCk7dmFyIG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sXCJwYXRoXCIpO2lmKG0uc2V0QXR0cmlidXRlKFwiaWRcIixcImhpbnRQYXRoXCIpLG0uc2V0QXR0cmlidXRlKFwic3Ryb2tlXCIsXCIjYzAwXCIpLG0uc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsXCI1XCIpLG0uc2V0QXR0cmlidXRlKFwiZmlsbFwiLFwibm9uZVwiKSxtLnNldEF0dHJpYnV0ZShcInN0cm9rZS1saW5lY2FwXCIsXCJyb3VuZFwiKSxtLnNldEF0dHJpYnV0ZShcInN0cm9rZS1saW5lam9pblwiLFwicm91bmRcIiksdC5hcHBlbmRDaGlsZChtKSxpLnN0YXJ0JiZmKGUsdm9pZCAwLGkuc3RhcnQueCxpLnN0YXJ0LnksaS5zdGFydERpcmVjdGlvbix0LHUpLGkuZmluaXNoJiZlLmdvYWxJZGxlKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobixcImltYWdlXCIpO2Quc2V0QXR0cmlidXRlKFwiaWRcIixcImZpbmlzaFwiKSxkLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLGUuZ29hbElkbGUpLGQuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsNDMpLGQuc2V0QXR0cmlidXRlKFwid2lkdGhcIiw1MCksdC5hcHBlbmRDaGlsZChkKSxkLnNldEF0dHJpYnV0ZShcInhcIix1KihpLmZpbmlzaC54Ky41KS1kLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpLzIpLGQuc2V0QXR0cmlidXRlKFwieVwiLHUqKGkuZmluaXNoLnkrLjkpLWQuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKSxkLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLGUuZ29hbElkbGUpLGQuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKX1pZihlLm9ic3RhY2xlSWRsZSl7dmFyIHk9MDtmb3Iocz0wO3M8ci5ST1dTO3MrKylmb3Iobz0wO288ci5DT0xTO28rKyl7aWYoci5nZXRUaWxlKHMsbyk9PT1wLk9CU1RBQ0xFKXt2YXIgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobixcImltYWdlXCIpO2cuc2V0QXR0cmlidXRlKFwiaWRcIixcIm9ic3RhY2xlXCIreSksZy5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiw0MyplLm9ic3RhY2xlU2NhbGUpLGcuc2V0QXR0cmlidXRlKFwid2lkdGhcIiw1MCplLm9ic3RhY2xlU2NhbGUpLGcuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsZS5vYnN0YWNsZUlkbGUpLGcuc2V0QXR0cmlidXRlKFwieFwiLHUqKG8rLjUpLWcuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikvMiksZy5zZXRBdHRyaWJ1dGUoXCJ5XCIsdSoocysuOSktZy5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIikpLHQuYXBwZW5kQ2hpbGQoZyl9Kyt5fX19LHQuZXhwb3J0cy5nZXRQZWdtYW5ZRm9yUm93PWMsdC5leHBvcnRzLmRpc3BsYXlQZWdtYW49aCx0LmV4cG9ydHMuYWRkTmV3UGVnbWFuPWZ9LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1bXTt0LmV4cG9ydHMuc2V0VGltZW91dD1mdW5jdGlvbih0LGUpe3ZhciBpPXdpbmRvdy5zZXRUaW1lb3V0LmFwcGx5KHdpbmRvdyxhcmd1bWVudHMpO3JldHVybiByLnB1c2goaSksaX0sdC5leHBvcnRzLmNsZWFyVGltZW91dHM9ZnVuY3Rpb24oKXtyLmZvckVhY2god2luZG93LmNsZWFyVGltZW91dCx3aW5kb3cpLHIubGVuZ3RoPTB9LHQuZXhwb3J0cy5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24odCl7d2luZG93LmNsZWFyVGltZW91dCh0KTt2YXIgZT1yLmluZGV4T2YodCk7ZT4tMSYmci5zcGxpY2UoZSwxKX07dmFyIG49W107dC5leHBvcnRzLnNldEludGVydmFsPWZ1bmN0aW9uKHQsZSl7dmFyIGk9d2luZG93LnNldEludGVydmFsLmFwcGx5KHdpbmRvdyxhcmd1bWVudHMpO3JldHVybiBuLnB1c2goaSksaX0sdC5leHBvcnRzLmNsZWFySW50ZXJ2YWxzPWZ1bmN0aW9uKCl7bi5mb3JFYWNoKHdpbmRvdy5jbGVhckludGVydmFsLHdpbmRvdyksbi5sZW5ndGg9MH0sdC5leHBvcnRzLmNsZWFySW50ZXJ2YWw9ZnVuY3Rpb24odCl7d2luZG93LmNsZWFySW50ZXJ2YWwodCk7dmFyIGU9by5pbmRleE9mKHQpO2U+LTEmJm8uc3BsaWNlKGUsMSk7dmFyIGk9bi5pbmRleE9mKHQpO2k+LTEmJm4uc3BsaWNlKGksMSl9O3ZhciBvPVtdO3QuZXhwb3J0cy50aW1lZExvb3A9ZnVuY3Rpb24odCxlKXt2YXIgaT1zZXRJbnRlcnZhbChlLHQpO3JldHVybiBvLnB1c2goaSksaX0sdC5leHBvcnRzLnN0b3BUaW1lZExvb3A9ZnVuY3Rpb24odCl7dm9pZCAwPT09dD9vLnNsaWNlKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xlYXJJbnRlcnZhbCh0KX0pKTpjbGVhckludGVydmFsKHQpfX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIG4odCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX12YXIgbz1pKDIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHIodGhpcyxlKSxuKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmlzRmFybWVyPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGV9KG8pfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfXZhciBvPWkoMSkucmFuZG9tVmFsdWUscz1pKDEwKSxhPWkoMTEpLHU9aSgyNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3IodGhpcyxlKTt2YXIgcz1uKHRoaXMsdC5jYWxsKHRoaXMsaSxvKSksYT1vLmxldmVsO3JldHVybiBzLmRlZmF1bHRGbG93ZXJDb2xvcl89YSYmXCJyZWRXaXRoTmVjdGFyXCI9PT1hLmZsb3dlclR5cGU/XCJyZWRcIjpcInB1cnBsZVwiLHMudXNlckNoZWNrc189W10scy5vdmVycmlkZVN0ZXBTcGVlZD0yLHMuaG9uZXlfPXZvaWQgMCxzLm5lY3RhcnNfPXZvaWQgMCxzfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmlzQmVlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmdldENlbGxDbGFzcz1mdW5jdGlvbigpe3JldHVybiBhfSxlLnByb3RvdHlwZS5sb2FkQXVkaW89ZnVuY3Rpb24odCl7dC5iZWVTb3VuZCYmKHRoaXMubWF6ZV8ubG9hZEF1ZGlvKHQubmVjdGFyU291bmQsXCJuZWN0YXJcIiksdGhpcy5tYXplXy5sb2FkQXVkaW8odC5ob25leVNvdW5kLFwiaG9uZXlcIikpfSxlLnByb3RvdHlwZS5jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dGhpcy5kcmF3ZXI9bmV3IHUodGhpcy5tYXplXy5tYXAsdGhpcy5za2luXyx0LHRoaXMpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuaG9uZXlfPTAsdGhpcy5uZWN0YXJzXz1bXTtmb3IodmFyIGU9MDtlPHRoaXMubWF6ZV8ubWFwLmN1cnJlbnRTdGF0aWNHcmlkLmxlbmd0aDtlKyspe3RoaXMudXNlckNoZWNrc19bZV09W107Zm9yKHZhciBpPTA7aTx0aGlzLm1hemVfLm1hcC5jdXJyZW50U3RhdGljR3JpZFtlXS5sZW5ndGg7aSsrKXRoaXMudXNlckNoZWNrc19bZV1baV09e2NoZWNrZWRGb3JGbG93ZXI6ITEsY2hlY2tlZEZvckhpdmU6ITEsY2hlY2tlZEZvck5lY3RhcjohMX19dC5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuZ2V0SG9uZXlDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhvbmV5X30sZS5wcm90b3R5cGUuZ2V0TmVjdGFyQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWN0YXJzXy5sZW5ndGh9LGUucHJvdG90eXBlLmlzSGl2ZT1mdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07aSYmKHRoaXMudXNlckNoZWNrc19bdF1bZV0uY2hlY2tlZEZvckhpdmU9ITApO3ZhciByPXRoaXMubWF6ZV8ubWFwLmN1cnJlbnRTdGF0aWNHcmlkW3RdW2VdO3JldHVybiByLmlzSGl2ZSgpfSxlLnByb3RvdHlwZS5pc0Zsb3dlcj1mdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07aSYmKHRoaXMudXNlckNoZWNrc19bdF1bZV0uY2hlY2tlZEZvckZsb3dlcj0hMCk7dmFyIHI9dGhpcy5tYXplXy5tYXAuY3VycmVudFN0YXRpY0dyaWRbdF1bZV07cmV0dXJuIHIuaXNGbG93ZXIoKX0sZS5wcm90b3R5cGUuaXNDbG91ZGFibGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tYXplXy5tYXAuY3VycmVudFN0YXRpY0dyaWRbdF1bZV0uaXNTdGF0aWNDbG91ZCgpfSxlLnByb3RvdHlwZS5zaG91bGRDaGVja0Nsb3VkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWF6ZV8ubWFwLmdldFZhcmlhYmxlQ2VsbCh0LGUpLmlzU3RhdGljQ2xvdWQoKX0sZS5wcm90b3R5cGUuc2hvdWxkQ2hlY2tQdXJwbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pc1B1cnBsZUZsb3dlcih0LGUpJiYhdGhpcy5tYXplXy5tYXAuZ2V0VmFyaWFibGVDZWxsKHQsZSkuaXNWYXJpYWJsZVJhbmdlKCl9LGUucHJvdG90eXBlLmNoZWNrZWRDbG91ZD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVzZXJDaGVja3NfW3RdW2VdLmNoZWNrZWRGb3JGbG93ZXJ8fHRoaXMudXNlckNoZWNrc19bdF1bZV0uY2hlY2tlZEZvckhpdmV9LGUucHJvdG90eXBlLmNoZWNrZWRBbGxDbG91ZGVkPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLm1hemVfLm1hcC5jdXJyZW50U3RhdGljR3JpZC5sZW5ndGg7dCsrKWZvcih2YXIgZT0wO2U8dGhpcy5tYXplXy5tYXAuY3VycmVudFN0YXRpY0dyaWRbdF0ubGVuZ3RoO2UrKylpZih0aGlzLnNob3VsZENoZWNrQ2xvdWQodCxlKSYmIXRoaXMuY2hlY2tlZENsb3VkKHQsZSkpcmV0dXJuITE7cmV0dXJuITB9LGUucHJvdG90eXBlLmNoZWNrZWRBbGxQdXJwbGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMubWF6ZV8ubWFwLmN1cnJlbnRTdGF0aWNHcmlkLmxlbmd0aDt0KyspZm9yKHZhciBlPTA7ZTx0aGlzLm1hemVfLm1hcC5jdXJyZW50U3RhdGljR3JpZFt0XS5sZW5ndGg7ZSsrKWlmKHRoaXMuc2hvdWxkQ2hlY2tQdXJwbGUodCxlKSYmIXRoaXMudXNlckNoZWNrc19bdF1bZV0uY2hlY2tlZEZvck5lY3RhcilyZXR1cm4hMTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaXNSZWRGbG93ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXRoaXMuaXNGbG93ZXIodCxlLCExKSYmKCEhdGhpcy5tYXplXy5tYXAuY3VycmVudFN0YXRpY0dyaWRbdF1bZV0uaXNSZWRGbG93ZXIoKXx8IXRoaXMubWF6ZV8ubWFwLmN1cnJlbnRTdGF0aWNHcmlkW3RdW2VdLmlzUHVycGxlRmxvd2VyKCkmJlwicmVkXCI9PT10aGlzLmRlZmF1bHRGbG93ZXJDb2xvcl8pfSxlLnByb3RvdHlwZS5pc1B1cnBsZUZsb3dlcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmlzRmxvd2VyKHQsZSwhMSkmJiF0aGlzLmlzUmVkRmxvd2VyKHQsZSl9LGUucHJvdG90eXBlLmhpdmVSZW1haW5pbmdDYXBhY2l0eT1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLmlzSGl2ZSh0LGUpKXJldHVybiAwO3ZhciBpPXRoaXMuZ2V0VmFsdWUodCxlKTtyZXR1cm4tOTk9PT1pPzEvMDotOTg9PT1pPzA6aX0sZS5wcm90b3R5cGUuZmxvd2VyUmVtYWluaW5nQ2FwYWNpdHk9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5pc0Zsb3dlcih0LGUpKXJldHVybiAwO3ZhciBpPXRoaXMuZ2V0VmFsdWUodCxlKTtyZXR1cm4gOTk9PT1pPzEvMDo5OD09PWk/MDppfSxlLnByb3RvdHlwZS5tYWRlSG9uZXlBdD1mdW5jdGlvbih0LGUpey05OSE9PXRoaXMuZ2V0VmFsdWUodCxlKSYmdGhpcy5zZXRWYWx1ZSh0LGUsdGhpcy5nZXRWYWx1ZSh0LGUpLTEpLHRoaXMuaG9uZXlfKz0xfSxlLnByb3RvdHlwZS5nb3ROZWN0YXJBdD1mdW5jdGlvbih0LGUpezk5IT09dGhpcy5nZXRWYWx1ZSh0LGUpJiZ0aGlzLnNldFZhbHVlKHQsZSx0aGlzLmdldFZhbHVlKHQsZSktMSksdGhpcy5uZWN0YXJzXy5wdXNoKHtyb3c6dCxjb2w6ZX0pfSxlLnByb3RvdHlwZS50cnlHZXROZWN0YXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hemVfLmdldFBlZ21hblgoKSxlPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSgpO3JldHVybiB0aGlzLmlzRmxvd2VyKGUsdCk/MD09PXRoaXMuZmxvd2VyUmVtYWluaW5nQ2FwYWNpdHkoZSx0KT8odGhpcy5lbWl0KFwiZmxvd2VyRW1wdHlcIiksITEpOih0aGlzLmdvdE5lY3RhckF0KGUsdCksITApOih0aGlzLmVtaXQoXCJub3RBdEZsb3dlclwiKSwhMSl9LGUucHJvdG90eXBlLnRyeU1ha2VIb25leT1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWF6ZV8uZ2V0UGVnbWFuWCgpLGU9dGhpcy5tYXplXy5nZXRQZWdtYW5ZKCk7cmV0dXJuIHRoaXMuaXNIaXZlKGUsdCk/MD09PXRoaXMuaGl2ZVJlbWFpbmluZ0NhcGFjaXR5KGUsdCk/KHRoaXMuZW1pdChcImhpdmVGdWxsXCIpLCExKToodGhpcy5tYWRlSG9uZXlBdChlLHQpLCEwKToodGhpcy5lbWl0KFwibm90QXRIaXZlXCIpLCExKX0sZS5wcm90b3R5cGUubmVjdGFyUmVtYWluaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxlPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWCgpLGk9dGhpcy5tYXplXy5nZXRQZWdtYW5ZKCk7cmV0dXJuIHQmJih0aGlzLnVzZXJDaGVja3NfW2ldW2VdLmNoZWNrZWRGb3JOZWN0YXI9ITApLHRoaXMuZmxvd2VyUmVtYWluaW5nQ2FwYWNpdHkoaSxlKX0sZS5wcm90b3R5cGUuaG9uZXlBdmFpbGFibGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hemVfLmdldFBlZ21hblgoKSxlPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSgpO3JldHVybiB0aGlzLmhpdmVSZW1haW5pbmdDYXBhY2l0eShlLHQpfSxlLnByb3RvdHlwZS5hbmltYXRlR2V0TmVjdGFyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXplXy5nZXRQZWdtYW5YKCksZT10aGlzLm1hemVfLmdldFBlZ21hblkoKTtpZih0aGlzLmdldFZhbHVlKGUsdCk8PTApdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkbid0IGJlIGFibGUgdG8gZW5kIHVwIHdpdGggYSBuZWN0YXIgYW5pbWF0aW9uIGlmIHRoZXJlIHdhcyBubyBuZWN0YXIgdG8gYmUgaGFkXCIpO3RoaXMucGxheUF1ZGlvXyhcIm5lY3RhclwiKSx0aGlzLmdvdE5lY3RhckF0KGUsdCksdGhpcy5kcmF3ZXIudXBkYXRlSXRlbUltYWdlKGUsdCwhMCl9LGUucHJvdG90eXBlLmFuaW1hdGVNYWtlSG9uZXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hemVfLmdldFBlZ21hblgoKSxlPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSgpO2lmKCF0aGlzLmlzSGl2ZShlLHQpKXRocm93IG5ldyBFcnJvcihcIlNob3VsZG4ndCBiZSBhYmxlIHRvIGVuZCB1cCB3aXRoIGEgaG9uZXkgYW5pbWF0aW9uIGlmIHdlIGFyZW50IGF0IGEgaGl2ZSBvciBkb250IGhhdmUgbmVjdGFyXCIpO3RoaXMucGxheUF1ZGlvXyhcImhvbmV5XCIpLHRoaXMubWFkZUhvbmV5QXQoZSx0KSx0aGlzLmRyYXdlci51cGRhdGVJdGVtSW1hZ2UoZSx0LCEwKX0sZS5wcm90b3R5cGUuZ2V0RW1wdHlUaWxlPWZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIHI9W1wibnVsbDNcIixcIm51bGw0XCIsXCJudWxsMFwiXSxuPWk/MipyLmxlbmd0aDo2KnIubGVuZ3RoLHM9MDtzPG47cysrKXIucHVzaChcIm51bGwxXCIpO3JldHVybiBvKHIpfSxlLnByb3RvdHlwZS5kcmF3VGlsZT1mdW5jdGlvbihlLGkscixuLG8pe2lmKHQucHJvdG90eXBlLmRyYXdUaWxlLmNhbGwodGhpcyxlLGkscixuLG8pLChyK24pJTI9PTApe3ZhciBzPSF0aGlzLmlzV2FsbE9yT3V0T2ZCb3VuZHNfKG4scik7dGhpcy5kcmF3ZXIuYWRkQ2hlY2tlcmJvYXJkVGlsZShyLG4scyl9fSxlfShzKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIG4odCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX12YXIgbz1pKDIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHIodGhpcyxlKSxuKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5tYXplXy5tYXAucmVzZXREaXJ0KCl9LGUucHJvdG90eXBlLmNvbGxlY3RlZEV2ZXJ5dGhpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5tYXplXy5tYXAuY3VycmVudFN0YXRpY0dyaWQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNEaXJ0KCkmJnQuZ2V0Q3VycmVudFZhbHVlKCk+MH0pKX0pKX0sZS5wcm90b3R5cGUuc3VjY2VlZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sbGVjdGVkRXZlcnl0aGluZygpfSxlfShvKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPWkoNCksbj1pKDApLlNxdWFyZVR5cGUsbz17Tk9ORTp2b2lkIDAsSElWRTowLEZMT1dFUjoxLFZBUklBQkxFOjJ9LHM9e05PTkU6dm9pZCAwLFNUQVRJQzowLEhJVkVfT1JfRkxPV0VSOjEsRkxPV0VSX09SX05PVEhJTkc6MixISVZFX09SX05PVEhJTkc6MyxBTlk6NH0sYT17REVGQVVMVDp2b2lkIDAsUkVEOjAsUFVSUExFOjF9O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkscixuLG8scyxhKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpLHI9PT1lLkZlYXR1cmVUeXBlLk5PTkUmJihuPXZvaWQgMCxhPXZvaWQgMCk7dmFyIHU9ZnVuY3Rpb24odCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX0odGhpcyx0LmNhbGwodGhpcyxpLG4sYSkpO3JldHVybiB1LmZlYXR1cmVUeXBlXz1yLHUuZmxvd2VyQ29sb3JfPXMsdS5jbG91ZFR5cGVfPW8sdX1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0oZSx0KSxlLnByb3RvdHlwZS5pc0Zsb3dlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZlYXR1cmVUeXBlXz09PW8uRkxPV0VSfSxlLnByb3RvdHlwZS5pc0hpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZWF0dXJlVHlwZV89PT1vLkhJVkV9LGUucHJvdG90eXBlLmlzUmVkRmxvd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNGbG93ZXIoKSYmdGhpcy5mbG93ZXJDb2xvcl89PT1hLlJFRH0sZS5wcm90b3R5cGUuaXNQdXJwbGVGbG93ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0Zsb3dlcigpJiZ0aGlzLmZsb3dlckNvbG9yXz09PWEuUFVSUExFfSxlLnByb3RvdHlwZS5pc1N0YXRpY0Nsb3VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvdWRUeXBlXz09PXMuU1RBVElDfSxlLnByb3RvdHlwZS5pc1ZhcmlhYmxlQ2xvdWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG91ZFR5cGVfIT09cy5OT05FJiZ0aGlzLmNsb3VkVHlwZV8hPT1zLlNUQVRJQ30sZS5wcm90b3R5cGUuaXNWYXJpYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFyaWFibGVSYW5nZSgpfHx0aGlzLmlzVmFyaWFibGVDbG91ZCgpfSxlLnByb3RvdHlwZS5nZXRQb3NzaWJsZUdyaWRBc3NldHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLmlzVmFyaWFibGVDbG91ZCgpKXt2YXIgaT1uZXcgZSh0aGlzLnRpbGVUeXBlXyxvLkZMT1dFUix0aGlzLm9yaWdpbmFsVmFsdWVfLHMuU1RBVElDLHRoaXMuZmxvd2VyQ29sb3JfKSxyPW5ldyBlKHRoaXMudGlsZVR5cGVfLG8uSElWRSx0aGlzLm9yaWdpbmFsVmFsdWVfLHMuU1RBVElDKSxuPW5ldyBlKHRoaXMudGlsZVR5cGVfLG8uTk9ORSx2b2lkIDAscy5TVEFUSUMpO3N3aXRjaCh0aGlzLmNsb3VkVHlwZV8pe2Nhc2Ugcy5ISVZFX09SX0ZMT1dFUjp0PVtpLHJdO2JyZWFrO2Nhc2Ugcy5GTE9XRVJfT1JfTk9USElORzp0PVtpLG5dO2JyZWFrO2Nhc2Ugcy5ISVZFX09SX05PVEhJTkc6dD1bcixuXTticmVhaztjYXNlIHMuQU5ZOnQ9W2kscixuXX19ZWxzZSBpZih0aGlzLmlzVmFyaWFibGVSYW5nZSgpKWZvcih2YXIgdT10aGlzLm9yaWdpbmFsVmFsdWVfO3U8PXRoaXMucmFuZ2VfO3UrKyl0LnB1c2gobmV3IGUodGhpcy50aWxlVHlwZV8sby5GTE9XRVIsdSxzLk5PTkUsYS5QVVJQTEUpKTtlbHNlIHQucHVzaCh0aGlzKTtyZXR1cm4gdH0sZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdC5wcm90b3R5cGUuc2VyaWFsaXplLmNhbGwodGhpcykse2ZlYXR1cmVUeXBlOnRoaXMuZmVhdHVyZVR5cGVfLGNsb3VkVHlwZTp0aGlzLmNsb3VkVHlwZV8sZmxvd2VyQ29sb3I6dGhpcy5mbG93ZXJDb2xvcl99KX0sZS5kZXNlcmlhbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUodC50aWxlVHlwZSx0LmZlYXR1cmVUeXBlLHQudmFsdWUsdC5jbG91ZFR5cGUsdC5mbG93ZXJDb2xvcix0LnJhbmdlKX0sZS5wYXJzZUZyb21PbGRWYWx1ZXM9ZnVuY3Rpb24odCxpKXt0PXQudG9TdHJpbmcoKSxpPXBhcnNlSW50KGkpO3ZhciByPXZvaWQgMCx1PXZvaWQgMCxsPXZvaWQgMCxwPXZvaWQgMCxjPXZvaWQgMDtyZXR1cm4haXNOYU4oaSkmJnQubWF0Y2goL1sxfFJ8UHxGQ10vKSYmMCE9PWk/KHI9bi5PUEVOLHU9aT4wP28uRkxPV0VSOm8uSElWRSxsPU1hdGguYWJzKGkpLHA9XCJGQ1wiPT09dD9zLlNUQVRJQzpzLk5PTkUsYz1cIlJcIj09PXQ/YS5SRUQ6XCJQXCI9PT10P2EuUFVSUExFOmEuREVGQVVMVCk6cj1wYXJzZUludCh0KSxuZXcgZShyLHUsbCxwLGMpfSxlfShyKSx0LmV4cG9ydHMuRmVhdHVyZVR5cGU9byx0LmV4cG9ydHMuQ2xvdWRUeXBlPXMsdC5leHBvcnRzLkZsb3dlckNvbG9yPWF9LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBuKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9dmFyIG89aSgyKSxzPWkoMjgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHIodGhpcyxlKSxuKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLnNjaGVkdWxlRGlydENoYW5nZT1mdW5jdGlvbihlLGkpe3QucHJvdG90eXBlLnNjaGVkdWxlRGlydENoYW5nZS5jYWxsKHRoaXMsZSxpKSx0aGlzLmNvbGxlY3RTb3VuZHNDb3VudCYmKHRoaXMuY29sbGVjdFNvdW5kc0k9dGhpcy5jb2xsZWN0U291bmRzSXx8MCx0aGlzLnBsYXlBdWRpb18oXCJjb2xsZWN0XCIrdGhpcy5jb2xsZWN0U291bmRzSSksdGhpcy5jb2xsZWN0U291bmRzSSs9MSx0aGlzLmNvbGxlY3RTb3VuZHNJJT10aGlzLmNvbGxlY3RTb3VuZHNDb3VudCksdGhpcy5lbWl0KFwiY29sbGVjdGVkXCIsdGhpcy5nZXRUb3RhbENvbGxlY3RlZCgpKX0sZS5wcm90b3R5cGUuaXNDb2xsZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUudHJ5Q29sbGVjdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMubWF6ZV8ubWFwLmdldFZhbHVlKHQsZSk7cmV0dXJuIHZvaWQgMD09PWl8fGk8MT8odGhpcy5lbWl0KFwiY29sbGVjdGVkVG9vTWFueVwiKSwhMSk6KHRoaXMubWF6ZV8ubWFwLnNldFZhbHVlKHQsZSxpLTEpLCEwKX0sZS5wcm90b3R5cGUuZ2V0VG90YWxDb2xsZWN0ZWQ9ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiB0aGlzLm1hemVfLm1hcC5mb3JFYWNoQ2VsbCgoZnVuY3Rpb24oZSxpLHIpe2UuaXNEaXJ0KCkmJih0Kz1lLmdldE9yaWdpbmFsVmFsdWUoKS1lLmdldEN1cnJlbnRWYWx1ZSgpKX0pKSx0fSxlLnByb3RvdHlwZS5sb2FkQXVkaW89ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmNvbGxlY3RTb3VuZHMmJih0aGlzLmNvbGxlY3RTb3VuZHNDb3VudD10LmNvbGxlY3RTb3VuZHMubGVuZ3RoLHQuY29sbGVjdFNvdW5kcy5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2UubWF6ZV8ubG9hZEF1ZGlvKHQsXCJjb2xsZWN0XCIraSl9KSkpfSxlLnByb3RvdHlwZS5jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dGhpcy5kcmF3ZXI9bmV3IHModGhpcy5tYXplXy5tYXAsdGhpcy5za2luXy5nb2FsLHQpfSxlLnByb3RvdHlwZS5nZXRFbXB0eVRpbGU9ZnVuY3Rpb24oKXtyZXR1cm5cIm51bGwwXCJ9LGUucHJvdG90eXBlLmRyYXdUaWxlPWZ1bmN0aW9uKGUsaSxyLG4sbyl7dC5wcm90b3R5cGUuZHJhd1RpbGUuY2FsbCh0aGlzLGUsaSxyLG4sbyksdGhpcy5kcmF3Q29ybmVycyhlLHIsbixvKX0sZS5wcm90b3R5cGUuZHJhd0Nvcm5lcnM9ZnVuY3Rpb24odCxlLGkscil7dmFyIG49dGhpcyxvPXtORTpbMSwtMV0sTlc6Wy0xLC0xXSxTRTpbMSwxXSxTVzpbLTEsMV19LHM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGE9dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicGVnbWFuLWxvY2F0aW9uXCIpWzBdO3RoaXMuaXNXYWxsT3JPdXRPZkJvdW5kc18oaSxlKXx8T2JqZWN0LmtleXMobykuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgcj1vW3RdO3JldHVybiFuLmlzV2FsbE9yT3V0T2ZCb3VuZHNfKGkrclswXSxlKSYmIW4uaXNXYWxsT3JPdXRPZkJvdW5kc18oaSxlK3JbMV0pJiZuLmlzV2FsbE9yT3V0T2ZCb3VuZHNfKGkrclswXSxlK3JbMV0pfSkpLmZvckVhY2goKGZ1bmN0aW9uKHUpe3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLFwiY2xpcFBhdGhcIik7bC5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwidGlsZUNvcm5lclwiK3UrXCJDbGlwUGF0aFwiK3IpO3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLFwicmVjdFwiKTtwLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsMjUpLHAuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsMjUpO3ZhciBjPW9bdV07cC5zZXRBdHRyaWJ1dGUoXCJ4XCIsNTAqaSs1MCooY1swXSsxKS80KSxwLnNldEF0dHJpYnV0ZShcInlcIiw1MCplKzUwKihjWzFdKzEpLzQpLGwuYXBwZW5kQ2hpbGQocCksdC5hcHBlbmRDaGlsZChsKTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMocyxcImltYWdlXCIpO2guc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsbi5za2luXy5jb3JuZXJzKSxoLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLDUwKSxoLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsNTApLGguc2V0QXR0cmlidXRlKFwieFwiLDUwKmkpLGguc2V0QXR0cmlidXRlKFwieVwiLDUwKmUpLGguc2V0QXR0cmlidXRlKFwiaWRcIixcInRpbGVDb3JuZXJcIit1K3IpLGguc2V0QXR0cmlidXRlKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI1wiK2wuaWQrXCIpXCIpLHQuaW5zZXJ0QmVmb3JlKGgsYSl9KSl9LGV9KG8pfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSgyKSxuPWkoMjkpLG89aSgwKS5TcXVhcmVUeXBlLHM9aSgxKS5yYW5kb21WYWx1ZSxhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoaSxyKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpO3ZhciBuPWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9KHRoaXMsdC5jYWxsKHRoaXMsaSxyKSk7cmV0dXJuIG4uZ29hbF89ci5sZXZlbC5zZWFyY2hXb3JkLG4udmlzaXRlZF89XCJcIixuLm1hcF89ci5sZXZlbC5tYXAsbn1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0oZSx0KSxlLnByb3RvdHlwZS5nZXRWaXNpdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlzaXRlZF99LGUucHJvdG90eXBlLmlzV29yZFNlYXJjaD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dGhpcy5kcmF3ZXI9bmV3IG4odGhpcy5tYXplXy5tYXAsXCJcIix0KX0sZS5wcm90b3R5cGUuaXNPcGVuXz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMubWFwXztyZXR1cm4gdm9pZCAwIT09aVt0XSYmdm9pZCAwIT09aVt0XVtlXSYmaVt0XVtlXSE9PW8uV0FMTH0sZS5wcm90b3R5cGUub3Blbk5laWdoYm9yc189ZnVuY3Rpb24odCxlKXt2YXIgaT1bXTtyZXR1cm4gdGhpcy5pc09wZW5fKHQrMSxlKSYmaS5wdXNoKFt0KzEsZV0pLHRoaXMuaXNPcGVuXyh0LTEsZSkmJmkucHVzaChbdC0xLGVdKSx0aGlzLmlzT3Blbl8odCxlKzEpJiZpLnB1c2goW3QsZSsxXSksdGhpcy5pc09wZW5fKHQsZS0xKSYmaS5wdXNoKFt0LGUtMV0pLGl9LGUucHJvdG90eXBlLnJlc3RyaWN0ZWRWYWx1ZXNfPWZ1bmN0aW9uKHQsaSl7Zm9yKHZhciByPXRoaXMubWFwXyxuPXRoaXMub3Blbk5laWdoYm9yc18odCxpKSxvPVtdLHM9MDtzPG4ubGVuZ3RoO3MrKylmb3IodmFyIGE9dGhpcy5vcGVuTmVpZ2hib3JzXyhuW3NdWzBdLG5bc11bMV0pLHU9MDt1PGEubGVuZ3RoO3UrKyl7dmFyIGw9YVt1XVswXSxwPWFbdV1bMV0sYz1lLmxldHRlclZhbHVlKHJbbF1bcF0sITEpO28ucHVzaChjLCExKX1yZXR1cm4gb30sZS5wcm90b3R5cGUuZHJhd01hcFRpbGVzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgaT12b2lkIDAscj12b2lkIDAsbj0wO248dGhpcy5tYXBfLmxlbmd0aDtuKyspZm9yKHZhciBvPTA7bzx0aGlzLm1hcF9bbl0ubGVuZ3RoO28rKyl7dmFyIHM9dGhpcy5tYXBfW25dW29dO3M9PT1lLkVNUFRZX0NIQVI/KHI9dGhpcy5yZXN0cmljdGVkVmFsdWVzXyhuLG8pLGk9ZS5yYW5kb21MZXR0ZXIocikpOmk9ZS5sZXR0ZXJWYWx1ZShzLCEwKSx0aGlzLmRyYXdUaWxlKHQsaSxuLG8pfX0sZS5wcm90b3R5cGUucmVzZXRUaWxlcz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5tYXBfLmxlbmd0aDt0KyspZm9yKHZhciBlPTA7ZTx0aGlzLm1hcF9bdF0ubGVuZ3RoO2UrKyl0aGlzLmRyYXdlci51cGRhdGVUaWxlSGlnaGxpZ2h0KHQsZSwhMSk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjdXJyZW50V29yZENvbnRlbnRzXCIpLnRleHRDb250ZW50PVwiXCIsdGhpcy52aXNpdGVkXz1cIlwifSxlLnByb3RvdHlwZS5tYXJrVGlsZVZpc2l0ZWQ9ZnVuY3Rpb24odCxlLGkpe3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4uY2VsbElkKFwibGV0dGVyXCIsdCxlKSk7dGhpcy52aXNpdGVkXys9ci50ZXh0Q29udGVudCxpJiYodGhpcy5kcmF3ZXIudXBkYXRlVGlsZUhpZ2hsaWdodCh0LGUsITApLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3VycmVudFdvcmRDb250ZW50c1wiKS50ZXh0Q29udGVudD10aGlzLnZpc2l0ZWRfKX0sZX0ocik7YS5TVEFSVF9DSEFSPVwiLVwiLGEuRU1QVFlfQ0hBUj1cIl9cIixhLkFMTF9DSEFSUz1bXCJBXCIsXCJCXCIsXCJDXCIsXCJEXCIsXCJFXCIsXCJGXCIsXCJHXCIsXCJIXCIsXCJJXCIsXCJKXCIsXCJLXCIsXCJMXCIsXCJNXCIsXCJOXCIsXCJPXCIsXCJQXCIsXCJRXCIsXCJSXCIsXCJTXCIsXCJUXCIsXCJVXCIsXCJWXCIsXCJXXCIsXCJYXCIsXCJZXCIsXCJaXCJdLGEubGV0dGVyVmFsdWU9ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuIGEuU1RBUlRfQ0hBUjtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyZXR1cm4gMj09PXQubGVuZ3RoJiZcIl9cIj09PXRbMF0/dFsxXTp0WzBdO3Rocm93IG5ldyBFcnJvcihcInVuZXhwZWN0ZWQgdmFsdWUgZm9yIGxldHRlclZhbHVlXCIpfSxhLnJhbmRvbUxldHRlcj1mdW5jdGlvbih0KXt2YXIgZT1hLkFMTF9DSEFSUztyZXR1cm4gdCYmKHQ9bmV3IFNldCh0KSxlPWUuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hdC5oYXMoZSl9KSkpLHMoZSl9LHQuZXhwb3J0cz1hfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfXZhciBvPWkoMTApLHM9aSgxNSksYT1pKDMxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiByKHRoaXMsZSksbih0aGlzLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0oZSx0KSxlLnByb3RvdHlwZS5nZXRDZWxsQ2xhc3M9ZnVuY3Rpb24oKXtyZXR1cm4gc30sZS5wcm90b3R5cGUubG9hZEF1ZGlvPWZ1bmN0aW9uKHQpe3QuaGFydmVzdFNvdW5kJiZ0aGlzLm1hemVfLmxvYWRBdWRpbyh0LmhhcnZlc3RTb3VuZCxcImhhcnZlc3RcIil9LGUucHJvdG90eXBlLmNyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt0aGlzLmRyYXdlcj1uZXcgYSh0aGlzLm1hemVfLm1hcCx0aGlzLnNraW5fLHQsdGhpcyl9LGUucHJvdG90eXBlLmhhc0Nvcm49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNDcm9wKHMuRmVhdHVyZVR5cGUuQ09STil9LGUucHJvdG90eXBlLmhhc1B1bXBraW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNDcm9wKHMuRmVhdHVyZVR5cGUuUFVNUEtJTil9LGUucHJvdG90eXBlLmhhc0xldHR1Y2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNDcm9wKHMuRmVhdHVyZVR5cGUuTEVUVFVDRSl9LGUucHJvdG90eXBlLmhhc0Nyb3A9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXplXy5nZXRQZWdtYW5YKCksaT10aGlzLm1hemVfLmdldFBlZ21hblkoKSxyPXRoaXMuZ2V0Q2VsbChpLGUpO3JldHVybiByLmZlYXR1cmVUeXBlKCk9PT10JiZyLmdldEN1cnJlbnRWYWx1ZSgpPjB9LGUucHJvdG90eXBlLmF0Q29ybj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF0Q3JvcChzLkZlYXR1cmVUeXBlLkNPUk4pfSxlLnByb3RvdHlwZS5hdFB1bXBraW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdENyb3Aocy5GZWF0dXJlVHlwZS5QVU1QS0lOKX0sZS5wcm90b3R5cGUuYXRMZXR0dWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXRDcm9wKHMuRmVhdHVyZVR5cGUuTEVUVFVDRSl9LGUucHJvdG90eXBlLmF0Q3JvcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm1hemVfLmdldFBlZ21hblgoKSxpPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSgpO3JldHVybiB0aGlzLmdldENlbGwoaSxlKS5mZWF0dXJlVHlwZSgpPT09dH0sZS5wcm90b3R5cGUuZ290Q3JvcEF0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5nZXRDZWxsKHQsZSk7aS5zZXRDdXJyZW50VmFsdWUoaS5nZXRDdXJyZW50VmFsdWUoKS0xKX0sZS5wcm90b3R5cGUudHJ5R2V0Q29ybj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyeUdldENyb3Aocy5GZWF0dXJlVHlwZS5DT1JOKX0sZS5wcm90b3R5cGUudHJ5R2V0UHVtcGtpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyeUdldENyb3Aocy5GZWF0dXJlVHlwZS5QVU1QS0lOKX0sZS5wcm90b3R5cGUudHJ5R2V0TGV0dHVjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyeUdldENyb3Aocy5GZWF0dXJlVHlwZS5MRVRUVUNFKX0sZS5wcm90b3R5cGUudHJ5R2V0Q3JvcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm1hemVfLmdldFBlZ21hblgoKSxpPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSgpLHI9dGhpcy5nZXRDZWxsKGksZSk7cmV0dXJuIHIuZmVhdHVyZVR5cGUoKSE9PXQ/KHRoaXMuZW1pdChcIndyb25nQ3JvcFwiKSwhMSk6MD09PXIuZ2V0Q3VycmVudFZhbHVlKCk/KHRoaXMuZW1pdChcImVtcHR5Q3JvcFwiKSwhMSk6KHRoaXMuZ290Q3JvcEF0KGksZSksITApfSxlLnByb3RvdHlwZS5hbmltYXRlR2V0Q29ybj1mdW5jdGlvbigpe3RoaXMuYW5pbWF0ZUdldENyb3Aocy5GZWF0dXJlVHlwZS5DT1JOKX0sZS5wcm90b3R5cGUuYW5pbWF0ZUdldFB1bXBraW49ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGVHZXRDcm9wKHMuRmVhdHVyZVR5cGUuUFVNUEtJTil9LGUucHJvdG90eXBlLmFuaW1hdGVHZXRMZXR0dWNlPWZ1bmN0aW9uKCl7dGhpcy5hbmltYXRlR2V0Q3JvcChzLkZlYXR1cmVUeXBlLkxFVFRVQ0UpfSxlLnByb3RvdHlwZS5hbmltYXRlR2V0Q3JvcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm1hemVfLmdldFBlZ21hblgoKSxpPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSgpLHI9dGhpcy5nZXRDZWxsKGksZSk7aWYoci5mZWF0dXJlVHlwZSgpIT09dCl0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGRuJ3QgYmUgYWJsZSB0byBoYXJ2ZXN0IHRoZSB3cm9uZyBraW5kIG9mIGNyb3BcIik7aWYoci5nZXRDdXJyZW50VmFsdWUoKTw9MCl0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGRuJ3QgYmUgYWJsZSB0byBlbmQgdXAgd2l0aCBhIGhhcnZlc3QgYW5pbWF0aW9uIGlmIHRoZXJlIHdhcyBub3RoaW5nIGxlZnQgdG8gaGFydmVzdFwiKTt0aGlzLnBsYXlBdWRpb18oXCJoYXJ2ZXN0XCIpLHRoaXMuZ290Q3JvcEF0KGksZSksdGhpcy5kcmF3ZXIudXBkYXRlSXRlbUltYWdlKGksZSwhMCl9LGV9KG8pfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSg0KSxuPWkoMCkuU3F1YXJlVHlwZSxvPXtOT05FOjAsQ09STjoxLFBVTVBLSU46MixMRVRUVUNFOjN9O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkscixzLGEsdSl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx2b2lkIDAhPT1hJiZpPT09bi5PUEVOfHwoYT1bby5OT05FXSksQXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKSxhLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PW8uTk9ORX0pKSYmKHI9dm9pZCAwLHM9dm9pZCAwKTt2YXIgbD1mdW5jdGlvbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfSh0aGlzLHQuY2FsbCh0aGlzLGkscixzKSk7cmV0dXJuIGEubGVuZ3RoPjEmJih1PSEwKSxsLnBvc3NpYmxlRmVhdHVyZXNfPWEsbC5zdGFydHNIaWRkZW5fPSEhdSxsfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLnN0YXJ0c0hpZGRlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0c0hpZGRlbl99LGUucHJvdG90eXBlLmlzVmFyaWFibGVGZWF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zc2libGVGZWF0dXJlc18ubGVuZ3RoPjF9LGUucHJvdG90eXBlLmlzVmFyaWFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhcmlhYmxlRmVhdHVyZSgpfHx0LnByb3RvdHlwZS5pc1ZhcmlhYmxlLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLmdldFBvc3NpYmxlR3JpZEFzc2V0cz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1bXTtpZih0aGlzLmlzVmFyaWFibGVGZWF0dXJlKCkpaT10aGlzLnBvc3NpYmxlRmVhdHVyZXNfLm1hcCgoZnVuY3Rpb24oaSl7cmV0dXJuIGUuZGVzZXJpYWxpemUoT2JqZWN0LmFzc2lnbih7fSx0LnNlcmlhbGl6ZSgpLHtwb3NzaWJsZUZlYXR1cmVzOltpXX0pKX0pKTtlbHNlIGlmKHRoaXMuaXNWYXJpYWJsZVJhbmdlKCkpZm9yKHZhciByPXRoaXMub3JpZ2luYWxWYWx1ZV87cjw9dGhpcy5yYW5nZV87cisrKWkucHVzaChlLmRlc2VyaWFsaXplKE9iamVjdC5hc3NpZ24oe30sdGhpcy5zZXJpYWxpemUoKSx7dmFsdWU6cixyYW5nZTpyfSkpKTtlbHNlIGkucHVzaCh0aGlzKTtyZXR1cm4gaX0sZS5wcm90b3R5cGUuZmVhdHVyZVR5cGU9ZnVuY3Rpb24oKXtpZighdGhpcy5pc1ZhcmlhYmxlRmVhdHVyZSgpKXJldHVybiB0aGlzLnBvc3NpYmxlRmVhdHVyZXNfWzBdfSxlLnByb3RvdHlwZS5mZWF0dXJlTmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFyaWFibGVGZWF0dXJlKCk/XCJ1bmtub3duXCI6W1wibm9uZVwiLFwiY29yblwiLFwicHVtcGtpblwiLFwibGV0dHVjZVwiXVt0aGlzLnBvc3NpYmxlRmVhdHVyZXNfWzBdXX0sZS5wcm90b3R5cGUuaXNDb3JuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zc2libGVGZWF0dXJlc18uaW5jbHVkZXMoby5DT1JOKX0sZS5wcm90b3R5cGUuaXNQdW1wa2luPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zc2libGVGZWF0dXJlc18uaW5jbHVkZXMoby5QVU1QS0lOKX0sZS5wcm90b3R5cGUuaXNMZXR0dWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zc2libGVGZWF0dXJlc18uaW5jbHVkZXMoby5MRVRUVUNFKX0sZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdC5wcm90b3R5cGUuc2VyaWFsaXplLmNhbGwodGhpcykse3Bvc3NpYmxlRmVhdHVyZXM6dGhpcy5wb3NzaWJsZUZlYXR1cmVzXyxzdGFydHNIaWRkZW46dGhpcy5zdGFydHNIaWRkZW5ffSl9LGUuZGVzZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlKHQudGlsZVR5cGUsdC52YWx1ZSx0LnJhbmdlLHQucG9zc2libGVGZWF0dXJlcyx0LnN0YXJ0c0hpZGRlbil9LGV9KHIpLHQuZXhwb3J0cy5GZWF0dXJlVHlwZT1vfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfXZhciBvPWkoMikscz1pKDE3KSxhPWkoMzIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHIodGhpcyxlKSxuKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5tYXplXy5tYXAuZm9yRWFjaENlbGwoKGZ1bmN0aW9uKHQpe3QucmVzZXRDdXJyZW50RmVhdHVyZSgpfSkpfSxlLnByb3RvdHlwZS5nZXRDZWxsQ2xhc3M9ZnVuY3Rpb24oKXtyZXR1cm4gc30sZS5wcm90b3R5cGUuY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKHQpe3RoaXMuZHJhd2VyPW5ldyBhKHRoaXMubWF6ZV8ubWFwLHRoaXMuc2tpbl8sdCx0aGlzKX0sZS5wcm90b3R5cGUuYXRTcHJvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdFR5cGUocy5GZWF0dXJlVHlwZS5TUFJPVVQpfSxlLnByb3RvdHlwZS5hdFNvaWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdFR5cGUocy5GZWF0dXJlVHlwZS5TT0lMKX0sZS5wcm90b3R5cGUuYXRUeXBlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWCgpLGk9dGhpcy5tYXplXy5nZXRQZWdtYW5ZKCk7cmV0dXJuIHRoaXMuZ2V0Q2VsbChpLGUpLmZlYXR1cmVUeXBlKCk9PT10fSxlLnByb3RvdHlwZS50cnlQbGFudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWF6ZV8uZ2V0UGVnbWFuWCgpLGU9dGhpcy5tYXplXy5nZXRQZWdtYW5ZKCksaT10aGlzLmdldENlbGwoZSx0KTtyZXR1cm4gaS5mZWF0dXJlVHlwZSgpIT09cy5GZWF0dXJlVHlwZS5TT0lMPyh0aGlzLmVtaXQoXCJwbGFudEluTm9uU29pbFwiKSwhMSk6KGkuc2V0RmVhdHVyZVR5cGUocy5GZWF0dXJlVHlwZS5TUFJPVVQpLCEwKX0sZS5wcm90b3R5cGUuYW5pbWF0ZVBsYW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXplXy5nZXRQZWdtYW5YKCksZT10aGlzLm1hemVfLmdldFBlZ21hblkoKSxpPXRoaXMuZ2V0Q2VsbChlLHQpO2lmKGkuZmVhdHVyZVR5cGUoKSE9PXMuRmVhdHVyZVR5cGUuU09JTCl0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGRuJ3QgYmUgYWJsZSB0byBwbGFudCBpbiBhbnl0aGluZyBidXQgc29pbFwiKTtpLnNldEZlYXR1cmVUeXBlKHMuRmVhdHVyZVR5cGUuU1BST1VUKSx0aGlzLmRyYXdlci51cGRhdGVJdGVtSW1hZ2UoZSx0LCEwKX0sZX0obyl9LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1pKDQpLG49e05PTkU6MCxTT0lMOjEsU1BST1VUOjJ9O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkscil7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx2b2lkIDA9PT1yJiYocj1uLk5PTkUpO3ZhciBvPWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9KHRoaXMsdC5jYWxsKHRoaXMsaSkpO3JldHVybiBvLm9yaWdpbmFsRmVhdHVyZVR5cGVfPXIsby5jdXJyZW50RmVhdHVyZVR5cGVfPXZvaWQgMCxvLnJlc2V0Q3VycmVudEZlYXR1cmUoKSxvfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLnNldEZlYXR1cmVUeXBlPWZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudEZlYXR1cmVUeXBlXz10fSxlLnByb3RvdHlwZS5mZWF0dXJlVHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRGZWF0dXJlVHlwZV99LGUucHJvdG90eXBlLm9yaWdpbmFsRmVhdHVyZVR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcmlnaW5hbEZlYXR1cmVUeXBlX30sZS5wcm90b3R5cGUucmVzZXRDdXJyZW50RmVhdHVyZT1mdW5jdGlvbigpe3RoaXMuY3VycmVudEZlYXR1cmVUeXBlXz10aGlzLm9yaWdpbmFsRmVhdHVyZVR5cGVffSxlLnByb3RvdHlwZS5mZWF0dXJlTmFtZT1mdW5jdGlvbigpe3JldHVybltcIm5vbmVcIixcInNvaWxcIixcInNwcm91dFwiXVt0aGlzLmN1cnJlbnRGZWF0dXJlVHlwZV9dfSxlLnByb3RvdHlwZS5pc1NvaWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50RmVhdHVyZVR5cGVfPT09bi5TT0lMfSxlLnByb3RvdHlwZS5pc1Nwcm91dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRGZWF0dXJlVHlwZV89PT1uLlNQUk9VVH0sZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdC5wcm90b3R5cGUuc2VyaWFsaXplLmNhbGwodGhpcykse2ZlYXR1cmVUeXBlOnRoaXMub3JpZ2luYWxGZWF0dXJlVHlwZV99KX0sZS5kZXNlcmlhbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUodC50aWxlVHlwZSx0LmZlYXR1cmVUeXBlKX0sZX0ociksdC5leHBvcnRzLkZlYXR1cmVUeXBlPW59LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1mdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQ7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgaT1bXSxyPSEwLG49ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgcyxhPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0ocz1hLm5leHQoKSkuZG9uZSkmJihpLnB1c2gocy52YWx1ZSksIWV8fGkubGVuZ3RoIT09ZSk7cj0hMCk7fWNhdGNoKHQpe249ITAsbz10fWZpbmFsbHl7dHJ5eyFyJiZhLnJldHVybiYmYS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgb319cmV0dXJuIGl9KHQsZSk7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9LG49dShpKDIpKSxvPXUoaSgxOSkpLHM9dShpKDMzKSksYT1pKDApO2Z1bmN0aW9uIHUodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWZ1bmN0aW9uIGwodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHAodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX10LmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShpKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307bCh0aGlzLGUpO3ZhciBuPXAodGhpcyx0LmNhbGwodGhpcyxpLHIpKTtyZXR1cm4gbi5zcHJpdGVNYXA9bi5za2luXy5zcHJpdGVNYXAsbi5zaGVldFJvd3M9bi5za2luXy5zaGVldFJvd3Msbi5zcXVhcmVTaXplPW4uc2tpbl8uc3F1YXJlU2l6ZSxuLmFzc2V0TGlzdD1bXSxufXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmlzTmVpZ2hib3Job29kPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmFsbG93TXVsdGlwbGVQZWdtZW49ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0Q2VsbENsYXNzPWZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH0sZS5wcm90b3R5cGUuZHJhd01hcFRpbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT0wO3RoaXMubWF6ZV8ubWFwLmZvckVhY2hDZWxsKChmdW5jdGlvbihuLG8scyl7ZS5kcmF3VGlsZSh0LFswLDBdLG8scyxpKTt2YXIgYT1lLmRyYXdlci5nZXRCYWNrZ3JvdW5kVGlsZUluZm8obyxzKTtpZihhKXtlLmFzc2V0TGlzdC5wdXNoKFwidGlsZUVsZW1lbnRcIitpK1wiLWFzc2V0XCIpO3ZhciB1PWUuc2tpbl8uYXNzZXRVcmwoYS5zaGVldCksbD1lLmdldERpbWVuc2lvbnNGb3JTaGVldChhLnNoZWV0KSxwPXIobCwyKSxjPXBbMF0saD1wWzFdO2UuZHJhd2VyLmRyYXdUaWxlSGVscGVyKHQsW2EuY29sdW1uLGEucm93XSxvLHMsaStcIi1hc3NldFwiLHUsYyxoLGUuc3F1YXJlU2l6ZSl9ZS5kcmF3ZXIudXBkYXRlSXRlbUltYWdlKG8scywhMSksaSsrfSkpfSxlLnByb3RvdHlwZS5jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dGhpcy5kcmF3ZXI9bmV3IHMuZGVmYXVsdCh0aGlzLm1hemVfLm1hcCx0aGlzLnNraW5fLHQsdGhpcy5zcXVhcmVTaXplLHRoaXMpfSxlLnByb3RvdHlwZS5hZGRQYWludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWCh0KSxyPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSh0KTt0aGlzLmdldENlbGwocixpKS5zZXRDb2xvcihlKSx0aGlzLmRyYXdlci51cGRhdGVJdGVtSW1hZ2UocixpLCEwKSx0aGlzLmRyYXdlci5kcmF3QXNzZXRzKCl9LGUucHJvdG90eXBlLnJlbW92ZVBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWCh0KSxpPXRoaXMubWF6ZV8uZ2V0UGVnbWFuWSh0KTt0aGlzLmRyYXdlci5yZXNldFRpbGUoaSxlKSx0aGlzLmRyYXdlci51cGRhdGVJdGVtSW1hZ2UoaSxlLCEwKSx0aGlzLmRyYXdlci5kcmF3QXNzZXRzKCl9LGUucHJvdG90eXBlLnR1cm5MZWZ0PWZ1bmN0aW9uKHQpe3ZhciBlPW51bGw7c3dpdGNoKHRoaXMubWF6ZV8uZ2V0UGVnbWFuRCh0KSl7Y2FzZSBhLkRpcmVjdGlvbi5OT1JUSDplPWEuRGlyZWN0aW9uLldFU1Q7YnJlYWs7Y2FzZSBhLkRpcmVjdGlvbi5FQVNUOmU9YS5EaXJlY3Rpb24uTk9SVEg7YnJlYWs7Y2FzZSBhLkRpcmVjdGlvbi5TT1VUSDplPWEuRGlyZWN0aW9uLkVBU1Q7YnJlYWs7Y2FzZSBhLkRpcmVjdGlvbi5XRVNUOmU9YS5EaXJlY3Rpb24uU09VVEh9dGhpcy5tYXplXy5hbmltYXRlZENhcmRpbmFsVHVybihlLHQpfSxlLnByb3RvdHlwZS50YWtlUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXplXy5nZXRQZWdtYW5YKHQpLGk9dGhpcy5tYXplXy5nZXRQZWdtYW5ZKHQpLHI9dGhpcy5nZXRDZWxsKGksZSk7ci5zZXRDdXJyZW50VmFsdWUoci5nZXRDdXJyZW50VmFsdWUoKS0xKSx0aGlzLmRyYXdlci51cGRhdGVJdGVtSW1hZ2UoaSxlLCEwKX0sZS5wcm90b3R5cGUuc2V0QnVja2V0VmlzaWJpbGl0eT1mdW5jdGlvbih0KXt0aGlzLmRyYXdlci5nZXRCdWNrZXRWaXNpYmlsaXR5KCkhPXQmJih0aGlzLmRyYXdlci5zZXRCdWNrZXRWaXNpYmlsaXR5KHQpLHRoaXMucmVkcmF3QnVja2V0VGlsZXMoKSl9LGUucHJvdG90eXBlLnJlZHJhd0J1Y2tldFRpbGVzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLm1hemVfLm1hcC5mb3JFYWNoQ2VsbCgoZnVuY3Rpb24oZSxpLHIpe2UuZ2V0Q3VycmVudFZhbHVlKCk+MCYmdC5kcmF3ZXIudXBkYXRlSXRlbUltYWdlKGksciwhMCl9KSl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5kcmF3ZXIucmVzZXRUaWxlcygpfSxlLnByb3RvdHlwZS5nZXRTcHJpdGVNYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zcHJpdGVNYXB9LGUucHJvdG90eXBlLmdldERpbWVuc2lvbnNGb3JTaGVldD1mdW5jdGlvbih0KXtyZXR1cm5bMTAqdGhpcy5zcXVhcmVTaXplLHRoaXMuc2hlZXRSb3dzW3RdKnRoaXMuc3F1YXJlU2l6ZV19LGUucHJvdG90eXBlLmdldEFzc2V0TGlzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzc2V0TGlzdH0sZX0obi5kZWZhdWx0KX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBpPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxyKSYmKHRbcl09aVtyXSl9cmV0dXJuIHR9O3ZhciBuPWkoNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoaSxyLG4sbyl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKTt2YXIgcz1mdW5jdGlvbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfSh0aGlzLHQuY2FsbCh0aGlzLGkscikpO3JldHVybiBzLmFzc2V0SWQ9bixzLmNvbG9yPW8sc31yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0oZSx0KSxlLnByb3RvdHlwZS5nZXRDb2xvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbG9yfSxlLnByb3RvdHlwZS5zZXRDb2xvcj1mdW5jdGlvbih0KXt0aGlzLmNvbG9yPXR9LGUucHJvdG90eXBlLmdldEFzc2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hc3NldElkfSxlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gcih7fSx0LnByb3RvdHlwZS5zZXJpYWxpemUuY2FsbCh0aGlzKSx7YXNzZXRJZDp0aGlzLmFzc2V0SWQsY29sb3I6dGhpcy5jb2xvcn0pfSxlLmRlc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSh0LnRpbGVUeXBlLHQudmFsdWUsdC5hc3NldElkLHQuY29sb3IpfSxlfShuKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXQuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxvPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XTtpZihyKHRoaXMsdCksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoXCJQZWdtYW4gaWQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkXCIpO3RoaXMueD1pLHRoaXMueT1uLHRoaXMuZGlyZWN0aW9uPW8sdGhpcy5pZD1lLHRoaXMuaXNWaXNpYmxlPXN9cmV0dXJuIHQucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54fSx0LnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueX0sdC5wcm90b3R5cGUuZ2V0RGlyZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlyZWN0aW9ufSx0LnByb3RvdHlwZS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkfSx0LnByb3RvdHlwZS5nZXRJc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1Zpc2libGV9LHQucHJvdG90eXBlLnNldFg9ZnVuY3Rpb24odCl7dGhpcy54PXR9LHQucHJvdG90eXBlLnNldFk9ZnVuY3Rpb24odCl7dGhpcy55PXR9LHQucHJvdG90eXBlLnNldERpcmVjdGlvbj1mdW5jdGlvbih0KXt0aGlzLmRpcmVjdGlvbj10fSx0LnByb3RvdHlwZS5zZXRJc1Zpc2libGU9ZnVuY3Rpb24odCl7dGhpcy5pc1Zpc2libGU9dH0sdH0oKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSx0aGlzLmdyaWRfPWUsdGhpcy5ST1dTPXRoaXMuZ3JpZF8ubGVuZ3RoLHRoaXMuQ09MUz10aGlzLmdyaWRfWzBdLmxlbmd0aCx0aGlzLnN0YXRpY0dyaWRzPXRoaXMuY29uc3RydWN0b3IuZ2V0QWxsU3RhdGljR3JpZHModGhpcy5ncmlkXyksdGhpcy5jdXJyZW50U3RhdGljR3JpZD10aGlzLnN0YXRpY0dyaWRzWzBdfXJldHVybiB0LmNsb25lR3JpZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xvbmUoKX0pKX0pKX0sdC5nZXRBbGxTdGF0aWNHcmlkcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9W3RdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQscil7dC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe2lmKHQuaXNWYXJpYWJsZSgpKXt2YXIgbz10LmdldFBvc3NpYmxlR3JpZEFzc2V0cygpLHM9W107by5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciBvPWUuY2xvbmVHcmlkKGkpO29bcl1bbl09dCxzLnB1c2gobyl9KSl9KSksaT1zfX0pKX0pKSxpfSx0LmRlc2VyaWFsaXplPWZ1bmN0aW9uKGUsaSl7cmV0dXJuIG5ldyB0KGUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoaS5kZXNlcmlhbGl6ZSl9KSkpfSx0LnBhcnNlRnJvbU9sZFZhbHVlcz1mdW5jdGlvbihlLGkscil7cmV0dXJuIG5ldyB0KGUubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgbz1pJiZpW2VdW25dO3JldHVybiByLnBhcnNlRnJvbU9sZFZhbHVlcyh0LG8pfSkpfSkpKX0sdC5wcm90b3R5cGUucmVzZXREaXJ0PWZ1bmN0aW9uKCl7dGhpcy5mb3JFYWNoQ2VsbCgoZnVuY3Rpb24odCl7dC5yZXNldEN1cnJlbnRWYWx1ZSgpfSkpfSx0LnByb3RvdHlwZS5mb3JFYWNoQ2VsbD1mdW5jdGlvbih0KXt0aGlzLmN1cnJlbnRTdGF0aWNHcmlkLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe3QoZSxpLHIpfSkpfSkpfSx0LnByb3RvdHlwZS5nZXRBbGxDZWxscz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRTdGF0aWNHcmlkLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSl9KSxbXSl9LHQucHJvdG90eXBlLmdldENlbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50U3RhdGljR3JpZFt0XSYmdGhpcy5jdXJyZW50U3RhdGljR3JpZFt0XVtlXX0sdC5wcm90b3R5cGUuaXNEaXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5nZXRDZWxsKHQsZSk7cmV0dXJuIGkmJmkuaXNEaXJ0KCl9LHQucHJvdG90eXBlLmdldFRpbGU9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENlbGwodCxlKTtyZXR1cm4gaSYmaS5nZXRUaWxlKCl9LHQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5nZXRDZWxsKHQsZSk7cmV0dXJuIGkmJmkuZ2V0Q3VycmVudFZhbHVlKCl9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLmN1cnJlbnRTdGF0aWNHcmlkW3RdJiZ0aGlzLmN1cnJlbnRTdGF0aWNHcmlkW3RdW2VdJiZ0aGlzLmN1cnJlbnRTdGF0aWNHcmlkW3RdW2VdLnNldEN1cnJlbnRWYWx1ZShpKX0sdC5wcm90b3R5cGUuZ2V0VmFyaWFibGVDZWxsPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5ncmlkX1t0XSYmdGhpcy5ncmlkX1t0XVtlXSlyZXR1cm4gdGhpcy5ncmlkX1t0XVtlXX0sdC5wcm90b3R5cGUudXNlR3JpZFdpdGhJZD1mdW5jdGlvbih0KXt0aGlzLmN1cnJlbnRTdGF0aWNHcmlkPXRoaXMuc3RhdGljR3JpZHNbdF0sdGhpcy5yZXNldERpcnQoKX0sdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNsb25lR3JpZCh0aGlzLmdyaWRfKX0sdC5wcm90b3R5cGUuaGFzTXVsdGlwbGVQb3NzaWJsZUdyaWRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGljR3JpZHMubGVuZ3RoPjF9LHR9KCl9LGZ1bmN0aW9uKHQsZSxpKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1pKDIzKSxuPWkoMjEpLG89aSgzNSkscz1pKDYpLGE9aSgzNiksdT1pKDApLGw9aSgxKTt0LmV4cG9ydHM9e01hemVDb250cm9sbGVyOnIsTWF6ZU1hcDpuLGNlbGxzOm8sZHJhd01hcDpzLHN1YnR5cGVzOmEsdGlsZXM6dSx1dGlsczpsfX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPWZ1bmN0aW9uKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXJldHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPVtdLHI9ITAsbj0hMSxvPXZvaWQgMDt0cnl7Zm9yKHZhciBzLGE9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShzPWEubmV4dCgpKS5kb25lKSYmKGkucHVzaChzLnZhbHVlKSwhZXx8aS5sZW5ndGghPT1lKTtyPSEwKTt9Y2F0Y2godCl7bj0hMCxvPXR9ZmluYWxseXt0cnl7IXImJmEucmV0dXJuJiZhLnJldHVybigpfWZpbmFsbHl7aWYobil0aHJvdyBvfX1yZXR1cm4gaX0odCxlKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX07ZnVuY3Rpb24gbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9dmFyIG89aSg3KSxzPWkoMjQpLGE9aSgzNCksdT1pKDIwKSxsPWkoMjEpLHA9aSg2KSxjPWkoMSkuZ2V0U3VidHlwZUZvclNraW4saD1pKDApO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLHIpe3ZhciBvPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fTtuKHRoaXMsdCksdGhpcy5zdGVwU3BlZWQ9MTAwLHRoaXMubGV2ZWw9ZSx0aGlzLnNraW49aSx0aGlzLnN0YXJ0RGlyZWN0aW9uPW51bGwsdGhpcy5zdWJ0eXBlPW51bGwsdGhpcy5tYXA9bnVsbCx0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyPW51bGwsdGhpcy5wZWdtYW5Db250cm9sbGVyPW5ldyBhLHRoaXMuTUFaRV9IRUlHSFQ9bnVsbCx0aGlzLk1BWkVfV0lEVEg9bnVsbCx0aGlzLlBBVEhfV0lEVEg9bnVsbCx0aGlzLlBFR01BTl9IRUlHSFQ9bnVsbCx0aGlzLlBFR01BTl9XSURUSD1udWxsLHRoaXMuUEVHTUFOX1hfT0ZGU0VUPW51bGwsdGhpcy5QRUdNQU5fWV9PRkZTRVQ9bnVsbCx0aGlzLlNRVUFSRV9TSVpFPW51bGwsdGhpcy5TVkdfV0lEVEg9bnVsbCx0aGlzLlNWR19IRUlHSFQ9bnVsbCxvLm1ldGhvZHMmJnRoaXMucmViaW5kTWV0aG9kcyhvLm1ldGhvZHMpO3ZhciBzPWMoci5za2luSWQpO3RoaXMuc3VidHlwZT1uZXcgcyh0aGlzLHIpLHRoaXMubG9hZExldmVsXygpfXJldHVybiB0LnByb3RvdHlwZS5wbGF5QXVkaW89ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnBsYXlBdWRpb09uRmFpbHVyZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUubG9hZEF1ZGlvPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5nZXRUZXN0UmVzdWx0cz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmViaW5kTWV0aG9kcz1mdW5jdGlvbih0KXt0aGlzLnBsYXlBdWRpbz10LnBsYXlBdWRpb3x8dGhpcy5wbGF5QXVkaW8sdGhpcy5wbGF5QXVkaW9PbkZhaWx1cmU9dC5wbGF5QXVkaW9PbkZhaWx1cmV8fHRoaXMucGxheUF1ZGlvT25GYWlsdXJlLHRoaXMubG9hZEF1ZGlvPXQubG9hZEF1ZGlvfHx0aGlzLmxvYWRBdWRpbyx0aGlzLmdldFRlc3RSZXN1bHRzPXQuZ2V0VGVzdFJlc3VsdHN8fHRoaXMuZ2V0VGVzdFJlc3VsdHN9LHQucHJvdG90eXBlLmluaXRXaXRoU3ZnPWZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIix0aGlzLlNWR19XSURUSCksdC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIix0aGlzLlNWR19IRUlHSFQpLHQuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLFwiMCAwIFwiK3RoaXMuTUFaRV9XSURUSCtcIiBcIit0aGlzLk1BWkVfSEVJR0hUKSxwKHQsdGhpcy5za2luLHRoaXMuc3VidHlwZSx0aGlzLm1hcCx0aGlzLlNRVUFSRV9TSVpFKSx0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyPW5ldyBzKHRoaXMsdCl9LHQucHJvdG90eXBlLmxvYWRMZXZlbF89ZnVuY3Rpb24oKXt0aGlzLmxldmVsLnNlcmlhbGl6ZWRNYXplP3RoaXMubWFwPWwuZGVzZXJpYWxpemUodGhpcy5sZXZlbC5zZXJpYWxpemVkTWF6ZSx0aGlzLnN1YnR5cGUuZ2V0Q2VsbENsYXNzKCkpOnRoaXMubWFwPWwucGFyc2VGcm9tT2xkVmFsdWVzKHRoaXMubGV2ZWwubWFwLHRoaXMubGV2ZWwuaW5pdGlhbERpcnQsdGhpcy5zdWJ0eXBlLmdldENlbGxDbGFzcygpKSx0aGlzLnN0YXJ0RGlyZWN0aW9uPXRoaXMubGV2ZWwuc3RhcnREaXJlY3Rpb24sdGhpcy5sZXZlbC5mYXN0R2V0TmVjdGFyQW5pbWF0aW9uJiYodGhpcy5za2luLmFjdGlvblNwZWVkU2NhbGUubmVjdGFyPS41KSx0aGlzLlNRVUFSRV9TSVpFPXRoaXMuc2tpbi5zcXVhcmVTaXplfHw1MCx0aGlzLlBFR01BTl9IRUlHSFQ9dGhpcy5za2luLnBlZ21hbkhlaWdodCx0aGlzLlBFR01BTl9XSURUSD10aGlzLnNraW4ucGVnbWFuV2lkdGgsdGhpcy5QRUdNQU5fWF9PRkZTRVQ9dGhpcy5za2luLnBlZ21hblhPZmZzZXR8fDAsdGhpcy5QRUdNQU5fWV9PRkZTRVQ9dGhpcy5za2luLnBlZ21hbllPZmZzZXQsdGhpcy5NQVpFX1dJRFRIPXRoaXMuU1FVQVJFX1NJWkUqdGhpcy5tYXAuQ09MUyx0aGlzLk1BWkVfSEVJR0hUPXRoaXMuU1FVQVJFX1NJWkUqdGhpcy5tYXAuUk9XUyx0aGlzLlNWR19XSURUSD10aGlzLnNraW4uc3ZnV2lkdGh8fHRoaXMuTUFaRV9XSURUSCx0aGlzLlNWR19IRUlHSFQ9dGhpcy5za2luLnN2Z0hlaWdodHx8dGhpcy5NQVpFX0hFSUdIVCx0aGlzLlBBVEhfV0lEVEg9dGhpcy5TUVVBUkVfU0laRS8zfSx0LnByb3RvdHlwZS5yZXNldERpcnRJbWFnZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm1hcC5mb3JFYWNoQ2VsbCgoZnVuY3Rpb24oaSxyLG4pe2Uuc3VidHlwZS5kcmF3ZXIudXBkYXRlSXRlbUltYWdlKHIsbix0KX0pKX0sdC5wcm90b3R5cGUuZ3JpZE51bWJlclRvUG9zaXRpb25fPWZ1bmN0aW9uKHQpe3JldHVybih0Ky41KSp0aGlzLlNRVUFSRV9TSVpFfSx0LnByb3RvdHlwZS5kcmF3SGludFBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3QuZ2V0RWxlbWVudEJ5SWQoXCJoaW50UGF0aFwiKS5zZXRBdHRyaWJ1dGUoXCJkXCIsXCJNXCIrZS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXIodCwyKSxuPWVbMF0sbz1lWzFdO3JldHVybiBpLmdyaWROdW1iZXJUb1Bvc2l0aW9uXyhuKStcIixcIitpLmdyaWROdW1iZXJUb1Bvc2l0aW9uXyhvKX0pKS5qb2luKFwiIFwiKSl9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2lmKHRoaXMuc3VidHlwZS5yZXNldCgpLG8uY2xlYXJUaW1lb3V0cygpLHRoaXMuc3VidHlwZS5zdGFydCYmKHRoaXMuc2V0UGVnbWFuWCh0aGlzLnN1YnR5cGUuc3RhcnQueCksdGhpcy5zZXRQZWdtYW5ZKHRoaXMuc3VidHlwZS5zdGFydC55KSx0aGlzLnNldFBlZ21hbkQodGhpcy5zdGFydERpcmVjdGlvbikpLHRoaXMuc3VidHlwZS5hbGxvd011bHRpcGxlUGVnbWVuKCkpe3ZhciByPXRoaXMucGVnbWFuQ29udHJvbGxlci5nZXRBbGxQZWdtYW5JZHMoKTtyLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucGVnbWFuQ29udHJvbGxlci5pc0RlZmF1bHRQZWdtYW4odCkmJmk/ZS5hbmltYXRpb25zQ29udHJvbGxlci5zaG93UGVnbWFuKHQpOmUuYW5pbWF0aW9uc0NvbnRyb2xsZXIuaGlkZVBlZ21hbih0KX0pKX10aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLnJlc2V0KHQpLHRoaXMubWFwLnJlc2V0RGlydCgpLHRoaXMucmVzZXREaXJ0SW1hZ2VzKCExKTt2YXIgbixzLGE9MDtmb3Iocz0wO3M8dGhpcy5tYXAuUk9XUztzKyspZm9yKG49MDtuPHRoaXMubWFwLkNPTFM7bisrKXt2YXIgdT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm9ic3RhY2xlXCIrYSk7dSYmdS5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmhyZWZcIix0aGlzLnNraW4ub2JzdGFjbGVJZGxlKSwrK2F9dGhpcy5zdWJ0eXBlLnJlc2V0VGlsZXM/dGhpcy5zdWJ0eXBlLnJlc2V0VGlsZXMoKTp0aGlzLnJlc2V0VGlsZXNfKCl9LHQucHJvdG90eXBlLnJlc2V0VGlsZXNfPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT0wO2U8dGhpcy5tYXAuUk9XUztlKyspZm9yKHZhciBpPTA7aTx0aGlzLm1hcC5DT0xTO2krKyl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aWxlQ2xpcFBhdGhcIit0KS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJ2aXNpYmxlXCIpO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGlsZUVsZW1lbnRcIit0KTtyLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLHRoaXMuc2tpbi50aWxlcyksci5zZXRBdHRyaWJ1dGUoXCJvcGFjaXR5XCIsMSksdCsrfX0sdC5wcm90b3R5cGUuYW5pbWF0ZWRGaW5pc2g9ZnVuY3Rpb24odCl7dGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5zY2hlZHVsZURhbmNlKCEwLHQpfSx0LnByb3RvdHlwZS5hbmltYXRlZE1vdmU9ZnVuY3Rpb24odCxlLGkpe3ZhciByPWguZGlyZWN0aW9uVG9EeER5KHQpLG49dGhpcy5nZXRQZWdtYW5YKGkpK3IuZHgsbz10aGlzLmdldFBlZ21hblkoaSkrci5keTt0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLnNjaGVkdWxlTW92ZShuLG8sZSxpKSx0aGlzLnBsYXlBdWRpbyhcIndhbGtcIiksdGhpcy5zZXRQZWdtYW5YKG4saSksdGhpcy5zZXRQZWdtYW5ZKG8saSl9LHQucHJvdG90eXBlLmFuaW1hdGVkVHVybj1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0UGVnbWFuRChlKSt0O3RoaXMuYW5pbWF0aW9uc0NvbnRyb2xsZXIuc2NoZWR1bGVUdXJuKGksZSksdGhpcy5zZXRQZWdtYW5EKGguY29uc3RyYWluRGlyZWN0aW9uNChpKSxlKX0sdC5wcm90b3R5cGUuYW5pbWF0ZWRDYXJkaW5hbFR1cm49ZnVuY3Rpb24odCxlKXt0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLnNpbXBsZVR1cm4odCxlKSx0aGlzLnNldFBlZ21hbkQodCxlKX0sdC5wcm90b3R5cGUuYW5pbWF0ZWRGYWlsPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxyPWguZGlyZWN0aW9uVG9EeER5KHRoaXMuZ2V0UGVnbWFuRChlKSksbj1yLmR4LHM9ci5keTt0fHwobj0tbixzPS1zKTt2YXIgYT10aGlzLmdldFBlZ21hblgoZSkrbix1PXRoaXMuZ2V0UGVnbWFuWShlKStzLGw9aC5kaXJlY3Rpb25Ub0ZyYW1lKHRoaXMuZ2V0UGVnbWFuRChlKSk7dGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5kaXNwbGF5UGVnbWFuKHRoaXMuZ2V0UGVnbWFuWChlKStuLzQsdGhpcy5nZXRQZWdtYW5ZKGUpK3MvNCxsLGUpO3ZhciBwPXRoaXMubWFwLmdldFRpbGUodSxhKTtwPT09aC5TcXVhcmVUeXBlLldBTEx8fHZvaWQgMD09PXB8fHRoaXMuc3VidHlwZS5pc1NjcmF0KCkmJnA9PT1oLlNxdWFyZVR5cGUuT0JTVEFDTEU/KHRoaXMucGxheUF1ZGlvKFwid2FsbFwiKSx2b2lkIDAhPT1wJiZ0aGlzLnBsYXlBdWRpbyhcIndhbGxcIit0aGlzLnN1YnR5cGUud2FsbE1hcFt1XVthXSksdGhpcy5zdWJ0eXBlLmlzU2NyYXQoKSYmcD09PWguU3F1YXJlVHlwZS5PQlNUQUNMRSYmdGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5jcmFja1N1cnJvdW5kaW5nSWNlKGEsdSksdGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5zY2hlZHVsZVdhbGxIaXQoYSx1LG4scyxsLGUpLG8uc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnBsYXlBdWRpb09uRmFpbHVyZSgpfSksMip0aGlzLnN0ZXBTcGVlZCkpOnA9PT1oLlNxdWFyZVR5cGUuT0JTVEFDTEUmJih0aGlzLnBsYXlBdWRpbyhcIm9ic3RhY2xlXCIpLHRoaXMuYW5pbWF0aW9uc0NvbnRyb2xsZXIuc2NoZWR1bGVPYnN0YWNsZUhpdChhLHUsbixzLGwsZSksby5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kucGxheUF1ZGlvT25GYWlsdXJlKCl9KSx0aGlzLnN0ZXBTcGVlZCkpfSx0LnByb3RvdHlwZS5hbmltYXRlZExvb2s9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldFBlZ21hblgoZSkscj10aGlzLmdldFBlZ21hblkoZSk7c3dpdGNoKHQpe2Nhc2UgaC5EaXJlY3Rpb24uTk9SVEg6aSs9LjU7YnJlYWs7Y2FzZSBoLkRpcmVjdGlvbi5FQVNUOmkrPTEscis9LjU7YnJlYWs7Y2FzZSBoLkRpcmVjdGlvbi5TT1VUSDppKz0uNSxyKz0xO2JyZWFrO2Nhc2UgaC5EaXJlY3Rpb24uV0VTVDpyKz0uNX1pKj10aGlzLlNRVUFSRV9TSVpFLHIqPXRoaXMuU1FVQVJFX1NJWkU7dmFyIG49OTAqdC00NTt0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLnNjaGVkdWxlTG9vayhpLHIsbil9LHQucHJvdG90eXBlLnNjaGVkdWxlRGlydENoYW5nZV89ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRQZWdtYW5YKCksaT10aGlzLmdldFBlZ21hblkoKSxyPXRoaXMubWFwLmdldFZhbHVlKGksZSl8fDA7dGhpcy5tYXAuc2V0VmFsdWUoaSxlLHIrdC5hbW91bnQpLHRoaXMuc3VidHlwZS5zY2hlZHVsZURpcnRDaGFuZ2UoaSxlKSx0aGlzLnBsYXlBdWRpbyh0LnNvdW5kKX0sdC5wcm90b3R5cGUuc2NoZWR1bGVGaWxsPWZ1bmN0aW9uKCl7dGhpcy5zY2hlZHVsZURpcnRDaGFuZ2VfKHthbW91bnQ6MSxzb3VuZDpcImZpbGxcIn0pfSx0LnByb3RvdHlwZS5zY2hlZHVsZURpZz1mdW5jdGlvbigpe3RoaXMuc2NoZWR1bGVEaXJ0Q2hhbmdlXyh7YW1vdW50Oi0xLHNvdW5kOlwiZGlnXCJ9KX0sdC5wcm90b3R5cGUuZ2V0UGVnbWFuWD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBlZ21hbkNvbnRyb2xsZXIuZ2V0UGVnbWFuKHQpO3JldHVybiBlJiZlLmdldFgoKX0sdC5wcm90b3R5cGUuZ2V0UGVnbWFuWT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBlZ21hbkNvbnRyb2xsZXIuZ2V0UGVnbWFuKHQpO3JldHVybiBlJiZlLmdldFkoKX0sdC5wcm90b3R5cGUuZ2V0UGVnbWFuRD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBlZ21hbkNvbnRyb2xsZXIuZ2V0UGVnbWFuKHQpO3JldHVybiBlJiZlLmdldERpcmVjdGlvbigpfSx0LnByb3RvdHlwZS5zZXRQZWdtYW5YPWZ1bmN0aW9uKHQsZSl7dGhpcy5wZWdtYW5Db250cm9sbGVyLmdldE9yQ3JlYXRlUGVnbWFuKGUpLnNldFgodCl9LHQucHJvdG90eXBlLnNldFBlZ21hblk9ZnVuY3Rpb24odCxlKXt0aGlzLnBlZ21hbkNvbnRyb2xsZXIuZ2V0T3JDcmVhdGVQZWdtYW4oZSkuc2V0WSh0KX0sdC5wcm90b3R5cGUuc2V0UGVnbWFuRD1mdW5jdGlvbih0LGUpe3RoaXMucGVnbWFuQ29udHJvbGxlci5nZXRPckNyZWF0ZVBlZ21hbihlKS5zZXREaXJlY3Rpb24odCl9LHQucHJvdG90eXBlLmFkZFBlZ21hbj1mdW5jdGlvbih0LGUsaSxyKXtpZih0aGlzLnBlZ21hbkNvbnRyb2xsZXIuZ2V0UGVnbWFuKHQpKXt0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLmhpZGVQZWdtYW4odCk7dmFyIG49dGhpcy5wZWdtYW5Db250cm9sbGVyLmdldFBlZ21hbih0KTtuLnNldFgoZSksbi5zZXRZKGkpLG4uc2V0RGlyZWN0aW9uKHIpO3ZhciBvPWguZGlyZWN0aW9uVG9GcmFtZShyKTt0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLmRpc3BsYXlQZWdtYW4oZSxpLG8sdCksdGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5zaG93UGVnbWFuKHQpfWVsc2UgdGhpcy5jcmVhdGVBbmREaXNwbGF5UGVnbWFuKHQsZSxpLHIpfSx0LnByb3RvdHlwZS5jcmVhdGVBbmREaXNwbGF5UGVnbWFuPWZ1bmN0aW9uKHQsZSxpLHIpe3ZhciBuPW5ldyB1KHQsZSxpLHIpO3RoaXMucGVnbWFuQ29udHJvbGxlci5hZGRQZWdtYW4obiksdGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5hZGROZXdQZWdtYW4odCxlLGkscil9LHQucHJvdG90eXBlLmhpZGVEZWZhdWx0UGVnbWFuPWZ1bmN0aW9uKCl7dGhpcy5wZWdtYW5Db250cm9sbGVyLmdldFBlZ21hbigpJiZ0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLmhpZGVQZWdtYW4oKX0sdC5wcm90b3R5cGUuc2hvd1BlZ21hbj1mdW5jdGlvbih0KXt0aGlzLmFuaW1hdGlvbnNDb250cm9sbGVyLnNob3dQZWdtYW4odCl9LHQucHJvdG90eXBlLmhpZGVQZWdtYW49ZnVuY3Rpb24odCl7dGhpcy5hbmltYXRpb25zQ29udHJvbGxlci5oaWRlUGVnbWFuKHQpfSx0fSgpfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSg1KSxuPXIuU1ZHX05TLG89ci5wZWdtYW5FbGVtZW50cyxzPWkoNiksYT1zLmRpc3BsYXlQZWdtYW4sdT1zLmdldFBlZ21hbllGb3JSb3csbD1zLmFkZE5ld1BlZ21hbixwPWkoNyksYz1pKDEpLGg9aSgwKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyx0KSx0aGlzLm1hemU9ZSx0aGlzLnN2Zz1pLHRoaXMuY3JlYXRlQW5pbWF0aW9uc18oKX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQW5pbWF0aW9uc189ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLm1hemUuc2tpbi5pZGxlUGVnbWFuQW5pbWF0aW9uJiYodGhpcy5jcmVhdGVQZWdtYW5BbmltYXRpb25fKHt0eXBlOm8uSURMRSxwZWdtYW5JbWFnZTp0aGlzLm1hemUuc2tpbi5pZGxlUGVnbWFuQW5pbWF0aW9uLHJvdzp0aGlzLm1hemUuc3VidHlwZS5zdGFydC55LGNvbDp0aGlzLm1hemUuc3VidHlwZS5zdGFydC54LGRpcmVjdGlvbjp0aGlzLm1hemUuc3RhcnREaXJlY3Rpb24sbnVtQ29sUGVnbWFuOnRoaXMubWF6ZS5za2luLmlkbGVQZWdtYW5Db2wsbnVtUm93UGVnbWFuOnRoaXMubWF6ZS5za2luLmlkbGVQZWdtYW5Sb3cscGVnbWFuSWQ6dH0pLHRoaXMubWF6ZS5za2luLmlkbGVQZWdtYW5Db2w+MXx8dGhpcy5tYXplLnNraW4uaWRsZVBlZ21hblJvdz4xKSl7dmFyIGk9dGhpcy5tYXplLnNraW4uaWRsZVBlZ21hblJvdyxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMuZ2V0UGVnbWFuRWxlbWVudElkKG8uSURMRSx0KSkscz0wO3NldEludGVydmFsKChmdW5jdGlvbigpe1widmlzaWJsZVwiPT09ci5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIpJiYoZS51cGRhdGVQZWdtYW5BbmltYXRpb25fKHt0eXBlOm8uSURMRSxyb3c6ZS5tYXplLnN1YnR5cGUuc3RhcnQueSxjb2w6ZS5tYXplLnN1YnR5cGUuc3RhcnQueCxkaXJlY3Rpb246ZS5tYXplLnN0YXJ0RGlyZWN0aW9uLGFuaW1hdGlvblJvdzpzLHBlZ21hbklkOnR9KSxzPShzKzEpJWkpfSksNjAwKX1pZih0aGlzLm1hemUuc2tpbi5jZWxlYnJhdGVBbmltYXRpb24mJnRoaXMuY3JlYXRlUGVnbWFuQW5pbWF0aW9uXyh7dHlwZTpvLkNFTEVCUkFURSxwZWdtYW5JbWFnZTp0aGlzLm1hemUuc2tpbi5jZWxlYnJhdGVBbmltYXRpb24scm93OnRoaXMubWF6ZS5zdWJ0eXBlLnN0YXJ0LnksY29sOnRoaXMubWF6ZS5zdWJ0eXBlLnN0YXJ0LngsZGlyZWN0aW9uOmguRGlyZWN0aW9uLk5PUlRILG51bUNvbFBlZ21hbjp0aGlzLm1hemUuc2tpbi5jZWxlYnJhdGVQZWdtYW5Db2wsbnVtUm93UGVnbWFuOnRoaXMubWF6ZS5za2luLmNlbGVicmF0ZVBlZ21hblJvdyxwZWdtYW5JZDp0fSksdGhpcy5tYXplLnNraW4ud2FsbFBlZ21hbkFuaW1hdGlvbiYmdGhpcy5jcmVhdGVQZWdtYW5BbmltYXRpb25fKHt0eXBlOm8uV0FMTCxwZWdtYW5JbWFnZTp0aGlzLm1hemUuc2tpbi53YWxsUGVnbWFuQW5pbWF0aW9uLHBlZ21hbklkOnR9KSx0aGlzLm1hemUuc2tpbi5oaXR0aW5nV2FsbEFuaW1hdGlvbiYmdGhpcy5tYXplLnNraW4uaGl0dGluZ1dhbGxBbmltYXRpb25GcmFtZU51bWJlciYmKHRoaXMuY3JlYXRlUGVnbWFuQW5pbWF0aW9uXyh7dHlwZTpvLldBTEwscGVnbWFuSW1hZ2U6dGhpcy5tYXplLnNraW4uaGl0dGluZ1dhbGxBbmltYXRpb24sbnVtQ29sUGVnbWFuOnRoaXMubWF6ZS5za2luLmhpdHRpbmdXYWxsUGVnbWFuQ29sLG51bVJvd1BlZ21hbjp0aGlzLm1hemUuc2tpbi5oaXR0aW5nV2FsbFBlZ21hblJvdyxwZWdtYW5JZDp0fSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYy5nZXRQZWdtYW5FbGVtZW50SWQoby5XQUxMLHQpKS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIikpLHRoaXMubWF6ZS5za2luLm1vdmVQZWdtYW5BbmltYXRpb24mJnRoaXMuY3JlYXRlUGVnbWFuQW5pbWF0aW9uXyh7dHlwZTpvLk1PVkUscGVnbWFuSW1hZ2U6dGhpcy5tYXplLnNraW4ubW92ZVBlZ21hbkFuaW1hdGlvbixudW1Db2xQZWdtYW46NCxudW1Sb3dQZWdtYW46dGhpcy5tYXplLnNraW4ubW92ZVBlZ21hbkFuaW1hdGlvbkZyYW1lTnVtYmVyfHw5LHBlZ21hbklkOnR9KSx0aGlzLm1hemUuc2tpbi5oaXR0aW5nV2FsbEFuaW1hdGlvbil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sXCJpbWFnZVwiKTthLnNldEF0dHJpYnV0ZShcImlkXCIsYy5nZXRQZWdtYW5FbGVtZW50SWQoby5XQUxMX0FOSU1BVElPTix0KSksYS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIix0aGlzLm1hemUuU1FVQVJFX1NJWkUpLGEuc2V0QXR0cmlidXRlKFwid2lkdGhcIix0aGlzLm1hemUuU1FVQVJFX1NJWkUpLGEuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwiaGlkZGVuXCIpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKGEpfX0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0KXt0aGlzLm1hemUuc2tpbi5kYW5jZU9uTG9hZCYmdGhpcy5zY2hlZHVsZURhbmNlKCExLDc1MCkscC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UubWF6ZS5zdGVwU3BlZWQ9MTAwLGUuc2NoZWR1bGVUdXJuKGUubWF6ZS5zdGFydERpcmVjdGlvbil9KSw5MDApfWVsc2V7dGhpcy5tYXplLnN1YnR5cGUuYWxsb3dNdWx0aXBsZVBlZ21lbigpfHx0aGlzLmRpc3BsYXlQZWdtYW4odGhpcy5tYXplLmdldFBlZ21hblgoKSx0aGlzLm1hemUuZ2V0UGVnbWFuWSgpLGguZGlyZWN0aW9uVG9GcmFtZSh0aGlzLm1hemUuZ2V0UGVnbWFuRCgpKSk7dmFyIGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJmaW5pc2hcIik7aSYmKGkuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsdGhpcy5tYXplLnNraW4uZ29hbElkbGUpLGkuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKSl9dmFyIHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsb29rXCIpO3Iuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixyLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQocik7Zm9yKHZhciBuPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJwYXRoXCIpLHM9MDtzPG4ubGVuZ3RoO3MrKyl7bltzXS5zZXRBdHRyaWJ1dGUoXCJzdHJva2VcIix0aGlzLm1hemUuc2tpbi5sb29rKX12YXIgYT10aGlzLmdldFBlZ21hbkljb24oKTsodGhpcy5tYXplLnN1YnR5cGUuYWxsb3dNdWx0aXBsZVBlZ21lbigpfHxhLnNldEF0dHJpYnV0ZShcIm9wYWNpdHlcIiwxKSx0aGlzLm1hemUuc2tpbi5pZGxlUGVnbWFuQW5pbWF0aW9uKT8oYS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYy5nZXRQZWdtYW5FbGVtZW50SWQoby5JRExFKSkuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKSk6dGhpcy5tYXplLnN1YnR5cGUuYWxsb3dNdWx0aXBsZVBlZ21lbigpfHxhLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcInZpc2libGVcIik7dGhpcy5tYXplLnNraW4ud2FsbFBlZ21hbkFuaW1hdGlvbiYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYy5nZXRQZWdtYW5FbGVtZW50SWQoby5XQUxMKSkuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwiaGlkZGVuXCIpO3RoaXMubWF6ZS5za2luLm1vdmVQZWdtYW5BbmltYXRpb24mJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMuZ2V0UGVnbWFuRWxlbWVudElkKG8uTU9WRSkpLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcImhpZGRlblwiKTt0aGlzLm1hemUuc2tpbi5jZWxlYnJhdGVBbmltYXRpb24mJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMuZ2V0UGVnbWFuRWxlbWVudElkKG8uQ0VMRUJSQVRFKSkuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwiaGlkZGVuXCIpfSx0LnByb3RvdHlwZS5jcmVhdGVQZWdtYW5BbmltYXRpb25fPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwiY2xpcFBhdGhcIiksaT1jLmdldFBlZ21hbkVsZW1lbnRJZCh0LnR5cGUrXCJDbGlwXCIsdC5wZWdtYW5JZCk7ZS5zZXRBdHRyaWJ1dGUoXCJpZFwiLGkpO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLFwicmVjdFwiKTtyLnNldEF0dHJpYnV0ZShcImlkXCIsYy5nZXRQZWdtYW5FbGVtZW50SWQodC50eXBlK1wiQ2xpcFJlY3RcIix0LnBlZ21hbklkKSksdm9pZCAwIT09dC5jb2wmJnIuc2V0QXR0cmlidXRlKFwieFwiLHQuY29sKnRoaXMubWF6ZS5TUVVBUkVfU0laRSsxK3RoaXMubWF6ZS5QRUdNQU5fWF9PRkZTRVQpLHZvaWQgMCE9PXQucm93JiZyLnNldEF0dHJpYnV0ZShcInlcIix1KHRoaXMubWF6ZS5za2luLHQucm93LHRoaXMubWF6ZS5TUVVBUkVfU0laRSkpLHIuc2V0QXR0cmlidXRlKFwid2lkdGhcIix0aGlzLm1hemUuUEVHTUFOX1dJRFRIKSxyLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLHRoaXMubWF6ZS5QRUdNQU5fSEVJR0hUKSxlLmFwcGVuZENoaWxkKHIpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKGUpO3ZhciBvPXQucGVnbWFuSW1hZ2Uscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobixcImltYWdlXCIpO2lmKHMuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsbykscy5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIix0aGlzLm1hemUuUEVHTUFOX0hFSUdIVCoodC5udW1Sb3dQZWdtYW58fDEpKSxzLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsdGhpcy5tYXplLlBFR01BTl9XSURUSCoodC5udW1Db2xQZWdtYW58fDQpKSxzLnNldEF0dHJpYnV0ZShcImNsaXAtcGF0aFwiLFwidXJsKCNcIitpK1wiKVwiKSxzLnNldEF0dHJpYnV0ZShcImlkXCIsYy5nZXRQZWdtYW5FbGVtZW50SWQodC50eXBlLHQucGVnbWFuSWQpKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZChzKSx2b2lkIDAhPT10LmNvbCYmdm9pZCAwIT09dC5kaXJlY3Rpb24pe3ZhciBhPXRoaXMubWF6ZS5TUVVBUkVfU0laRSp0LmNvbC10LmRpcmVjdGlvbip0aGlzLm1hemUuUEVHTUFOX1dJRFRIKzErdGhpcy5tYXplLlBFR01BTl9YX09GRlNFVDtzLnNldEF0dHJpYnV0ZShcInhcIixhKX12b2lkIDAhPT10LnJvdyYmcy5zZXRBdHRyaWJ1dGUoXCJ5XCIsdSh0aGlzLm1hemUuc2tpbix0LnJvdyx0aGlzLm1hemUuU1FVQVJFX1NJWkUpKX0sdC5wcm90b3R5cGUuZ2V0UGVnbWFuRnJhbWVPZmZzZXRZXz1mdW5jdGlvbih0KXtyZXR1cm4odD10fHwwKSp0aGlzLm1hemUuUEVHTUFOX0hFSUdIVH0sdC5wcm90b3R5cGUudXBkYXRlUGVnbWFuQW5pbWF0aW9uXz1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjLmdldFBlZ21hbkVsZW1lbnRJZCh0LnR5cGUrXCJDbGlwUmVjdFwiLHQucGVnbWFuSWQpKTtpZihlKXtlLnNldEF0dHJpYnV0ZShcInhcIix0LmNvbCp0aGlzLm1hemUuU1FVQVJFX1NJWkUrMSt0aGlzLm1hemUuUEVHTUFOX1hfT0ZGU0VUKSxlLnNldEF0dHJpYnV0ZShcInlcIix1KHRoaXMubWF6ZS5za2luLHQucm93LHRoaXMubWF6ZS5TUVVBUkVfU0laRSkpO3ZhciBpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMuZ2V0UGVnbWFuRWxlbWVudElkKHQudHlwZSx0LnBlZ21hbklkKSk7aWYoaSl7dmFyIHI9dGhpcy5tYXplLlNRVUFSRV9TSVpFKnQuY29sLXQuZGlyZWN0aW9uKnRoaXMubWF6ZS5QRUdNQU5fV0lEVEgrMSt0aGlzLm1hemUuUEVHTUFOX1hfT0ZGU0VUO2kuc2V0QXR0cmlidXRlKFwieFwiLHIpO3ZhciBuPXUodGhpcy5tYXplLnNraW4sdC5yb3csdGhpcy5tYXplLlNRVUFSRV9TSVpFKS10aGlzLmdldFBlZ21hbkZyYW1lT2Zmc2V0WV8odC5hbmltYXRpb25Sb3cpO2kuc2V0QXR0cmlidXRlKFwieVwiLG4pLGkuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKX19fSx0LnByb3RvdHlwZS5zY2hlZHVsZVNoZWV0ZWRNb3ZlbWVudF89ZnVuY3Rpb24odCxlLGkscixuLG8scyxhKXt2YXIgdT10aGlzLGw9dGhpcy5nZXRQZWdtYW5JY29uKGEpO2MucmFuZ2UoMCxpLTEpLmZvckVhY2goKGZ1bmN0aW9uKGMpe3Auc2V0VGltZW91dCgoZnVuY3Rpb24oKXtzJiZsLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcImhpZGRlblwiKSx1LnVwZGF0ZVBlZ21hbkFuaW1hdGlvbl8oe3R5cGU6bixjb2w6dC54K2UueCpjL2kscm93OnQueStlLnkqYy9pLGRpcmVjdGlvbjpvLGFuaW1hdGlvblJvdzpjLHBlZ21hbklkOmF9KX0pLHIqYyl9KSl9LHQucHJvdG90eXBlLnNjaGVkdWxlTW92ZT1mdW5jdGlvbih0LGUsaSxyKXt2YXIgbixzLGE9dGhpcyx1PXRoaXMubWF6ZS5nZXRQZWdtYW5YKHIpLGw9dGhpcy5tYXplLmdldFBlZ21hblkociksZj10aGlzLm1hemUuZ2V0UGVnbWFuRChyKSxtPXQtdSxkPWUtbDtpZih0aGlzLm1hemUuc2tpbi5tb3ZlUGVnbWFuQW5pbWF0aW9uKXtuPXRoaXMubWF6ZS5za2luLm1vdmVQZWdtYW5BbmltYXRpb25GcmFtZU51bWJlcjt2YXIgeT10aGlzLmdldFBlZ21hbkljb24ociksZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjLmdldFBlZ21hbkVsZW1lbnRJZChvLk1PVkUscikpO3M9aS9uLHRoaXMuc2NoZWR1bGVTaGVldGVkTW92ZW1lbnRfKHt4OnUseTpsfSx7eDptLHk6ZH0sbixzLG8uTU9WRSxmLCEwLHIpLHAuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtnLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcImhpZGRlblwiKSx5LnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcInZpc2libGVcIiksYS5kaXNwbGF5UGVnbWFuKHQsZSxoLmRpcmVjdGlvblRvRnJhbWUoZiksciksYS5tYXplLnN1YnR5cGUuaXNXb3JkU2VhcmNoKCkmJmEubWF6ZS5zdWJ0eXBlLm1hcmtUaWxlVmlzaXRlZChlLHQsITApfSkscypuKX1lbHNlIHM9aS8obj00KSxjLnJhbmdlKDEsbikuZm9yRWFjaCgoZnVuY3Rpb24odCl7cC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2EuZGlzcGxheVBlZ21hbih1K20qdC9uLGwrZCp0L24saC5kaXJlY3Rpb25Ub0ZyYW1lKGYpLHIpfSkscyp0KX0pKTtpZih0aGlzLm1hemUuc2tpbi5hcHByb2FjaGluZ0dvYWxBbmltYXRpb24pe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZmluaXNoXCIpO3RoaXMubWF6ZS5zdWJ0eXBlLmZpbmlzaCYmTWF0aC5hYnModC10aGlzLm1hemUuc3VidHlwZS5maW5pc2gueCk8PTEmJk1hdGguYWJzKGUtdGhpcy5tYXplLnN1YnR5cGUuZmluaXNoLnkpPD0xP2Iuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsdGhpcy5tYXplLnNraW4uYXBwcm9hY2hpbmdHb2FsQW5pbWF0aW9uKTpiLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLHRoaXMubWF6ZS5za2luLmdvYWxJZGxlKX19LHQucHJvdG90eXBlLnNjaGVkdWxlVHVybj1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscj10aGlzLm1hemUuZ2V0UGVnbWFuRChlKSxuPXQtcjtjLnJhbmdlKDEsNCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuZGlzcGxheVBlZ21hbihpLm1hemUuZ2V0UGVnbWFuWChlKSxpLm1hemUuZ2V0UGVnbWFuWShlKSxoLmRpcmVjdGlvblRvRnJhbWUocituKnQvNCksZSl9KSxpLm1hemUuc3RlcFNwZWVkKih0LTEpKX0pKX0sdC5wcm90b3R5cGUuc2ltcGxlVHVybj1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7Yy5yYW5nZSgxLDIpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3Auc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLmRpc3BsYXlQZWdtYW4oaS5tYXplLmdldFBlZ21hblgoZSksaS5tYXplLmdldFBlZ21hblkoZSksaC5kaXJlY3Rpb25Ub0ZyYW1lKHQpLGUpfSksaS5tYXplLnN0ZXBTcGVlZCooci0xKSl9KSl9LHQucHJvdG90eXBlLmNyYWNrU3Vycm91bmRpbmdJY2U9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMudXBkYXRlU3Vycm91bmRpbmdUaWxlc18oZSx0LChmdW5jdGlvbih0LGUpe2UuZ2V0VGlsZSgpPT09aC5TcXVhcmVUeXBlLk9QRU4/dC5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmhyZWZcIixpLm1hemUuc2tpbi5sYXJnZXJPYnN0YWNsZUFuaW1hdGlvblRpbGVzKTplLmdldFRpbGUoKT09PWguU3F1YXJlVHlwZS5PQlNUQUNMRSYmdC5zZXRBdHRyaWJ1dGUoXCJvcGFjaXR5XCIsMCl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZVN1cnJvdW5kaW5nVGlsZXNfPWZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIHI9W1t0LTEsZS0xXSxbdC0xLGVdLFt0LTEsZSsxXSxbdCxlLTFdLFt0LGVdLFt0LGUrMV0sW3QrMSxlLTFdLFt0KzEsZV0sW3QrMSxlKzFdXSxuPTA7bjxyLmxlbmd0aDsrK24pe3ZhciBvPXJbbl1bMV0scz1yW25dWzBdLGE9byt0aGlzLm1hemUubWFwLkNPTFMqcyx1PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGlsZUVsZW1lbnRcIithKTt1JiZpKHUsdGhpcy5tYXplLm1hcC5nZXRDZWxsKHMsbykpfX0sdC5wcm90b3R5cGUuc2NoZWR1bGVXYWxsSGl0PWZ1bmN0aW9uKHQsZSxpLHIsbixzKXt2YXIgYT10aGlzLHU9dGhpcy5tYXplLmdldFBlZ21hblgocyksbD10aGlzLm1hemUuZ2V0UGVnbWFuWShzKTtpZih0aGlzLm1hemUuc2tpbi5oaXR0aW5nV2FsbEFuaW1hdGlvbil7dmFyIGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYy5nZXRQZWdtYW5FbGVtZW50SWQoby5XQUxMX0FOSU1BVElPTixzKSksbT10aGlzLm1hemUuc2tpbi5oaXR0aW5nV2FsbEFuaW1hdGlvbkZyYW1lTnVtYmVyfHwwO2lmKG0+MSl7cj49MCYmKHIrPTEpO3RoaXMuc2NoZWR1bGVTaGVldGVkTW92ZW1lbnRfKHt4OnUseTpsfSx7eDppLHk6cn0sbSwxMDAsby5XQUxMLGguRGlyZWN0aW9uLk5PUlRILCEwLHMpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYy5nZXRQZWdtYW5FbGVtZW50SWQoby5XQUxMLHMpKS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIil9KSwxMDAqbSl9ZWxzZSBwLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Zi5zZXRBdHRyaWJ1dGUoXCJ4XCIsYS5tYXplLlNRVUFSRV9TSVpFKih1Ky41Ky41KmkpLWYuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikvMiksZi5zZXRBdHRyaWJ1dGUoXCJ5XCIsYS5tYXplLlNRVUFSRV9TSVpFKihsKzErLjUqciktZi5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIikpLGYuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKSxmLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLGEubWF6ZS5za2luLmhpdHRpbmdXYWxsQW5pbWF0aW9uKX0pLHRoaXMubWF6ZS5zdGVwU3BlZWQvMil9cC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2EuZGlzcGxheVBlZ21hbih1LGwsbixzKX0pLHRoaXMubWF6ZS5zdGVwU3BlZWQpLHAuc2V0VGltZW91dCgoZnVuY3Rpb24oKXthLmRpc3BsYXlQZWdtYW4odStpLzQsbCtyLzQsbixzKX0pLDIqdGhpcy5tYXplLnN0ZXBTcGVlZCkscC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2EuZGlzcGxheVBlZ21hbih1LGwsbixzKX0pLDMqdGhpcy5tYXplLnN0ZXBTcGVlZCksdGhpcy5tYXplLnNraW4ud2FsbFBlZ21hbkFuaW1hdGlvbiYmcC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2EuZ2V0UGVnbWFuSWNvbihzKS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIiksYS51cGRhdGVQZWdtYW5BbmltYXRpb25fKHt0eXBlOm8uV0FMTCxyb3c6bCxjb2w6dSxkaXJlY3Rpb246YS5tYXplLmdldFBlZ21hbkQocyl9KX0pLDQqdGhpcy5tYXplLnN0ZXBTcGVlZCl9LHQucHJvdG90eXBlLnNjaGVkdWxlT2JzdGFjbGVIaXQ9ZnVuY3Rpb24odCxlLGkscixuLG8pe3ZhciBzPXRoaXMsYT10K3RoaXMubWF6ZS5tYXAuQ09MUyplO2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib2JzdGFjbGVcIithKS5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmhyZWZcIix0aGlzLm1hemUuc2tpbi5vYnN0YWNsZUFuaW1hdGlvbikscC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3MuZGlzcGxheVBlZ21hbihzLm1hemUuZ2V0UGVnbWFuWChvKStpLzIscy5tYXplLmdldFBlZ21hblkobykrci8yLG4pfSksdGhpcy5tYXplLnN0ZXBTcGVlZCksdGhpcy5tYXplLnNraW4ubGFyZ2VyT2JzdGFjbGVBbmltYXRpb25UaWxlcyYmcC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3MudXBkYXRlU3Vycm91bmRpbmdUaWxlc18oZSx0LChmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmhyZWZcIixzLm1hemUuc2tpbi5sYXJnZXJPYnN0YWNsZUFuaW1hdGlvblRpbGVzKX0pKX0pLHRoaXMubWF6ZS5zdGVwU3BlZWQpLCF0aGlzLm1hemUuc2tpbi5ub25EaXNhcHBlYXJpbmdQZWdtYW5IaXR0aW5nT2JzdGFjbGUpe3ZhciB1PXRoaXMuZ2V0UGVnbWFuSWNvbihvKTtwLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIil9KSwyKnRoaXMubWF6ZS5zdGVwU3BlZWQpfX0sdC5wcm90b3R5cGUuc2NoZWR1bGVMb29rPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxvb2tcIik7ci5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIit0K1wiLCBcIitlK1wiKSByb3RhdGUoXCIraStcIiAwIDApIHNjYWxlKC40KVwiKTt2YXIgbj1yLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwicGF0aFwiKTtyLnN0eWxlLmRpc3BsYXk9XCJpbmxpbmVcIjtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIHM9bltvXTt0aGlzLnNjaGVkdWxlTG9va1N0ZXBfKHMsdGhpcy5tYXplLnN0ZXBTcGVlZCpvKX19LHQucHJvdG90eXBlLnNjaGVkdWxlTG9va1N0ZXBfPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztwLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5zdHlsZS5kaXNwbGF5PVwiaW5saW5lXCIsd2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5zdHlsZS5kaXNwbGF5PVwibm9uZVwifSksMippLm1hemUuc3RlcFNwZWVkKX0pLGUpfSx0LnByb3RvdHlwZS5zdG9wSWRsaW5nPWZ1bmN0aW9uKHQpe2lmKHRoaXMubWF6ZS5za2luLmlkbGVQZWdtYW5BbmltYXRpb24pe3ZhciBlPXRoaXMuZ2V0UGVnbWFuSWNvbih0KTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjLmdldFBlZ21hbkVsZW1lbnRJZChvLklETEUsdCkpLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcImhpZGRlblwiKSxlLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcInZpc2libGVcIil9fSx0LnByb3RvdHlwZS5oaWRlUGVnbWFuPWZ1bmN0aW9uKHQpe3RoaXMuZ2V0UGVnbWFuSWNvbih0KS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIil9LHQucHJvdG90eXBlLnNob3dQZWdtYW49ZnVuY3Rpb24odCl7dGhpcy5nZXRQZWdtYW5JY29uKHQpLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcInZpc2libGVcIil9LHQucHJvdG90eXBlLnNjaGVkdWxlRGFuY2U9ZnVuY3Rpb24odCxlLGkpe3ZhciByPXRoaXMsbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImZpbmlzaFwiKSxzPXRoaXMubWF6ZS5nZXRQZWdtYW5YKGkpLGE9dGhpcy5tYXplLmdldFBlZ21hblkoaSk7aWYodCYmdGhpcy5tYXplLnNraW4uY2VsZWJyYXRlQW5pbWF0aW9uKXtuJiZuLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixcImhpZGRlblwiKTt2YXIgdT10aGlzLm1hemUuc2tpbi5jZWxlYnJhdGVQZWdtYW5Sb3csbD1lL3UsYz17eDpzLHk6YX07dGhpcy5zY2hlZHVsZVNoZWV0ZWRNb3ZlbWVudF8oe3g6Yy54LHk6Yy55fSx7eDowLHk6MH0sdSxsLG8uQ0VMRUJSQVRFLGguRGlyZWN0aW9uLk5PUlRILCEwLGkpfWVsc2V7dmFyIGY9aC5kaXJlY3Rpb25Ub0ZyYW1lKHRoaXMubWF6ZS5nZXRQZWdtYW5EKGkpKTt0aGlzLmRpc3BsYXlQZWdtYW4ocyxhLDE2LGkpLHQmJm4mJm4uc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsdGhpcy5tYXplLnNraW4uZ29hbEFuaW1hdGlvbik7dmFyIG09ZS81O3Auc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyLmRpc3BsYXlQZWdtYW4ocyxhLDE4LGkpfSksbSkscC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3IuZGlzcGxheVBlZ21hbihzLGEsMjAsaSl9KSwyKm0pLHAuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyLmRpc3BsYXlQZWdtYW4ocyxhLDE4LGkpfSksMyptKSxwLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci5kaXNwbGF5UGVnbWFuKHMsYSwyMCxpKX0pLDQqbSkscC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QmJiFyLm1hemUuc2tpbi50dXJuQWZ0ZXJWaWN0b3J5fHxyLmRpc3BsYXlQZWdtYW4ocyxhLGYsaSksdCYmci5tYXplLnNraW4udHJhbnNwYXJlbnRUaWxlRW5kaW5nJiZyLnNldFRpbGVUcmFuc3BhcmVudF8oKSxyLm1hemUuc3VidHlwZS5pc1dvcmRTZWFyY2goKSYmci5zZXRQZWdtYW5UcmFuc3BhcmVudF8oKX0pLDUqbSl9fSx0LnByb3RvdHlwZS5zZXRUaWxlVHJhbnNwYXJlbnRfPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT0wO2U8dGhpcy5tYXplLm1hcC5ST1dTO2UrKylmb3IodmFyIGk9MDtpPHRoaXMubWF6ZS5tYXAuQ09MUztpKyspe3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGlsZUVsZW1lbnRcIit0KSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGlsZUFuaW1hdGlvblwiK3QpO3ImJnIuc2V0QXR0cmlidXRlKFwib3BhY2l0eVwiLDApLG4mJm4uYmVnaW5FbGVtZW50JiZuLmJlZ2luRWxlbWVudCgpLHQrK319LHQucHJvdG90eXBlLnNldFBlZ21hblRyYW5zcGFyZW50Xz1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjLmdldFBlZ21hbkVsZW1lbnRJZChvLkZBREVPVVQsdCkpLGk9dGhpcy5nZXRQZWdtYW5JY29uKHQpO2kmJmkuc2V0QXR0cmlidXRlKFwib3BhY2l0eVwiLDApLGUmJmUuYmVnaW5FbGVtZW50JiZlLmJlZ2luRWxlbWVudCgpfSx0LnByb3RvdHlwZS5kaXNwbGF5UGVnbWFuPWZ1bmN0aW9uKHQsZSxpLHIpe3ZhciBuPXRoaXMuZ2V0UGVnbWFuSWNvbihyKSxzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMuZ2V0UGVnbWFuRWxlbWVudElkKG8uQ0xJUF9SRUNULHIpKTthKHRoaXMubWF6ZS5za2luLG4scyx0LGUsaSx0aGlzLm1hemUuU1FVQVJFX1NJWkUpfSx0LnByb3RvdHlwZS5nZXRQZWdtYW5JY29uPWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjLmdldFBlZ21hbkVsZW1lbnRJZChvLlBFR01BTix0KSl9LHQucHJvdG90eXBlLmFkZE5ld1BlZ21hbj1mdW5jdGlvbih0LGUsaSxyKXtsKHRoaXMubWF6ZS5za2luLHQsZSxpLHIsdGhpcy5zdmcsdGhpcy5tYXplLlNRVUFSRV9TSVpFKX0sdH0oKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPWkoMyksbj1yLlNRVUFSRV9TSVpFLG89MjIqbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShpLHIsbil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSxmdW5jdGlvbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfSh0aGlzLHQuY2FsbCh0aGlzLGkscixuKSl9cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9KGUsdCksZS5wcm90b3R5cGUuZ2V0QXNzZXQ9ZnVuY3Rpb24oZSxpLHIpe3JldHVybiAwPT09KHRoaXMubWFwXy5nZXRWYWx1ZShpLHIpfHwwKT92b2lkIDA6dC5wcm90b3R5cGUuZ2V0QXNzZXQuY2FsbCh0aGlzLGUsaSxyKX0sZS5wcm90b3R5cGUudXBkYXRlSXRlbUltYWdlPWZ1bmN0aW9uKGkscixvKXt2YXIgcz10LnByb3RvdHlwZS51cGRhdGVJdGVtSW1hZ2UuY2FsbCh0aGlzLGkscixvKTtpZihzKXt2YXIgYT10aGlzLm1hcF8uZ2V0VmFsdWUoaSxyKXx8MDt0aGlzLm1hcF8uZ2V0VmFyaWFibGVDZWxsKGkscikuaXNWYXJpYWJsZSgpJiYobz90aGlzLnVwZGF0ZU9yQ3JlYXRlVGV4dF8oXCJjb3VudGVyXCIsaSxyLFwiXCIpOihhPWE8MD8tMTE6MTEsdGhpcy51cGRhdGVPckNyZWF0ZVRleHRfKFwiY291bnRlclwiLGkscixcIj9cIikpKTt2YXIgdT1lLnNwcml0ZUluZGV4Rm9yRGlydChhKSxsPXU8MDtyZXR1cm4gcy5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsbD9cImhpZGRlblwiOlwidmlzaWJsZVwiKSxsfHxzLnNldEF0dHJpYnV0ZShcInhcIixuKihyLXUpKSxzfX0sZS5wcm90b3R5cGUuZ2V0T3JDcmVhdGVJbWFnZV89ZnVuY3Rpb24oZSxpLHIpe3ZhciBuPXQucHJvdG90eXBlLmdldE9yQ3JlYXRlSW1hZ2VfLmNhbGwodGhpcyxlLGkscik7cmV0dXJuIG4mJm4uc2V0QXR0cmlidXRlKFwid2lkdGhcIixvKSxufSxlLnNwcml0ZUluZGV4Rm9yRGlydD1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA7cmV0dXJuIDA9PT10P2U9LTE6dDwtMTA/ZT0wOnQ8MD9lPTEwK3QrMTp0PjEwP2U9MjE6dD4wJiYoZT0xMCt0KSxlfSxlfShyKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByLG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0sbz1cIm9iamVjdFwiPT09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0P1widW5kZWZpbmVkXCI6bihSZWZsZWN0KSk/UmVmbGVjdDpudWxsLHM9byYmXCJmdW5jdGlvblwiPT10eXBlb2Ygby5hcHBseT9vLmFwcGx5OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodCxlLGkpfTtyPW8mJlwiZnVuY3Rpb25cIj09dHlwZW9mIG8ub3duS2V5cz9vLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpfTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCl9O3ZhciBhPU51bWJlci5pc05hTnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9O2Z1bmN0aW9uIHUoKXt1LmluaXQuY2FsbCh0aGlzKX10LmV4cG9ydHM9dSx1LkV2ZW50RW1pdHRlcj11LHUucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLHUucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLHUucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciBsPTEwO2Z1bmN0aW9uIHAodCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnKyh2b2lkIDA9PT10P1widW5kZWZpbmVkXCI6bih0KSkpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHZvaWQgMD09PXQuX21heExpc3RlbmVycz91LmRlZmF1bHRNYXhMaXN0ZW5lcnM6dC5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIGgodCxlLGkscil7dmFyIG4sbyxzLGE7aWYocChpKSx2b2lkIDA9PT0obz10Ll9ldmVudHMpPyhvPXQuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHQuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1vLm5ld0xpc3RlbmVyJiYodC5lbWl0KFwibmV3TGlzdGVuZXJcIixlLGkubGlzdGVuZXI/aS5saXN0ZW5lcjppKSxvPXQuX2V2ZW50cykscz1vW2VdKSx2b2lkIDA9PT1zKXM9b1tlXT1pLCsrdC5fZXZlbnRzQ291bnQ7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzP3M9b1tlXT1yP1tpLHNdOltzLGldOnI/cy51bnNoaWZ0KGkpOnMucHVzaChpKSwobj1jKHQpKT4wJiZzLmxlbmd0aD5uJiYhcy53YXJuZWQpe3Mud2FybmVkPSEwO3ZhciB1PW5ldyBFcnJvcihcIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gXCIrcy5sZW5ndGgrXCIgXCIrU3RyaW5nKGUpK1wiIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXRcIik7dS5uYW1lPVwiTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nXCIsdS5lbWl0dGVyPXQsdS50eXBlPWUsdS5jb3VudD1zLmxlbmd0aCxhPXUsY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oYSl9cmV0dXJuIHR9ZnVuY3Rpb24gZigpe2lmKCF0aGlzLmZpcmVkKXJldHVybiB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTp0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gbSh0LGUsaSl7dmFyIHI9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OnQsdHlwZTplLGxpc3RlbmVyOml9LG49Zi5iaW5kKHIpO3JldHVybiBuLmxpc3RlbmVyPWksci53cmFwRm49bixufWZ1bmN0aW9uIGQodCxlLGkpe3ZhciByPXQuX2V2ZW50cztpZih2b2lkIDA9PT1yKXJldHVybltdO3ZhciBuPXJbZV07cmV0dXJuIHZvaWQgMD09PW4/W106XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9pP1tuLmxpc3RlbmVyfHxuXTpbbl06aT9mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxpPTA7aTxlLmxlbmd0aDsrK2kpZVtpXT10W2ldLmxpc3RlbmVyfHx0W2ldO3JldHVybiBlfShuKTpnKG4sbi5sZW5ndGgpfWZ1bmN0aW9uIHkodCl7dmFyIGU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PWUpe3ZhciBpPWVbdF07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSlyZXR1cm4gMTtpZih2b2lkIDAhPT1pKXJldHVybiBpLmxlbmd0aH1yZXR1cm4gMH1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciBpPW5ldyBBcnJheShlKSxyPTA7cjxlOysrcilpW3JdPXRbcl07cmV0dXJuIGl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHUsXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHNldDpmdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHxhKHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt0K1wiLlwiKTtsPXR9fSksdS5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0sdS5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0fHx0PDB8fGEodCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK3QrXCIuXCIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9dCx0aGlzfSx1LnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzKX0sdS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspZS5wdXNoKGFyZ3VtZW50c1tpXSk7dmFyIHI9XCJlcnJvclwiPT09dCxuPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1uKXI9ciYmdm9pZCAwPT09bi5lcnJvcjtlbHNlIGlmKCFyKXJldHVybiExO2lmKHIpe3ZhciBvO2lmKGUubGVuZ3RoPjAmJihvPWVbMF0pLG8gaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBvO3ZhciBhPW5ldyBFcnJvcihcIlVuaGFuZGxlZCBlcnJvci5cIisobz9cIiAoXCIrby5tZXNzYWdlK1wiKVwiOlwiXCIpKTt0aHJvdyBhLmNvbnRleHQ9byxhfXZhciB1PW5bdF07aWYodm9pZCAwPT09dSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB1KXModSx0aGlzLGUpO2Vsc2V7dmFyIGw9dS5sZW5ndGgscD1nKHUsbCk7Zm9yKGk9MDtpPGw7KytpKXMocFtpXSx0aGlzLGUpfXJldHVybiEwfSx1LnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBoKHRoaXMsdCxlLCExKX0sdS5wcm90b3R5cGUub249dS5wcm90b3R5cGUuYWRkTGlzdGVuZXIsdS5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGgodGhpcyx0LGUsITApfSx1LnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAoZSksdGhpcy5vbih0LG0odGhpcyx0LGUpKSx0aGlzfSx1LnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAoZSksdGhpcy5wcmVwZW5kTGlzdGVuZXIodCxtKHRoaXMsdCxlKSksdGhpc30sdS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgaSxyLG4sbyxzO2lmKHAoZSksdm9pZCAwPT09KHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0oaT1yW3RdKSlyZXR1cm4gdGhpcztpZihpPT09ZXx8aS5saXN0ZW5lcj09PWUpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIHJbdF0sci5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LGkubGlzdGVuZXJ8fGUpKTtlbHNlIGlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkpe2ZvcihuPS0xLG89aS5sZW5ndGgtMTtvPj0wO28tLSlpZihpW29dPT09ZXx8aVtvXS5saXN0ZW5lcj09PWUpe3M9aVtvXS5saXN0ZW5lcixuPW87YnJlYWt9aWYobjwwKXJldHVybiB0aGlzOzA9PT1uP2kuc2hpZnQoKTpmdW5jdGlvbih0LGUpe2Zvcig7ZSsxPHQubGVuZ3RoO2UrKyl0W2VdPXRbZSsxXTt0LnBvcCgpfShpLG4pLDE9PT1pLmxlbmd0aCYmKHJbdF09aVswXSksdm9pZCAwIT09ci5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LHN8fGUpfXJldHVybiB0aGlzfSx1LnByb3RvdHlwZS5vZmY9dS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsdS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLGkscjtpZih2b2lkIDA9PT0oaT10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PWkucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1pW3RdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgaVt0XSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIG4sbz1PYmplY3Qua2V5cyhpKTtmb3Iocj0wO3I8by5sZW5ndGg7KytyKVwicmVtb3ZlTGlzdGVuZXJcIiE9PShuPW9bcl0pJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhuKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoXCJyZW1vdmVMaXN0ZW5lclwiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YoZT1pW3RdKSl0aGlzLnJlbW92ZUxpc3RlbmVyKHQsZSk7ZWxzZSBpZih2b2lkIDAhPT1lKWZvcihyPWUubGVuZ3RoLTE7cj49MDtyLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGVbcl0pO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuIGQodGhpcyx0LCEwKX0sdS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBkKHRoaXMsdCwhMSl9LHUubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0LGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQubGlzdGVuZXJDb3VudD90Lmxpc3RlbmVyQ291bnQoZSk6eS5jYWxsKHQsZSl9LHUucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9eSx1LnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/cih0aGlzLl9ldmVudHMpOltdfX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPWkoMyksbj1yLlNRVUFSRV9TSVpFLG89ci5TVkdfTlM7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoaSxyLG4sbyl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKTt2YXIgcz1mdW5jdGlvbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfSh0aGlzLHQuY2FsbCh0aGlzLGksXCJcIixuKSk7cmV0dXJuIHMuc2tpbl89cixzLmJlZV89byxzLmNsb3VkZWRfPXZvaWQgMCxzLnJlc2V0Q2xvdWRlZCgpLHN9cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9KGUsdCksZS5wcm90b3R5cGUuZ2V0QXNzZXQ9ZnVuY3Rpb24odCxlLGkpe3N3aXRjaCh0KXtjYXNlXCJjbG91ZFwiOnJldHVybiB0aGlzLnNraW5fLmNsb3VkO2Nhc2VcImNsb3VkQW5pbWF0aW9uXCI6cmV0dXJuIHRoaXMuc2tpbl8uY2xvdWRBbmltYXRpb247Y2FzZVwiYmVlSXRlbVwiOmlmKHRoaXMuYmVlXy5pc0hpdmUoZSxpLCExKSlyZXR1cm4gdGhpcy5za2luXy5ob25leTtpZih0aGlzLmJlZV8uaXNGbG93ZXIoZSxpLCExKSlyZXR1cm4gdGhpcy5mbG93ZXJJbWFnZUhyZWZfKGUsaSl9fSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMucmVzZXRDbG91ZGVkKCl9LGUucHJvdG90eXBlLnJlc2V0Q2xvdWRlZD1mdW5jdGlvbigpe3RoaXMuY2xvdWRlZF89dGhpcy5tYXBfLmN1cnJlbnRTdGF0aWNHcmlkLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuW119KSl9LGUucHJvdG90eXBlLnVwZGF0ZUl0ZW1JbWFnZT1mdW5jdGlvbih0LGUsaSl7dmFyIHIsbj10aGlzLmJlZV8uaXNDbG91ZGFibGUodCxlKSxvPSFpJiZuLHM9biYmITA9PT10aGlzLmNsb3VkZWRfW3RdW2VdLGE9TWF0aC5hYnModGhpcy5iZWVfLmdldFZhbHVlKHQsZSkpO3I9b3x8aXNOYU4oYSk/XCJcIjohaSYmdGhpcy5iZWVfLmlzUHVycGxlRmxvd2VyKHQsZSk/XCI/XCI6OTk9PT1hP1wiXCI6OTg9PT1hP1wiMFwiOlwiXCIrYTt2YXIgdT10aGlzLmRyYXdJbWFnZV8oXCJiZWVJdGVtXCIsdCxlKTt0aGlzLnVwZGF0ZU9yQ3JlYXRlVGV4dF8oXCJjb3VudGVyXCIsdCxlLHU/cjpcIlwiKSxvPyh0aGlzLnNob3dDbG91ZF8odCxlKSx0aGlzLmNsb3VkZWRfW3RdW2VdPSEwKTpzJiYodGhpcy5oaWRlQ2xvdWRfKHQsZSksdGhpcy5jbG91ZGVkX1t0XVtlXT0hMSl9LGUucHJvdG90eXBlLmZsb3dlckltYWdlSHJlZl89ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5iZWVfLmlzUmVkRmxvd2VyKHQsZSk/dGhpcy5za2luXy5yZWRGbG93ZXI6dGhpcy5za2luXy5wdXJwbGVGbG93ZXJ9LGUucHJvdG90eXBlLnNob3dDbG91ZF89ZnVuY3Rpb24odCxlKXt0aGlzLmRyYXdJbWFnZV8oXCJjbG91ZFwiLHQsZSksdGhpcy5kaXNwbGF5Q2xvdWRBbmltYXRpb25fKHQsZSwhMSl9LGUucHJvdG90eXBlLmhpZGVDbG91ZF89ZnVuY3Rpb24odCxlKXt2YXIgaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChyLmNlbGxJZChcImNsb3VkXCIsdCxlKSk7aSYmaS5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIiksdGhpcy5kaXNwbGF5Q2xvdWRBbmltYXRpb25fKHQsZSwhMCl9LGUucHJvdG90eXBlLmRpc3BsYXlDbG91ZEFuaW1hdGlvbl89ZnVuY3Rpb24odCxlLGkpe3RoaXMuZ2V0T3JDcmVhdGVJbWFnZV8oXCJjbG91ZEFuaW1hdGlvblwiLHQsZSwhMSkuc2V0QXR0cmlidXRlKFwidmlzaWJpbGl0eVwiLGk/XCJ2aXNpYmxlXCI6XCJoaWRkZW5cIil9LGUucHJvdG90eXBlLmFkZENoZWNrZXJib2FyZFRpbGU9ZnVuY3Rpb24odCxlLGkpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvLFwicmVjdFwiKTtpZihyLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsbiksci5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixuKSxyLnNldEF0dHJpYnV0ZShcInhcIixlKm4pLHIuc2V0QXR0cmlidXRlKFwieVwiLHQqbiksci5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsXCIjNzhiYjI5XCIpLHIuc2V0QXR0cmlidXRlKFwib3BhY2l0eVwiLGk/LjI6LjUpLGkpdGhpcy5zdmdfLmFwcGVuZENoaWxkKHIpO2Vsc2V7dmFyIHM9dGhpcy5zdmdfLnF1ZXJ5U2VsZWN0b3IoXCIjdGlsZUVsZW1lbnRcIisoOCp0K2UpKTt0aGlzLnN2Z18uaW5zZXJ0QmVmb3JlKHIscyl9fSxlfShyKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIG4odCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX12YXIgbz1pKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHIodGhpcyxlKSxuKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmRyYXdJbWFnZV89ZnVuY3Rpb24oZSxpLHIpe3ZhciBuPXQucHJvdG90eXBlLmRyYXdJbWFnZV8uY2FsbCh0aGlzLGUsaSxyKSxvPXRoaXMubWFwXy5nZXRWYWx1ZShpLHIpO3JldHVybiBuLnNldEF0dHJpYnV0ZShcInZpc2liaWxpdHlcIixvP1widmlzaWJsZVwiOlwiaGlkZGVuXCIpLG59LGUucHJvdG90eXBlLnVwZGF0ZUl0ZW1JbWFnZT1mdW5jdGlvbihlLGkscil7aWYodGhpcy5zaG91bGRVcGRhdGVJdGVtSW1hZ2UoZSxpLHIpKXt0LnByb3RvdHlwZS51cGRhdGVJdGVtSW1hZ2UuY2FsbCh0aGlzLGUsaSk7dmFyIG49dGhpcy5tYXBfLmdldFZhbHVlKGUsaSl8fG51bGw7dGhpcy51cGRhdGVPckNyZWF0ZVRleHRfKFwiY291bnRlclwiLGUsaSxuKX19LGUucHJvdG90eXBlLnNob3VsZFVwZGF0ZUl0ZW1JbWFnZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMubWFwXy5nZXRDZWxsKHQsZSk7cmV0dXJuIGkmJmkuZ2V0T3JpZ2luYWxWYWx1ZSgpfSxlfShvKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIG4odCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX12YXIgbz1pKDMpLHM9by5TUVVBUkVfU0laRSxhPW8uU1ZHX05TLHU9XCIjMDAwXCIsbD1cIiNmZmZcIjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiByKHRoaXMsZSksbih0aGlzLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0oZSx0KSxlLnByb3RvdHlwZS5kcmF3VGlsZT1mdW5jdGlvbih0LGUsaSxyKXt2YXIgbj1vLmNlbGxJZChcImJhY2tncm91bmRMZXR0ZXJcIixpLHIpLHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGEsXCJnXCIpLGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGEsXCJyZWN0XCIpO2wuc2V0QXR0cmlidXRlKFwiaWRcIixuKSxsLnNldEF0dHJpYnV0ZShcIndpZHRoXCIscyksbC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixzKSxsLnNldEF0dHJpYnV0ZShcInhcIixyKnMpLGwuc2V0QXR0cmlidXRlKFwieVwiLGkqcyksbC5zZXRBdHRyaWJ1dGUoXCJzdHJva2VcIixcIiMwMDAwMDBcIiksbC5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIiwzKSx1LmFwcGVuZENoaWxkKGwpO3ZhciBwPXRoaXMudXBkYXRlT3JDcmVhdGVUZXh0XyhcImxldHRlclwiLGkscixlKTt1LmFwcGVuZENoaWxkKHApLHQuYXBwZW5kQ2hpbGQodSl9LGUucHJvdG90eXBlLnVwZGF0ZU9yQ3JlYXRlVGV4dF89ZnVuY3Rpb24oZSxpLHIsbil7dmFyIG89dC5wcm90b3R5cGUudXBkYXRlT3JDcmVhdGVUZXh0Xy5jYWxsKHRoaXMsZSxpLHIsbik7cmV0dXJuIG8uc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcInNlYXJjaC1sZXR0ZXJcIiksby5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLHMpLG8uc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIscyksby5zZXRBdHRyaWJ1dGUoXCJ4XCIsKHIrLjUpKnMpLG8uc2V0QXR0cmlidXRlKFwieVwiLChpKy41KSpzKSxvLnNldEF0dHJpYnV0ZShcImZvbnQtc2l6ZVwiLDMyKSxvLnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIiksby5zZXRBdHRyaWJ1dGUoXCJmb250LWZhbWlseVwiLFwiVmVyZGFuYVwiKSxvfSxlLnByb3RvdHlwZS51cGRhdGVUaWxlSGlnaGxpZ2h0PWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj0odCtlKSUyPT0wP1wiI2RhZTNmM1wiOlwiI2ZmZmZmZlwiLG49aT9sOnU7aSYmKHI9XCIjMDBiMDUwXCIpO3ZhciBhPW8uY2VsbElkKFwiYmFja2dyb3VuZExldHRlclwiLHQsZSkscD1vLmNlbGxJZChcImxldHRlclwiLHQsZSk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkuc2V0QXR0cmlidXRlKFwiZmlsbFwiLHIpO3ZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHApO2lmKGMuc2V0QXR0cmlidXRlKFwiZmlsbFwiLG4pLGMuZ2V0QkJveCl7dmFyIGg9Yy5nZXRCQm94KCksZj1zLWguaGVpZ2h0LG09dCpzK2YvMi1oLnk7Yy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgwLCBcIittK1wiKVwiKX19LGV9KG8pfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfXZhciBvPWkoMCkuU3F1YXJlVHlwZSxzPWkoMSkucmFuZG9tVmFsdWUsYT1pKDIpLHU9e2xvZzpbMCwwXSxsaWx5MTpbMSwwXSxsYW5kMTpbMiwwXSxpc2xhbmRfc3RhcnQ6WzAsMV0saXNsYW5kX3RvcFJpZ2h0OlsxLDFdLGlzbGFuZF9ib3RMZWZ0OlswLDJdLGlzbGFuZF9ib3RSaWdodDpbMSwyXSx3YXRlcjpbMCw0XSxsaWx5MjpbMiwxXSxsaWx5MzpbMywxXSxsaWx5NDpbMiwyXSxsaWx5NTpbMywyXSxpY2U6WzMsMF0sY3JhY2tlZF9pY2U6WzQsMF0sZW1wdHk6WzAsNF19O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHIodGhpcyxlKSxuKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmlzU2NyYXQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaXNXYXRlck9yT3V0T2ZCb3VuZHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pc1dhdGVyKHQsZSl8fHZvaWQgMD09PXRoaXMubWF6ZV8ubWFwLmdldFRpbGUoZSx0KX0sZS5wcm90b3R5cGUuaXNXYXRlcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1hemVfLm1hcC5nZXRUaWxlKGUsdCk9PT1vLldBTEx9LGUucHJvdG90eXBlLmlzT2JzdGFjbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tYXplXy5tYXAuZ2V0VGlsZShlLHQpPT09by5PQlNUQUNMRX0sZS5wcm90b3R5cGUuZHJhd01hcFRpbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCxpPXZvaWQgMCxyPVtdO2ZvcihlPTA7ZTx0aGlzLm1hemVfLm1hcC5ST1dTO2UrKylmb3IoaT0wO2k8dGhpcy5tYXplXy5tYXAuQ09MUztpKyspdGhpcy5pc1dhdGVyKGksZSkmJnRoaXMuaXNXYXRlcihpKzEsZSkmJnRoaXMuaXNXYXRlcihpLGUrMSkmJnRoaXMuaXNXYXRlcihpKzEsZSsxKSYmci5wdXNoKHtyb3c6ZSxjb2w6aX0pO3ZhciBuPXMociksbz17fTtuJiYob1tuLnJvdyswK1wiX1wiKyhuLmNvbCswKV09XCJpc2xhbmRfc3RhcnRcIixvW24ucm93KzErXCJfXCIrKG4uY29sKzApXT1cImlzbGFuZF9ib3RMZWZ0XCIsb1tuLnJvdyswK1wiX1wiKyhuLmNvbCsxKV09XCJpc2xhbmRfdG9wUmlnaHRcIixvW24ucm93KzErXCJfXCIrKG4uY29sKzEpXT1cImlzbGFuZF9ib3RSaWdodFwiKTt2YXIgYT0wLGw9dm9pZCAwO2ZvcihlPTA7ZTx0aGlzLm1hemVfLm1hcC5ST1dTO2UrKylmb3IoaT0wO2k8dGhpcy5tYXplXy5tYXAuQ09MUztpKyspe2lmKHRoaXMuaXNPYnN0YWNsZShpLGUpKWw9XCJjcmFja2VkX2ljZVwiO2Vsc2UgaWYodGhpcy5pc1dhdGVyT3JPdXRPZkJvdW5kcyhpLGUpKXt2YXIgcD0hKHRoaXMuaXNXYXRlck9yT3V0T2ZCb3VuZHMoaSxlLTEpJiZ0aGlzLmlzV2F0ZXJPck91dE9mQm91bmRzKGkrMSxlKSYmdGhpcy5pc1dhdGVyT3JPdXRPZkJvdW5kcyhpLGUrMSkmJnRoaXMuaXNXYXRlck9yT3V0T2ZCb3VuZHMoaS0xLGUpKTtsPVwid2F0ZXJcIiwobD1vW2UrXCJfXCIraV0pfHwobD1zKFtcImVtcHR5XCIsXCJlbXB0eVwiLFwiZW1wdHlcIixcImVtcHR5XCIsXCJlbXB0eVwiLFwibGlseTJcIixcImxpbHkzXCIsXCJsaWx5NFwiLFwibGlseTVcIixcImxpbHkxXCIsXCJsb2dcIixcImxpbHkxXCIsXCJsYW5kMVwiXSkpLHAmJlwibGFuZDFcIj09PWwmJihsPVwiZW1wdHlcIil9ZWxzZSBsPVwiaWNlXCI7dGhpcy5kcmF3VGlsZSh0LHVbbF0sZSxpLGEpLGErK319LGV9KGEpfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSgzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShpLHIsbixvKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpO3ZhciBzPWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9KHRoaXMsdC5jYWxsKHRoaXMsaSxcIlwiLG4pKTtyZXR1cm4gcy5za2luXz1yLHMuc3VidHlwZV89byxzfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmdldEFzc2V0PWZ1bmN0aW9uKHQsZSxpKXtzd2l0Y2godCl7Y2FzZVwic3Byb3V0XCI6cmV0dXJuIHRoaXMuc2tpbl8uc3Byb3V0O2Nhc2VcImNyb3BcIjp2YXIgcj10aGlzLnN1YnR5cGVfLmdldENlbGwoZSxpKS5mZWF0dXJlTmFtZSgpO3JldHVybiB0aGlzLnNraW5fW3JdfX0sZS5wcm90b3R5cGUudXBkYXRlSXRlbUltYWdlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj10aGlzLm1hcF8uZ2V0VmFyaWFibGVDZWxsKHQsZSksbj10aGlzLm1hcF8uZ2V0Q2VsbCh0LGUpO3IuaGFzVmFsdWUoKSYmKG4uc3RhcnRzSGlkZGVuKCkmJiFpPyh0aGlzLnNob3coXCJzcHJvdXRcIix0LGUpLHRoaXMuaGlkZShcImNyb3BcIix0LGUpKToobi5nZXRDdXJyZW50VmFsdWUoKT4wP3RoaXMuc2hvdyhcImNyb3BcIix0LGUpOnRoaXMuaGlkZShcImNyb3BcIix0LGUpLHRoaXMuaGlkZShcInNwcm91dFwiLHQsZSkpLGk/bi5nZXRDdXJyZW50VmFsdWUoKT4wP3RoaXMudXBkYXRlT3JDcmVhdGVUZXh0XyhcImNvdW50ZXJcIix0LGUsbi5nZXRDdXJyZW50VmFsdWUoKSk6dGhpcy51cGRhdGVPckNyZWF0ZVRleHRfKFwiY291bnRlclwiLHQsZSxcIlwiKTpuLnN0YXJ0c0hpZGRlbigpP3RoaXMudXBkYXRlT3JDcmVhdGVUZXh0XyhcImNvdW50ZXJcIix0LGUsXCJcIik6ci5pc1ZhcmlhYmxlUmFuZ2UoKT90aGlzLnVwZGF0ZU9yQ3JlYXRlVGV4dF8oXCJjb3VudGVyXCIsdCxlLFwiP1wiKTp0aGlzLnVwZGF0ZU9yQ3JlYXRlVGV4dF8oXCJjb3VudGVyXCIsdCxlLG4uZ2V0Q3VycmVudFZhbHVlKCkpKX0sZS5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbih0LGUsaSl7dmFyIHI9dGhpcy5nZXRPckNyZWF0ZUltYWdlXyh0LGUsaSk7ciYmci5zZXRBdHRyaWJ1dGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIil9LGUucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24odCxlLGkpe3RoaXMuZHJhd0ltYWdlXyh0LGUsaSl9LGV9KHIpfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSgzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShpLHIsbixvKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpO3ZhciBzPWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9KHRoaXMsdC5jYWxsKHRoaXMsaSxcIlwiLG4pKTtyZXR1cm4gcy5za2luXz1yLHMuc3VidHlwZV89byxzfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLmdldEFzc2V0PWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj10aGlzLnN1YnR5cGVfLmdldENlbGwoZSxpKS5mZWF0dXJlTmFtZSgpO3JldHVybiB0aGlzLnNraW5fW3JdfSxlfShyKX0sZnVuY3Rpb24odCxlLGkpe1widXNlIHN0cmljdFwiO3ZhciByPWkoMykuU1ZHX05TLG49aSgzKSxvPWkoMCkscz1PYmplY3QuZnJlZXplKHt0b3BMZWZ0OlwidG9wTGVmdFwiLHRvcFJpZ2h0OlwidG9wUmlnaHRcIixib3R0b21MZWZ0OlwiYm90dG9tTGVmdFwiLGJvdHRvbVJpZ2h0OlwiYm90dG9tUmlnaHRcIn0pO2Z1bmN0aW9uIGEodCxlLGksbil7dmFyIG89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik7aWYob3x8KG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHIsdCkpLnNldEF0dHJpYnV0ZShcImlkXCIsbiksT2JqZWN0LmtleXMoZSkubWFwKChmdW5jdGlvbih0KXtvLnNldEF0dHJpYnV0ZSh0LGVbdF0pfSkpLGkmJm4uc3RhcnRzV2l0aChcImdcIikpe3ZhciBzPWkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInBlZ21hbi1sb2NhdGlvblwiKVswXTtpLmluc2VydEJlZm9yZShvLHMpfWVsc2UgaSYmaS5hcHBlbmRDaGlsZChvKTtyZXR1cm4gb31mdW5jdGlvbiB1KHQsZSxpLHIsbil7cmV0dXJuKGU/XCJtMCxcIisuMyp0K1wiIExcIisuMyp0K1wiLDBcIjpcIm0wLDBcIikrXCIgXCIrKGk/XCJMXCIrLjcqdCtcIiwwIExcIit0K1wiLFwiKy4zKnQ6XCJMXCIrdCtcIiwwXCIpK1wiIFwiKyhyP1wiTFwiK3QrXCIsXCIrLjcqdCtcIiBMXCIrLjcqdCtcIixcIit0OlwiTFwiK3QrXCIsXCIrdCkrXCIgXCIrKG4/XCJMXCIrLjMqdCtcIixcIit0K1wiIEwwLFwiKy43KnQ6XCJMMCxcIit0KStcIiBaXCJ9ZnVuY3Rpb24gbCh0LGUsaSxyLG4sbyx1LGwpeyFufHxuIT09cnx8biE9PW8mJm4hPT11P24mJm4hPT1yfHxmdW5jdGlvbih0LGUsaSxyLG4pe3ZhciBvPXZvaWQgMCx1PXZvaWQgMDtuPT09cy50b3BMZWZ0PyhvPWkrXCItdHJpYW5nbGUtdGxcIix1PVwibTAsMCBMXCIrcitcIiwwIEwwLFwiK3IrXCIgWlwiKTpuPT09cy50b3BSaWdodD8obz1pK1wiLXRyaWFuZ2xlLXRyXCIsdT1cIm1cIityK1wiLDAgTFwiK3IrXCIsXCIrcitcIiBMMCwwIFpcIik6bj09PXMuYm90dG9tTGVmdD8obz1pK1wiLXRyaWFuZ2xlLWJsXCIsdT1cIm0wLFwiK3IrXCIgTFwiK3IrXCIsXCIrcitcIiBMMCwwIFpcIik6bj09PXMuYm90dG9tUmlnaHQmJihvPWkrXCItdHJpYW5nbGUtYnJcIix1PVwibVwiK3IrXCIsXCIrcitcIiBMXCIrcitcIiwwIEwwLFwiK3IrXCIgWlwiKSxhKFwicGF0aFwiLHtkOnUsc3Ryb2tlOnQsZmlsbDp0fSxlLG8pfShyLHQsZSxpLGwpOmZ1bmN0aW9uKHQsZSxpLHIsbil7dmFyIG89dm9pZCAwLHU9dm9pZCAwO249PT1zLnRvcExlZnQ/KG89aStcIi1zbWFsbENvcm5lci10bFwiLHU9XCJtMCwwIExcIisuMypyK1wiLDAgTDAsXCIrLjMqcitcIiBaXCIpOm49PT1zLnRvcFJpZ2h0PyhvPWkrXCItc21hbGxDb3JuZXItdHJcIix1PVwibVwiK3IrXCIsMCBMXCIrLjcqcitcIiwwIExcIityK1wiLFwiKy4zKnIrXCIgWlwiKTpuPT09cy5ib3R0b21MZWZ0PyhvPWkrXCItc21hbGxDb3JuZXItYmxcIix1PVwibTAsXCIrcitcIiBMMCxcIisuNypyK1wiIExcIisuMypyK1wiLFwiK3IrXCIgWlwiKTpuPT09cy5ib3R0b21SaWdodCYmKG89aStcIi1zbWFsbENvcm5lci1iclwiLHU9XCJtXCIrcitcIixcIityK1wiIExcIisuNypyK1wiLFwiK3IrXCIgTFwiK3IrXCIsXCIrLjcqcitcIiBaXCIpLGEoXCJwYXRoXCIse2Q6dSxzdHJva2U6dCxmaWxsOnR9LGUsbyl9KHIsdCxlLGksbCl9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoaSxyLG4sbyxzKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGUpO3ZhciBhPWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9KHRoaXMsdC5jYWxsKHRoaXMsaSxcIlwiLG4pKTtyZXR1cm4gYS5zcXVhcmVTaXplPW8sYS5uZWlnaGJvcmhvb2Q9cyxhLnNraW5fPXIsYS5zaG93QnVja2V0cz0hMCxhfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfShlLHQpLGUucHJvdG90eXBlLnNldEJ1Y2tldFZpc2liaWxpdHk9ZnVuY3Rpb24odCl7dGhpcy5zaG93QnVja2V0cz10fSxlLnByb3RvdHlwZS5nZXRCdWNrZXRWaXNpYmlsaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd0J1Y2tldHN9LGUucHJvdG90eXBlLnJlc2V0VGlsZT1mdW5jdGlvbih0LGUpe3ZhciBpPVwiZ1wiK3QrXCIuXCIrZTt0aGlzLm5laWdoYm9yaG9vZC5nZXRDZWxsKHQsZSkuc2V0Q29sb3IobnVsbCk7dmFyIHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSk7ciYmci5xdWVyeVNlbGVjdG9yQWxsKFwiKlwiKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW1vdmUoKX0pKX0sZS5wcm90b3R5cGUuZ2V0QXNzZXQ9ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMubmVpZ2hib3Job29kLmdldENlbGwoZSxpKS5nZXRDdXJyZW50VmFsdWUoKSYmdGhpcy5zaG93QnVja2V0cylyZXR1cm4gdGhpcy5za2luXy5wYWludENhbn0sZS5wcm90b3R5cGUuZ2V0QmFja2dyb3VuZFRpbGVJbmZvPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5uZWlnaGJvcmhvb2QuZ2V0Q2VsbCh0LGUpO2lmKG51bGwhPWkuZ2V0QXNzZXRJZCgpJiZpLmdldEFzc2V0SWQoKT4wJiZpLmdldFRpbGUoKSE9PW8uU3F1YXJlVHlwZS5TVEFSVCYmIWkuZ2V0T3JpZ2luYWxWYWx1ZSgpKXJldHVybiB0aGlzLmdldFNwcml0ZURhdGEoaSl9LGUucHJvdG90eXBlLmdldFNwcml0ZURhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubmVpZ2hib3Job29kLmdldFNwcml0ZU1hcCgpW3QuZ2V0QXNzZXRJZCgpXX0sZS5wcm90b3R5cGUucmVzZXRUaWxlcz1mdW5jdGlvbigpe3RoaXMuc2hvd0J1Y2tldHM9ITA7Zm9yKHZhciB0PTA7dDx0aGlzLm1hcF8uUk9XUzt0KyspZm9yKHZhciBlPTA7ZTx0aGlzLm1hcF8uQ09MUztlKyspdGhpcy5yZXNldFRpbGUodCxlKX0sZS5wcm90b3R5cGUuY2VsbENvbG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+PXRoaXMubWFwXy5ST1dTfHx0PDA/bnVsbDplPj10aGlzLm1hcF8uQ09MU3x8ZTwwP251bGw6dGhpcy5tYXBfLmdldENlbGwodCxlKS5nZXRDb2xvcigpfHxudWxsfSxlLnByb3RvdHlwZS5jZW50ZXJGaWxsPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj10WzBdLG49dFsxXSxvPXRbMl0scz10WzNdLGw9dFs0XSxwPXRbNV0sYz10WzZdLGg9dFs3XSxmPXRbOF07YShcInBhdGhcIix7ZDpsIT1ufHxsIT1wfHxofHxzfHxyfHxmP2whPXB8fGwhPWh8fHN8fG58fG98fGM/bCE9aHx8bCE9c3x8bnx8cHx8Znx8cj91KHRoaXMuc3F1YXJlU2l6ZSwhMSwhMSwhKGwhPXN8fGwhPW58fHB8fGh8fGN8fG8pLCExKTp1KHRoaXMuc3F1YXJlU2l6ZSwhMSwhMCwhMSwhMSk6dSh0aGlzLnNxdWFyZVNpemUsITAsITEsITEsITEpOnUodGhpcy5zcXVhcmVTaXplLCExLCExLCExLCEwKSxzdHJva2U6bCxmaWxsOmx9LGUsaStcIi1jZW50ZXJcIil9LGUucHJvdG90eXBlLmNvbG9yQ2VsbHM9ZnVuY3Rpb24odCxlLGkpe3ZhciByPXRoaXMuc3F1YXJlU2l6ZSxuPXRbMF0sbz10WzFdLGE9dFsyXSx1PXRbM10scD10WzRdLGM9dFs1XSxoPXRbNl0sZj10WzddLG09dFs4XSxkPVwiZ1wiK2kseT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkKTt5JiZ5LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqXCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbW92ZSgpfSkpLHA/dGhpcy5jZW50ZXJGaWxsKHQsZSxpKToobyYmYyYmbz09PWMmJmwoZSxpLHIsbyxhLG4sbSxzLnRvcFJpZ2h0KSxjJiZmJiZjPT09ZiYmbChlLGkscixjLG0sYSxoLHMuYm90dG9tUmlnaHQpLGYmJnUmJmY9PT11JiZsKGUsaSxyLGYsaCxtLG4scy5ib3R0b21MZWZ0KSx1JiZvJiZ1PT09byYmbChlLGkscix1LG4saCxhLHMudG9wTGVmdCkpfSxlLnByb3RvdHlwZS5tYWtlR3JpZD1mdW5jdGlvbih0LGUsaSl7dmFyIHI9XCJnXCIrdCtcIi5cIitlO2EoXCJnXCIse3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitlKnRoaXMuc3F1YXJlU2l6ZStcIiwgXFxuICAgICAgICBcIit0KnRoaXMuc3F1YXJlU2l6ZStcIilcIn0saSxyKX0sZS5wcm90b3R5cGUuZ2V0R3JpZD1mdW5jdGlvbih0LGUpe3ZhciBpPVwiZ1wiK3QrXCIuXCIrZTtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSl9LGUucHJvdG90eXBlLmRyYXdUaWxlPWZ1bmN0aW9uKGUsaSxyLG4sbyxzKXt2YXIgYT10aGlzLnNxdWFyZVNpemUsdT10aGlzLnNxdWFyZVNpemU7dC5wcm90b3R5cGUuZHJhd1RpbGVIZWxwZXIuY2FsbCh0aGlzLGUsaSxyLG4sbyxzLGEsdSx0aGlzLnNxdWFyZVNpemUpfSxlLnByb3RvdHlwZS5kcmF3QXNzZXRzPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLm5laWdoYm9yaG9vZC5nZXRBc3NldExpc3QoKTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgaT1lW3RdLHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSksbj10aGlzLnN2Z18uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInBlZ21hbi1sb2NhdGlvblwiKVswXTt0aGlzLnN2Z18uaW5zZXJ0QmVmb3JlKHIsbil9fSxlLnByb3RvdHlwZS51cGRhdGVJdGVtSW1hZ2U9ZnVuY3Rpb24oZSxpLHIpe3ZhciBuPXRoaXMubWFwXy5nZXRDZWxsKGUsaSk7aWYobi5nZXRPcmlnaW5hbFZhbHVlKCk+MCl7dmFyIG89bi5nZXRDdXJyZW50VmFsdWUoKT4wJiZ0aGlzLnNob3dCdWNrZXRzP24uZ2V0Q3VycmVudFZhbHVlKCk6XCJcIjt0LnByb3RvdHlwZS5kcmF3SW1hZ2VfLmNhbGwodGhpcyxcIlwiLGUsaSx0aGlzLnNxdWFyZVNpemUpLHQucHJvdG90eXBlLnVwZGF0ZU9yQ3JlYXRlVGV4dF8uY2FsbCh0aGlzLFwiY291bnRlclwiLGUsaSxvLHRoaXMuc3F1YXJlU2l6ZSwxLDEsXCJrYXJlbC1jb3VudGVyLXRleHQgcGFpbnRcIil9aWYodGhpcy5tYWtlR3JpZChlLGksdGhpcy5zdmdfKSx0aGlzLmNlbGxDb2xvcihlLGkpKWZvcih2YXIgcz1lLTE7czxlKzI7cysrKWZvcih2YXIgYT1pLTE7YTxpKzI7YSsrKXt2YXIgdT1zK1wiLlwiK2EsbD1bdGhpcy5jZWxsQ29sb3Iocy0xLGEtMSksdGhpcy5jZWxsQ29sb3Iocy0xLGEpLHRoaXMuY2VsbENvbG9yKHMtMSxhKzEpLHRoaXMuY2VsbENvbG9yKHMsYS0xKSx0aGlzLmNlbGxDb2xvcihzLGEpLHRoaXMuY2VsbENvbG9yKHMsYSsxKSx0aGlzLmNlbGxDb2xvcihzKzEsYS0xKSx0aGlzLmNlbGxDb2xvcihzKzEsYSksdGhpcy5jZWxsQ29sb3IocysxLGErMSldLHA9dGhpcy5nZXRHcmlkKHMsYSk7dGhpcy5jb2xvckNlbGxzKGwscCx1KX19LGV9KG4pfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSgyMCksbj1pKDUpLkRFRkFVTFRfUEVHTUFOX0lEO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMucGVnbWVuPXt9fXJldHVybiB0LnByb3RvdHlwZS5nZXRPckNyZWF0ZVBlZ21hbj1mdW5jdGlvbih0KXtudWxsPT10JiYodD1uKTt2YXIgZT10aGlzLmdldFBlZ21hbih0KTtyZXR1cm4gZXx8KGU9bmV3IHIodCksdGhpcy5hZGRQZWdtYW4oZSkpLGV9LHQucHJvdG90eXBlLmdldFBlZ21hbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dCYmKHQ9biksdGhpcy5wZWdtZW5bdF19LHQucHJvdG90eXBlLmFkZFBlZ21hbj1mdW5jdGlvbih0KXtpZih0aGlzLnBlZ21lblt0LmlkXSl0aHJvdyBuZXcgRXJyb3IoXCJQZWdtYW4gd2l0aCBpZCBcIit0LmlkK1wiIGFscmVhZHkgZXhpc3RzLlwiKTt0aGlzLnBlZ21lblt0LmlkXT10fSx0LnByb3RvdHlwZS5nZXRBbGxQZWdtYW5JZHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5wZWdtZW4pfSx0LnByb3RvdHlwZS5pc0RlZmF1bHRQZWdtYW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQ9PT1ufSx0fSgpfSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSg0KSxuPWkoMTEpLG89aSgxNSkscz1pKDE3KSxhPWkoMTkpO3QuZXhwb3J0cz17Q2VsbDpyLEJlZUNlbGw6bixIYXJ2ZXN0ZXJDZWxsOm8sUGxhbnRlckNlbGw6cyxOZWlnaGJvcmhvb2RDZWxsOmF9fSxmdW5jdGlvbih0LGUsaSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9aSg4KSxuPWkoOSksbz1pKDEyKSxzPWkoMTMpLGE9aSgxNCksdT1pKDE2KSxsPWkoMTgpO3QuZXhwb3J0cz17RmFybWVyOnIsQmVlOm4sQ29sbGVjdG9yOm8sV29yZHNlYXJjaDpzLEhhcnZlc3RlcjphLFBsYW50ZXI6dSxOZWlnaGJvcmhvb2Q6bH19XSl9KSk7Il0sIm5hbWVzIjpbIndpbmRvdyIsIm1vZHVsZSIsImV4cG9ydHMiLCJ0IiwiZSIsImkiLCJyIiwibiIsImwiLCJjYWxsIiwibSIsImMiLCJkIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJfX2VzTW9kdWxlIiwiY3JlYXRlIiwiYmluZCIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiRGlyZWN0aW9uIiwiTk9SVEgiLCJFQVNUIiwiU09VVEgiLCJXRVNUIiwiU3F1YXJlVHlwZSIsIldBTEwiLCJPUEVOIiwiU1RBUlQiLCJGSU5JU0giLCJPQlNUQUNMRSIsIlNUQVJUQU5ERklOSVNIIiwiVHVybkRpcmVjdGlvbiIsIkxFRlQiLCJSSUdIVCIsIk1vdmVEaXJlY3Rpb24iLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJkaXJlY3Rpb25Ub0R4RHkiLCJkeCIsImR5IiwiRXJyb3IiLCJkaXJlY3Rpb25Ub0ZyYW1lIiwibW9kIiwiY29uc3RyYWluRGlyZWN0aW9uNCIsInJhbmRvbVZhbHVlIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwibGVuZ3RoIiwicm90YXRlMkRBcnJheSIsIm1hcCIsInJhbmdlIiwicHVzaCIsImNyZWF0ZVV1aWQiLCJyZXBsYWNlIiwidG9TdHJpbmciLCJpc0Zhcm1lclNraW4iLCJ0ZXN0IiwiaXNCZWVTa2luIiwiaXNDb2xsZWN0b3JTa2luIiwiaXNTY3JhdFNraW4iLCJpc1BsYW50ZXJTa2luIiwiaXNIYXJ2ZXN0ZXJTa2luIiwiaXNXb3JkU2VhcmNoU2tpbiIsImlzTmVpZ2hib3Job29kU2tpbiIsImdldFN1YnR5cGVGb3JTa2luIiwiZ2V0UGVnbWFuRWxlbWVudElkIiwiREVGQVVMVF9QRUdNQU5fSUQiLCJUeXBlRXJyb3IiLCJSZWZlcmVuY2VFcnJvciIsImEiLCJ1IiwiRXZlbnRFbWl0dGVyIiwibnVsbDAiLCJudWxsMSIsIm51bGwyIiwibnVsbDMiLCJudWxsNCIsImFyZ3VtZW50cyIsInNraW4iLCJsZXZlbCIsInRoaXMiLCJtYXplXyIsInNraW5fIiwic3RhcnREaXJlY3Rpb24iLCJjb25zdHJ1Y3RvciIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRWYWx1ZSIsImdldENlbGwiLCJnZXRDdXJyZW50VmFsdWUiLCJzZXRWYWx1ZSIsInNldEN1cnJlbnRWYWx1ZSIsImN1cnJlbnRTdGF0aWNHcmlkIiwiZ2V0Q2VsbENsYXNzIiwibG9hZEF1ZGlvIiwicGxheUF1ZGlvXyIsInBsYXlBdWRpbyIsImNyZWF0ZURyYXdlciIsImRyYXdlciIsImRpcnQiLCJyZXNldCIsImVtaXQiLCJpc0Zhcm1lciIsImlzQ29sbGVjdG9yIiwiaXNTY3JhdCIsImlzV29yZFNlYXJjaCIsImlzQmVlIiwiaXNOZWlnaGJvcmhvb2QiLCJpc09uUGF0aFN0cl8iLCJpc1dhbGxPck91dE9mQm91bmRzXyIsImdldFRpbGUiLCJnZXRFbXB0eVRpbGUiLCJ3YWxsTWFwIiwiZHJhd01hcFRpbGVzIiwiZm9yRWFjaENlbGwiLCJzcGxpdCIsImRyYXdUaWxlIiwidXBkYXRlSXRlbUltYWdlIiwic2NoZWR1bGVEaXJ0Q2hhbmdlIiwidGlsZXMiLCJpbml0V2FsbE1hcCIsIkFycmF5IiwiUk9XUyIsIkNPTFMiLCJpbml0U3RhcnRGaW5pc2giLCJzdGFydCIsImZpbmlzaCIsIngiLCJ5IiwiYWxsb3dNdWx0aXBsZVBlZ21lbiIsImlzQXJyYXkiLCJpdGVyYXRvciIsIm5leHQiLCJkb25lIiwicmV0dXJuIiwibWFwXyIsImFzc2V0XyIsInN2Z18iLCJjZWxsSWQiLCJnZXRBc3NldCIsImRyYXdJbWFnZV8iLCJxdWVyeVNlbGVjdG9yIiwiZ2V0T3JDcmVhdGVJbWFnZV8iLCJzZXRBdHRyaWJ1dGVOUyIsInNldEF0dHJpYnV0ZSIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJoIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50TlMiLCJmIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJ1cGRhdGVPckNyZWF0ZVRleHRfIiwiY3JlYXRlVGV4dE5vZGUiLCJmaXJzdENoaWxkIiwibm9kZVZhbHVlIiwiZHJhd1RpbGVIZWxwZXIiLCJnIiwiU1FVQVJFX1NJWkUiLCJTVkdfTlMiLCJ0aWxlVHlwZV8iLCJvcmlnaW5hbFZhbHVlXyIsImN1cnJlbnRWYWx1ZV8iLCJyZXNldEN1cnJlbnRWYWx1ZSIsInJhbmdlXyIsImlzTmFOIiwiY2xvbmUiLCJkZXNlcmlhbGl6ZSIsInNlcmlhbGl6ZSIsImhhc1ZhbHVlIiwiaXNEaXJ0IiwiaXNWYXJpYWJsZVJhbmdlIiwiaXNWYXJpYWJsZSIsImdldE9yaWdpbmFsVmFsdWUiLCJnZXRQb3NzaWJsZUdyaWRBc3NldHMiLCJtaW4iLCJtYXgiLCJ0aWxlVHlwZSIsInBhcnNlRnJvbU9sZFZhbHVlcyIsInBhcnNlSW50IiwicGVnbWFuRWxlbWVudHMiLCJQRUdNQU4iLCJJRExFIiwiQ0xJUF9SRUNUIiwiRkFERU9VVCIsIldBTExfQU5JTUFUSU9OIiwiTU9WRSIsIkNFTEVCUkFURSIsInBlZ21hbkhlaWdodCIsInBlZ21hbllPZmZzZXQiLCJwZWdtYW5YT2Zmc2V0IiwicGVnbWFuV2lkdGgiLCJnZXRBdHRyaWJ1dGUiLCJhdmF0YXIiLCJwZWdtYW5TaGVldFdpZHRoIiwiYiIsImJhY2tncm91bmQiLCJnb2FsSWRsZSIsIm9ic3RhY2xlSWRsZSIsIm9ic3RhY2xlU2NhbGUiLCJnZXRQZWdtYW5ZRm9yUm93IiwiZGlzcGxheVBlZ21hbiIsImFkZE5ld1BlZ21hbiIsInNldFRpbWVvdXQiLCJhcHBseSIsImNsZWFyVGltZW91dHMiLCJmb3JFYWNoIiwiY2xlYXJUaW1lb3V0IiwiaW5kZXhPZiIsInNwbGljZSIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbHMiLCJjbGVhckludGVydmFsIiwidGltZWRMb29wIiwic3RvcFRpbWVkTG9vcCIsInNsaWNlIiwiZGVmYXVsdEZsb3dlckNvbG9yXyIsImZsb3dlclR5cGUiLCJ1c2VyQ2hlY2tzXyIsIm92ZXJyaWRlU3RlcFNwZWVkIiwiaG9uZXlfIiwibmVjdGFyc18iLCJiZWVTb3VuZCIsIm5lY3RhclNvdW5kIiwiaG9uZXlTb3VuZCIsImNoZWNrZWRGb3JGbG93ZXIiLCJjaGVja2VkRm9ySGl2ZSIsImNoZWNrZWRGb3JOZWN0YXIiLCJnZXRIb25leUNvdW50IiwiZ2V0TmVjdGFyQ291bnQiLCJpc0hpdmUiLCJpc0Zsb3dlciIsImlzQ2xvdWRhYmxlIiwiaXNTdGF0aWNDbG91ZCIsInNob3VsZENoZWNrQ2xvdWQiLCJnZXRWYXJpYWJsZUNlbGwiLCJzaG91bGRDaGVja1B1cnBsZSIsImlzUHVycGxlRmxvd2VyIiwiY2hlY2tlZENsb3VkIiwiY2hlY2tlZEFsbENsb3VkZWQiLCJjaGVja2VkQWxsUHVycGxlIiwiaXNSZWRGbG93ZXIiLCJoaXZlUmVtYWluaW5nQ2FwYWNpdHkiLCJmbG93ZXJSZW1haW5pbmdDYXBhY2l0eSIsIm1hZGVIb25leUF0IiwiZ290TmVjdGFyQXQiLCJyb3ciLCJjb2wiLCJ0cnlHZXROZWN0YXIiLCJnZXRQZWdtYW5YIiwiZ2V0UGVnbWFuWSIsInRyeU1ha2VIb25leSIsIm5lY3RhclJlbWFpbmluZyIsImhvbmV5QXZhaWxhYmxlIiwiYW5pbWF0ZUdldE5lY3RhciIsImFuaW1hdGVNYWtlSG9uZXkiLCJhZGRDaGVja2VyYm9hcmRUaWxlIiwicmVzZXREaXJ0IiwiY29sbGVjdGVkRXZlcnl0aGluZyIsInNvbWUiLCJzdWNjZWVkZWQiLCJOT05FIiwiSElWRSIsIkZMT1dFUiIsIlZBUklBQkxFIiwiU1RBVElDIiwiSElWRV9PUl9GTE9XRVIiLCJGTE9XRVJfT1JfTk9USElORyIsIkhJVkVfT1JfTk9USElORyIsIkFOWSIsIkRFRkFVTFQiLCJSRUQiLCJQVVJQTEUiLCJGZWF0dXJlVHlwZSIsImZlYXR1cmVUeXBlXyIsImZsb3dlckNvbG9yXyIsImNsb3VkVHlwZV8iLCJpc1ZhcmlhYmxlQ2xvdWQiLCJhc3NpZ24iLCJmZWF0dXJlVHlwZSIsImNsb3VkVHlwZSIsImZsb3dlckNvbG9yIiwibWF0Y2giLCJhYnMiLCJDbG91ZFR5cGUiLCJGbG93ZXJDb2xvciIsImNvbGxlY3RTb3VuZHNDb3VudCIsImNvbGxlY3RTb3VuZHNJIiwiZ2V0VG90YWxDb2xsZWN0ZWQiLCJ0cnlDb2xsZWN0IiwiY29sbGVjdFNvdW5kcyIsImdvYWwiLCJkcmF3Q29ybmVycyIsIk5FIiwiTlciLCJTRSIsIlNXIiwia2V5cyIsImZpbHRlciIsImNvcm5lcnMiLCJpZCIsImdvYWxfIiwic2VhcmNoV29yZCIsInZpc2l0ZWRfIiwiZ2V0VmlzaXRlZCIsImlzT3Blbl8iLCJvcGVuTmVpZ2hib3JzXyIsInJlc3RyaWN0ZWRWYWx1ZXNfIiwibGV0dGVyVmFsdWUiLCJFTVBUWV9DSEFSIiwicmFuZG9tTGV0dGVyIiwicmVzZXRUaWxlcyIsInVwZGF0ZVRpbGVIaWdobGlnaHQiLCJnZXRFbGVtZW50QnlJZCIsInRleHRDb250ZW50IiwibWFya1RpbGVWaXNpdGVkIiwiU1RBUlRfQ0hBUiIsIkFMTF9DSEFSUyIsIlNldCIsImhhcyIsImhhcnZlc3RTb3VuZCIsImhhc0Nvcm4iLCJoYXNDcm9wIiwiQ09STiIsImhhc1B1bXBraW4iLCJQVU1QS0lOIiwiaGFzTGV0dHVjZSIsIkxFVFRVQ0UiLCJhdENvcm4iLCJhdENyb3AiLCJhdFB1bXBraW4iLCJhdExldHR1Y2UiLCJnb3RDcm9wQXQiLCJ0cnlHZXRDb3JuIiwidHJ5R2V0Q3JvcCIsInRyeUdldFB1bXBraW4iLCJ0cnlHZXRMZXR0dWNlIiwiYW5pbWF0ZUdldENvcm4iLCJhbmltYXRlR2V0Q3JvcCIsImFuaW1hdGVHZXRQdW1wa2luIiwiYW5pbWF0ZUdldExldHR1Y2UiLCJldmVyeSIsInBvc3NpYmxlRmVhdHVyZXNfIiwic3RhcnRzSGlkZGVuXyIsInN0YXJ0c0hpZGRlbiIsImlzVmFyaWFibGVGZWF0dXJlIiwicG9zc2libGVGZWF0dXJlcyIsImZlYXR1cmVOYW1lIiwiaXNDb3JuIiwiaW5jbHVkZXMiLCJpc1B1bXBraW4iLCJpc0xldHR1Y2UiLCJyZXNldEN1cnJlbnRGZWF0dXJlIiwiYXRTcHJvdXQiLCJhdFR5cGUiLCJTUFJPVVQiLCJhdFNvaWwiLCJTT0lMIiwidHJ5UGxhbnQiLCJzZXRGZWF0dXJlVHlwZSIsImFuaW1hdGVQbGFudCIsIm9yaWdpbmFsRmVhdHVyZVR5cGVfIiwiY3VycmVudEZlYXR1cmVUeXBlXyIsIm9yaWdpbmFsRmVhdHVyZVR5cGUiLCJpc1NvaWwiLCJpc1Nwcm91dCIsInNwcml0ZU1hcCIsInNoZWV0Um93cyIsInNxdWFyZVNpemUiLCJhc3NldExpc3QiLCJnZXRCYWNrZ3JvdW5kVGlsZUluZm8iLCJhc3NldFVybCIsInNoZWV0IiwiZ2V0RGltZW5zaW9uc0ZvclNoZWV0IiwiY29sdW1uIiwiYWRkUGFpbnQiLCJzZXRDb2xvciIsImRyYXdBc3NldHMiLCJyZW1vdmVQYWludCIsInJlc2V0VGlsZSIsInR1cm5MZWZ0IiwiZ2V0UGVnbWFuRCIsImFuaW1hdGVkQ2FyZGluYWxUdXJuIiwidGFrZVBhaW50Iiwic2V0QnVja2V0VmlzaWJpbGl0eSIsImdldEJ1Y2tldFZpc2liaWxpdHkiLCJyZWRyYXdCdWNrZXRUaWxlcyIsImdldFNwcml0ZU1hcCIsImdldEFzc2V0TGlzdCIsImFzc2V0SWQiLCJjb2xvciIsImdldENvbG9yIiwiZ2V0QXNzZXRJZCIsImRpcmVjdGlvbiIsImlzVmlzaWJsZSIsImdldFgiLCJnZXRZIiwiZ2V0RGlyZWN0aW9uIiwiZ2V0SWQiLCJnZXRJc1Zpc2libGUiLCJzZXRYIiwic2V0WSIsInNldERpcmVjdGlvbiIsInNldElzVmlzaWJsZSIsImdyaWRfIiwic3RhdGljR3JpZHMiLCJnZXRBbGxTdGF0aWNHcmlkcyIsImNsb25lR3JpZCIsImdldEFsbENlbGxzIiwicmVkdWNlIiwiY29uY2F0IiwidXNlR3JpZFdpdGhJZCIsImhhc011bHRpcGxlUG9zc2libGVHcmlkcyIsIk1hemVDb250cm9sbGVyIiwiTWF6ZU1hcCIsImNlbGxzIiwiZHJhd01hcCIsInN1YnR5cGVzIiwidXRpbHMiLCJzdGVwU3BlZWQiLCJzdWJ0eXBlIiwiYW5pbWF0aW9uc0NvbnRyb2xsZXIiLCJwZWdtYW5Db250cm9sbGVyIiwiTUFaRV9IRUlHSFQiLCJNQVpFX1dJRFRIIiwiUEFUSF9XSURUSCIsIlBFR01BTl9IRUlHSFQiLCJQRUdNQU5fV0lEVEgiLCJQRUdNQU5fWF9PRkZTRVQiLCJQRUdNQU5fWV9PRkZTRVQiLCJTVkdfV0lEVEgiLCJTVkdfSEVJR0hUIiwibWV0aG9kcyIsInJlYmluZE1ldGhvZHMiLCJza2luSWQiLCJsb2FkTGV2ZWxfIiwicGxheUF1ZGlvT25GYWlsdXJlIiwiZ2V0VGVzdFJlc3VsdHMiLCJpbml0V2l0aFN2ZyIsInNlcmlhbGl6ZWRNYXplIiwiaW5pdGlhbERpcnQiLCJmYXN0R2V0TmVjdGFyQW5pbWF0aW9uIiwiYWN0aW9uU3BlZWRTY2FsZSIsIm5lY3RhciIsInN2Z1dpZHRoIiwic3ZnSGVpZ2h0IiwicmVzZXREaXJ0SW1hZ2VzIiwiZ3JpZE51bWJlclRvUG9zaXRpb25fIiwiZHJhd0hpbnRQYXRoIiwiam9pbiIsInNldFBlZ21hblgiLCJzZXRQZWdtYW5ZIiwic2V0UGVnbWFuRCIsImdldEFsbFBlZ21hbklkcyIsImlzRGVmYXVsdFBlZ21hbiIsInNob3dQZWdtYW4iLCJoaWRlUGVnbWFuIiwicmVzZXRUaWxlc18iLCJhbmltYXRlZEZpbmlzaCIsInNjaGVkdWxlRGFuY2UiLCJhbmltYXRlZE1vdmUiLCJzY2hlZHVsZU1vdmUiLCJhbmltYXRlZFR1cm4iLCJzY2hlZHVsZVR1cm4iLCJzaW1wbGVUdXJuIiwiYW5pbWF0ZWRGYWlsIiwiY3JhY2tTdXJyb3VuZGluZ0ljZSIsInNjaGVkdWxlV2FsbEhpdCIsInNjaGVkdWxlT2JzdGFjbGVIaXQiLCJhbmltYXRlZExvb2siLCJzY2hlZHVsZUxvb2siLCJzY2hlZHVsZURpcnRDaGFuZ2VfIiwiYW1vdW50Iiwic291bmQiLCJzY2hlZHVsZUZpbGwiLCJzY2hlZHVsZURpZyIsImdldFBlZ21hbiIsImdldE9yQ3JlYXRlUGVnbWFuIiwiYWRkUGVnbWFuIiwiY3JlYXRlQW5kRGlzcGxheVBlZ21hbiIsImhpZGVEZWZhdWx0UGVnbWFuIiwibWF6ZSIsInN2ZyIsImNyZWF0ZUFuaW1hdGlvbnNfIiwiaWRsZVBlZ21hbkFuaW1hdGlvbiIsImNyZWF0ZVBlZ21hbkFuaW1hdGlvbl8iLCJ0eXBlIiwicGVnbWFuSW1hZ2UiLCJudW1Db2xQZWdtYW4iLCJpZGxlUGVnbWFuQ29sIiwibnVtUm93UGVnbWFuIiwiaWRsZVBlZ21hblJvdyIsInBlZ21hbklkIiwidXBkYXRlUGVnbWFuQW5pbWF0aW9uXyIsImFuaW1hdGlvblJvdyIsImNlbGVicmF0ZUFuaW1hdGlvbiIsImNlbGVicmF0ZVBlZ21hbkNvbCIsImNlbGVicmF0ZVBlZ21hblJvdyIsIndhbGxQZWdtYW5BbmltYXRpb24iLCJoaXR0aW5nV2FsbEFuaW1hdGlvbiIsImhpdHRpbmdXYWxsQW5pbWF0aW9uRnJhbWVOdW1iZXIiLCJoaXR0aW5nV2FsbFBlZ21hbkNvbCIsImhpdHRpbmdXYWxsUGVnbWFuUm93IiwibW92ZVBlZ21hbkFuaW1hdGlvbiIsIm1vdmVQZWdtYW5BbmltYXRpb25GcmFtZU51bWJlciIsImRhbmNlT25Mb2FkIiwic3R5bGUiLCJkaXNwbGF5IiwicGFyZW50Tm9kZSIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwibG9vayIsImdldFBlZ21hbkljb24iLCJnZXRQZWdtYW5GcmFtZU9mZnNldFlfIiwic2NoZWR1bGVTaGVldGVkTW92ZW1lbnRfIiwiYXBwcm9hY2hpbmdHb2FsQW5pbWF0aW9uIiwidXBkYXRlU3Vycm91bmRpbmdUaWxlc18iLCJsYXJnZXJPYnN0YWNsZUFuaW1hdGlvblRpbGVzIiwib2JzdGFjbGVBbmltYXRpb24iLCJub25EaXNhcHBlYXJpbmdQZWdtYW5IaXR0aW5nT2JzdGFjbGUiLCJzY2hlZHVsZUxvb2tTdGVwXyIsInN0b3BJZGxpbmciLCJnb2FsQW5pbWF0aW9uIiwidHVybkFmdGVyVmljdG9yeSIsInRyYW5zcGFyZW50VGlsZUVuZGluZyIsInNldFRpbGVUcmFuc3BhcmVudF8iLCJzZXRQZWdtYW5UcmFuc3BhcmVudF8iLCJiZWdpbkVsZW1lbnQiLCJzcHJpdGVJbmRleEZvckRpcnQiLCJSZWZsZWN0IiwiRnVuY3Rpb24iLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIk51bWJlciIsImluaXQiLCJfZXZlbnRzIiwiX2V2ZW50c0NvdW50IiwiX21heExpc3RlbmVycyIsImRlZmF1bHRNYXhMaXN0ZW5lcnMiLCJuZXdMaXN0ZW5lciIsImxpc3RlbmVyIiwidW5zaGlmdCIsIndhcm5lZCIsIlN0cmluZyIsIm5hbWUiLCJlbWl0dGVyIiwiY291bnQiLCJjb25zb2xlIiwid2FybiIsImZpcmVkIiwidGFyZ2V0IiwicmVtb3ZlTGlzdGVuZXIiLCJ3cmFwRm4iLCJzZXQiLCJSYW5nZUVycm9yIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRNYXhMaXN0ZW5lcnMiLCJnZXRNYXhMaXN0ZW5lcnMiLCJlcnJvciIsIm1lc3NhZ2UiLCJjb250ZXh0IiwiYWRkTGlzdGVuZXIiLCJvbiIsInByZXBlbmRMaXN0ZW5lciIsIm9uY2UiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwic2hpZnQiLCJwb3AiLCJvZmYiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJsaXN0ZW5lcnMiLCJyYXdMaXN0ZW5lcnMiLCJsaXN0ZW5lckNvdW50IiwiZXZlbnROYW1lcyIsImJlZV8iLCJjbG91ZGVkXyIsInJlc2V0Q2xvdWRlZCIsImNsb3VkIiwiY2xvdWRBbmltYXRpb24iLCJob25leSIsImZsb3dlckltYWdlSHJlZl8iLCJzaG93Q2xvdWRfIiwiaGlkZUNsb3VkXyIsInJlZEZsb3dlciIsInB1cnBsZUZsb3dlciIsImRpc3BsYXlDbG91ZEFuaW1hdGlvbl8iLCJzaG91bGRVcGRhdGVJdGVtSW1hZ2UiLCJnZXRCQm94IiwiaGVpZ2h0IiwibG9nIiwibGlseTEiLCJsYW5kMSIsImlzbGFuZF9zdGFydCIsImlzbGFuZF90b3BSaWdodCIsImlzbGFuZF9ib3RMZWZ0IiwiaXNsYW5kX2JvdFJpZ2h0Iiwid2F0ZXIiLCJsaWx5MiIsImxpbHkzIiwibGlseTQiLCJsaWx5NSIsImljZSIsImNyYWNrZWRfaWNlIiwiZW1wdHkiLCJpc1dhdGVyT3JPdXRPZkJvdW5kcyIsImlzV2F0ZXIiLCJpc09ic3RhY2xlIiwic3VidHlwZV8iLCJzcHJvdXQiLCJzaG93IiwiaGlkZSIsImZyZWV6ZSIsInRvcExlZnQiLCJ0b3BSaWdodCIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsInN0YXJ0c1dpdGgiLCJzdHJva2UiLCJmaWxsIiwibmVpZ2hib3Job29kIiwic2hvd0J1Y2tldHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlIiwicGFpbnRDYW4iLCJnZXRTcHJpdGVEYXRhIiwiY2VsbENvbG9yIiwiY2VudGVyRmlsbCIsImNvbG9yQ2VsbHMiLCJtYWtlR3JpZCIsInRyYW5zZm9ybSIsImdldEdyaWQiLCJwZWdtZW4iLCJDZWxsIiwiQmVlQ2VsbCIsIkhhcnZlc3RlckNlbGwiLCJQbGFudGVyQ2VsbCIsIk5laWdoYm9yaG9vZENlbGwiLCJGYXJtZXIiLCJCZWUiLCJDb2xsZWN0b3IiLCJXb3Jkc2VhcmNoIiwiSGFydmVzdGVyIiwiUGxhbnRlciIsIk5laWdoYm9yaG9vZCJdLCJzb3VyY2VSb290IjoiIn0=