@opcua/for-node-red 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,8 +4,8 @@
4
4
  </style>
5
5
 
6
6
  <script type="text/javascript">
7
- function _0x1768(_0x187382,_0x45898d){const _0x34ce9a=_0x34ce();return _0x1768=function(_0x17686a,_0x1d9ba3){_0x17686a=_0x17686a-0xac;let _0x392f90=_0x34ce9a[_0x17686a];return _0x392f90;},_0x1768(_0x187382,_0x45898d);}(function(_0x2ebf30,_0x23afef){const _0x1cfd8d=_0x1768,_0x506849=_0x2ebf30();while(!![]){try{const _0x60fa70=parseInt(_0x1cfd8d(0x144))/0x1+parseInt(_0x1cfd8d(0x155))/0x2+parseInt(_0x1cfd8d(0x1c0))/0x3+-parseInt(_0x1cfd8d(0x19a))/0x4+-parseInt(_0x1cfd8d(0x1b7))/0x5+-parseInt(_0x1cfd8d(0x10a))/0x6+-parseInt(_0x1cfd8d(0x1d2))/0x7;if(_0x60fa70===_0x23afef)break;else _0x506849['push'](_0x506849['shift']());}catch(_0xd446ff){_0x506849['push'](_0x506849['shift']());}}}(_0x34ce,0xaa641),(function(){'use strict';const _0x2ebf36=_0x1768;function _0x272ff8(_0x2a9310,_0x39b815,_0x34674e,_0x5dbba6){function _0x35d433(_0x343d0d){return _0x343d0d instanceof _0x34674e?_0x343d0d:new _0x34674e(function(_0x7fe093){_0x7fe093(_0x343d0d);});}return new(_0x34674e||(_0x34674e=Promise))(function(_0xb3e90e,_0x5231ad){const _0x15c94c=_0x1768;function _0x89ddef(_0x3abc17){try{_0x4e7ee2(_0x5dbba6['next'](_0x3abc17));}catch(_0xf27835){_0x5231ad(_0xf27835);}}function _0x304bd8(_0x4d1254){const _0x1e79ed=_0x1768;try{_0x4e7ee2(_0x5dbba6[_0x1e79ed(0x12d)](_0x4d1254));}catch(_0x1798d2){_0x5231ad(_0x1798d2);}}function _0x4e7ee2(_0x2c091d){const _0x355743=_0x1768;_0x2c091d[_0x355743(0xb8)]?_0xb3e90e(_0x2c091d[_0x355743(0x1b4)]):_0x35d433(_0x2c091d['value'])[_0x355743(0x1bb)](_0x89ddef,_0x304bd8);}_0x4e7ee2((_0x5dbba6=_0x5dbba6[_0x15c94c(0x123)](_0x2a9310,_0x39b815||[]))[_0x15c94c(0xe0)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x126d8f,_0x58becd,_0x5f189b){const _0x198390=_0x1768;var _0x18cf20=new Error(_0x5f189b);return _0x18cf20[_0x198390(0x17a)]=_0x198390(0x142),_0x18cf20[_0x198390(0x1d7)]=_0x126d8f,_0x18cf20[_0x198390(0x181)]=_0x58becd,_0x18cf20;};const _0x1189d7=_0x2ebf36(0x13f),_0x40c53a=_0x2ebf36(0x188),_0x223975=_0x2ebf36(0xfc),_0x1ad953=_0x2ebf36(0x19d),_0x2fb43b=_0x2ebf36(0x1c4),_0x30cc3c=_0x2ebf36(0x196),_0x4b6623='ns=0;i=40';var _0x90fa8;(function(_0x43816c){const _0x495a6f=_0x2ebf36;_0x43816c[_0x43816c['Forward']=0x0]=_0x495a6f(0x161),_0x43816c[_0x43816c[_0x495a6f(0x13b)]=0x1]=_0x495a6f(0x13b),_0x43816c[_0x43816c['Both']=0x2]=_0x495a6f(0x1dd),_0x43816c[_0x43816c[_0x495a6f(0x150)]=0x3]='Invalid';}(_0x90fa8||(_0x90fa8={})));var _0x419aac;(function(_0x41be0e){const _0x131232=_0x2ebf36;_0x41be0e[_0x41be0e['Unspecified']=0x0]='Unspecified',_0x41be0e[_0x41be0e[_0x131232(0x17f)]=0x1]=_0x131232(0x17f),_0x41be0e[_0x41be0e[_0x131232(0x1d9)]=0x2]=_0x131232(0x1d9),_0x41be0e[_0x41be0e['Method']=0x4]=_0x131232(0xec),_0x41be0e[_0x41be0e['ObjectType']=0x8]=_0x131232(0x1ba),_0x41be0e[_0x41be0e[_0x131232(0xde)]=0x10]='VariableType',_0x41be0e[_0x41be0e['ReferenceType']=0x20]=_0x131232(0xf4),_0x41be0e[_0x41be0e[_0x131232(0x14b)]=0x40]=_0x131232(0x14b),_0x41be0e[_0x41be0e['View']=0x80]=_0x131232(0xdf);}(_0x419aac||(_0x419aac={})));var _0x19bd4d;(function(_0x3585fc){const _0x16546e=_0x2ebf36;_0x3585fc[_0x3585fc['Object']=0x1]=_0x16546e(0x17f),_0x3585fc[_0x3585fc[_0x16546e(0x1d9)]=0x2]=_0x16546e(0x1d9),_0x3585fc[_0x3585fc[_0x16546e(0xec)]=0x4]=_0x16546e(0xec),_0x3585fc[_0x3585fc[_0x16546e(0x1ba)]=0x8]=_0x16546e(0x1ba),_0x3585fc[_0x3585fc[_0x16546e(0xde)]=0x10]='VariableType',_0x3585fc[_0x3585fc[_0x16546e(0xf4)]=0x20]=_0x16546e(0xf4),_0x3585fc[_0x3585fc[_0x16546e(0x14b)]=0x40]=_0x16546e(0x14b),_0x3585fc[_0x3585fc[_0x16546e(0xdf)]=0x80]=_0x16546e(0xdf);}(_0x19bd4d||(_0x19bd4d={})));var _0x50576b;(function(_0x27c91b){const _0x1c0ea8=_0x2ebf36;_0x27c91b[_0x27c91b[_0x1c0ea8(0xf4)]=0x1]=_0x1c0ea8(0xf4),_0x27c91b[_0x27c91b[_0x1c0ea8(0xe7)]=0x2]=_0x1c0ea8(0xe7),_0x27c91b[_0x27c91b[_0x1c0ea8(0x153)]=0x4]=_0x1c0ea8(0x153),_0x27c91b[_0x27c91b['BrowseName']=0x8]=_0x1c0ea8(0x172),_0x27c91b[_0x27c91b['DisplayName']=0x10]='DisplayName',_0x27c91b[_0x27c91b[_0x1c0ea8(0xeb)]=0x20]='TypeDefinition';}(_0x50576b||(_0x50576b={})));function _0xebfb26(_0x4c7a13){const _0x44f8b2=_0x2ebf36;switch(_0x4c7a13){case _0x44f8b2(0xc1):return _0x1189d7;case _0x44f8b2(0x12f):return _0x1ad953;case _0x44f8b2(0x1c3):return _0x223975;case _0x44f8b2(0xea):return _0x2fb43b;case'HasSubtype':return _0x30cc3c;case _0x44f8b2(0x186):return _0x4b6623;}}const _0x220512=_0x424cec=>{const _0x566619=_0x2ebf36;switch(_0x424cec[_0x566619(0x146)]){case _0x566619(0x17f):if(_0x424cec[_0x566619(0xe6)]===_0x1189d7);if(_0x424cec['typeDefinition']===_0x40c53a||_0x424cec[_0x566619(0xe6)]==='i=61')return{'icon':_0x566619(0x100),'color':_0x566619(0x1eb)};return{'icon':_0x566619(0x1ae),'color':'SeaGreen'};case _0x566619(0x1d9):if(_0x424cec[_0x566619(0xe6)]===_0x223975)return{'icon':_0x566619(0xba),'color':_0x566619(0xda)};else return _0x424cec[_0x566619(0xe6)]===_0x1ad953?{'icon':'fa-list-alt','color':'DodgerBlue'}:{'icon':'fa-list-alt','color':_0x566619(0x14a)};case'Method':return{'icon':'fa-cog','color':_0x566619(0x1db)};case _0x566619(0x1ba):return{'icon':_0x566619(0x1ae),'color':_0x566619(0xe5)};case'VariableType':return{'icon':_0x566619(0x1a8),'color':_0x566619(0xe5)};case _0x566619(0x14b):return{'icon':'fa-text-width','color':'CadetBlue'};}return{'icon':_0x566619(0x1e2),'color':_0x566619(0xe1)};},_0x28bf6f=(_0x320ab2,_0x519778,_0x3ea5be)=>_0x272ff8(void 0x0,[_0x320ab2,_0x519778,_0x3ea5be],void 0x0,function*({endpointNode:_0xb8bd9d,endpoint:_0x34862f,baseUrl:_0x57cf53},_0x185868,_0x1d3315){const _0x5d9368=_0x2ebf36,_0x3d7e79=_0x57cf53+'/opcua-for-node-red',_0x1b9390=_0x3d7e79+'/browse',_0xb11e25=Object['assign'](Object[_0x5d9368(0xc2)]({},_0x1d3315),{'nodeId':_0x185868,'resultMask':0x3f}),_0x152d3c=yield fetch(_0x1b9390,{'method':_0x5d9368(0xb7),'body':JSON[_0x5d9368(0xd0)]({'endpointNode':_0xb8bd9d,'endpoint':_0x34862f,'browseDescription':_0xb11e25}),'headers':{'Content-Type':_0x5d9368(0x1e8)}});if(_0x152d3c[_0x5d9368(0x163)]!==0xc8)return console[_0x5d9368(0x184)](_0x5d9368(0x158),_0x152d3c[_0x5d9368(0x163)],_0x152d3c[_0x5d9368(0x152)]),{'references':[]};const _0x20031e=yield _0x152d3c[_0x5d9368(0x180)](),_0x2e0a6c=_0x20031e['browseResult'][_0x5d9368(0x130)]||[];return{'references':_0x2e0a6c};}),_0x2b28f7={'referenceTypeId':_0xebfb26(_0x2ebf36(0xea)),'includeSubtypes':!![],'browseDirection':_0x90fa8[_0x2ebf36(0x161)],'nodeClassMask':_0x419aac[_0x2ebf36(0x1d9)]|_0x419aac[_0x2ebf36(0x17f)]|_0x419aac[_0x2ebf36(0xec)],'resultMask':0x3f},_0xddaaf4={'referenceTypeId':_0xebfb26(_0x2ebf36(0xc1)),'includeSubtypes':!![],'browseDirection':_0x90fa8[_0x2ebf36(0x161)],'nodeClassMask':_0x419aac[_0x2ebf36(0x1d9)]|_0x419aac[_0x2ebf36(0x17f)]|_0x419aac[_0x2ebf36(0xec)],'resultMask':0x3f},_0x481ecc=(_0x2197aa,_0x1a7af7)=>_0x272ff8(void 0x0,[_0x2197aa,_0x1a7af7],void 0x0,function*({endpointNode:_0x2bac1c,endpoint:_0x49e61d,baseUrl:_0xf0e07d},{nodeId:_0x4dcb94,rootNodeId:_0x25ae87,isType:_0x3990af}){const _0x2cf79d=_0x2ebf36,_0x3d909d=_0xf0e07d+_0x2cf79d(0x1e1),_0x1183cd=_0x3d909d+_0x2cf79d(0xaf),_0xbde1b8=yield fetch(_0x1183cd,{'method':_0x2cf79d(0xb7),'body':JSON['stringify']({'endpointNode':_0x2bac1c,'endpoint':_0x49e61d,'nodeId':_0x4dcb94,'rootNodeId':_0x25ae87,'isType':_0x3990af}),'headers':{'Content-Type':_0x2cf79d(0x1e8)}});if(_0xbde1b8[_0x2cf79d(0x163)]!==0xc8)return null;const _0x44e262=yield _0xbde1b8[_0x2cf79d(0x180)]();return _0x44e262['browsePath'];}),_0x936839=(_0x551cda,_0x2a9a0f)=>{const _0x5592c1=_0x2ebf36;if(_0x551cda[_0x5592c1(0x1d6)]!==_0x5592c1(0x114))return _0x551cda[_0x5592c1(0x1e4)];switch(_0x2a9a0f){case _0x5592c1(0x167):return _0x551cda[_0x5592c1(0x16d)];case _0x5592c1(0x108):return _0x551cda['bp_aliased']||_0x551cda[_0x5592c1(0x16d)];case _0x5592c1(0xb4):return _0x551cda['nodeId_aliased']||_0x551cda[_0x5592c1(0x1cc)];case _0x5592c1(0xf1):return _0x551cda[_0x5592c1(0x1cc)];default:case _0x5592c1(0x1d5):return _0x551cda[_0x5592c1(0x1d5)];}},_0x2171ff=_0x1d8581=>{const _0x43713e=_0x2ebf36;if(_0x1d8581[_0x43713e(0x1d6)]!=='Good')return _0x43713e(0xf7)+_0x1d8581[_0x43713e(0x1d6)];else{let _0x4db195=[];return _0x4db195[_0x43713e(0x192)](_0x43713e(0x18e)+_0x1d8581['nodeId']),_0x4db195['push'](_0x43713e(0xe2)+_0x1d8581[_0x43713e(0x16d)]),_0x4db195[_0x43713e(0x192)](_0x43713e(0x11c)+_0x419aac[_0x1d8581[_0x43713e(0x146)]]),_0x1d8581[_0x43713e(0x1cc)]&&_0x4db195[_0x43713e(0x192)](_0x43713e(0x185)+_0x1d8581[_0x43713e(0x1cc)]),_0x1d8581['nodeId_aliased']&&_0x4db195[_0x43713e(0x192)](_0x43713e(0x1bf)+_0x1d8581[_0x43713e(0x13c)]),_0x1d8581[_0x43713e(0x16d)]&&_0x4db195[_0x43713e(0x192)]('aliased\x20browsePath:\x20'+_0x1d8581['bp_aliased']),_0x4db195[_0x43713e(0xf2)]('\x0a');}};function _0x10e0b3(_0x70182c){const _0x7fac83=_0x2ebf36;if(_0x70182c['match'](/^nsu=/))return _0x7fac83(0xf1);if(_0x70182c[_0x7fac83(0x1bd)](/^(ns=.*;)?(i|b|s|g)=/))return _0x7fac83(0x1d5);if(_0x70182c['match'](/^nsa=/))return _0x7fac83(0xb4);if(_0x70182c['match'](/^(\/|\.)[0-9]+:/))return _0x7fac83(0x167);if(_0x70182c['match'](/^(\/|\.).*:/))return _0x7fac83(0x167);}function _0x1051c2(_0x1464d3){const _0x42f5bf=_0x2ebf36,_0x2a5b7c=_0x10e0b3(_0x1464d3);switch(_0x2a5b7c){case _0x42f5bf(0x1d5):return'n';case _0x42f5bf(0xb4):return'na';case _0x42f5bf(0xf1):return _0x42f5bf(0x115);case _0x42f5bf(0x167):return'b';case'aliasedBrowsePath':return'ab';default:return't';}}function _0x50d45b(_0x51f280){const _0x10e43c=_0x2ebf36;let _0x3a863e;switch(_0x51f280){case'n':_0x3a863e=_0x10e43c(0x1d5);break;case'na':_0x3a863e=_0x10e43c(0xb4);break;case _0x10e43c(0x115):_0x3a863e=_0x10e43c(0xf1);break;case'b':_0x3a863e='browsePath';break;case'ab':_0x3a863e=_0x10e43c(0x108);break;}return _0x3a863e;}const _0x1d12d6=(_0x3033f8,_0x546a09)=>_0x272ff8(void 0x0,[_0x3033f8,_0x546a09],void 0x0,function*({endpointNode:_0x504f7b,endpoint:_0x2f26b9,baseUrl:_0xf8db95},_0x3186c0){const _0x5af9a4=_0x2ebf36,_0x91f2bc=_0xf8db95+_0x5af9a4(0x1e1),_0x5a6f61=_0x91f2bc+_0x5af9a4(0x1a0),_0x86ecc8=_0x504f7b['id'],_0x315d92=RED[_0x5af9a4(0xfd)]['node'](_0x86ecc8);console[_0x5af9a4(0x184)](_0x315d92[_0x5af9a4(0xb5)]),_0x315d92['namespaceAliases'];const _0x397ac9=_0x504f7b[_0x5af9a4(0xb5)],_0x1d2d8=yield fetch(_0x5a6f61,{'method':_0x5af9a4(0xb7),'body':JSON[_0x5af9a4(0xd0)]({'endpointNode':_0x504f7b,'endpoint':_0x2f26b9,'nodeId':_0x3186c0,'namespaceAliases':_0x397ac9}),'headers':{'Content-Type':_0x5af9a4(0x1e8)}}),_0xb64e27=yield _0x1d2d8[_0x5af9a4(0x180)]();return{'json':_0xb64e27,'data':_0x1d2d8};}),_0x2f378e=(_0x4a67b,_0x5ec53f,_0x1ebcc1,_0x4ce40f)=>_0x272ff8(void 0x0,[_0x4a67b,_0x5ec53f,_0x1ebcc1,_0x4ce40f],void 0x0,function*({endpointNode:_0x1e153d,endpoint:_0x4ac255,baseUrl:_0x120ba9},_0x3882cd,_0x452ac0,_0x38c899){const _0x3434f1=_0x2ebf36,_0x343a6d=_0x452ac0[_0x3434f1(0xb6)](),{json:_0x1d8e9e,data:_0x49ec39}=yield _0x1d12d6({'endpointNode':_0x1e153d,'endpoint':_0x4ac255,'baseUrl':_0x120ba9},_0x343a6d),_0x1f3c8e=(_0x52c57c,_0x459a31)=>{const _0x5dbff3=_0x3434f1;_0x38c899[_0x5dbff3(0x12a)](_0x52c57c)[_0x5dbff3(0x13a)](_0x5dbff3(0x11d))['addClass'](_0x459a31),_0x38c899[_0x5dbff3(0xc5)](),setTimeout(()=>{const _0x544475=_0x5dbff3;_0x38c899['removeClass'](_0x459a31),_0x38c899[_0x544475(0x177)]();},0xbb8);};if(_0x49ec39[_0x3434f1(0x163)]!==0xc8)return _0x1f3c8e('!!failure!!'+_0x343a6d,_0x3434f1(0x13d)),![];else{if(_0x1d8e9e[_0x3434f1(0x1d6)]['match'](/Good/)){const _0x49de28=_0x2171ff(_0x1d8e9e);_0x452ac0['attr']('title',_0x49de28);const _0x2d693f=_0x936839(_0x1d8e9e,_0x3882cd);return _0x452ac0['val'](_0x2d693f),_0x452ac0[_0x3434f1(0x1e5)](_0x3434f1(0xb2)),_0x1f3c8e(_0x3434f1(0x114),'ok'),!![];}else return _0x452ac0[_0x3434f1(0xb6)](''+_0x343a6d),_0x1f3c8e(_0x1d8e9e[_0x3434f1(0x1d6)]+'\x20'+_0x49ec39[_0x3434f1(0x152)],'failure'),![];}});function _0x4ba537(_0x241e18,_0x4b1ed8){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0x39ce0a=_0x1768,_0x5ea7e1=_0x241e18[_0x39ce0a(0x1c5)](_0x39ce0a(0x1b4)),_0x467679=yield _0x28bf6f(_0x4b1ed8,_0x5ea7e1,_0x2b28f7),_0x1a3e52=yield _0x28bf6f(_0x4b1ed8,_0x5ea7e1,_0xddaaf4);return{'references':[..._0x467679[_0x39ce0a(0x130)],..._0x1a3e52[_0x39ce0a(0x130)]]};});}const _0x1363f2={'referenceTypeId':_0xebfb26('HasSubtype'),'includeSubtypes':!![],'browseDirection':_0x90fa8[_0x2ebf36(0x161)],'nodeClassMask':_0x419aac['ReferenceType']|_0x419aac['ObjectType']|_0x419aac[_0x2ebf36(0x14b)]|_0x419aac[_0x2ebf36(0xde)],'resultMask':0x3f};function _0x556799(_0x1822fa,_0x98af2f){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0x385fe7=_0x1768,_0x1cc142=_0x1822fa[_0x385fe7(0x1c5)](_0x385fe7(0x1b4)),_0x138e2b=yield _0x28bf6f(_0x98af2f,_0x1cc142,_0x1363f2);return _0x138e2b;});}const _0x1bab68=_0x4930b6=>{const _0x511efa=_0x2ebf36;var _0x5d6c76,_0x437001,_0x1212ec,_0x7853e4;if(!_0x4930b6||!_0x4930b6[_0x511efa(0x1d5)]){const _0x4c8a63=$('<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>');return _0x4c8a63;}const _0x5219ef=_0x4930b6[_0x511efa(0x1d5)][_0x511efa(0xf3)](),_0x444b89=((_0x5d6c76=_0x4930b6[_0x511efa(0xb1)])===null||_0x5d6c76===void 0x0?void 0x0:_0x5d6c76[_0x511efa(0x12a)])||((_0x437001=_0x4930b6['browseName'])===null||_0x437001===void 0x0?void 0x0:_0x437001[_0x511efa(0x17a)])||_0x4930b6[_0x511efa(0x1d5)][_0x511efa(0xf3)](),{icon:_0x52ab7a,color:_0xe5d837}=_0x220512(_0x4930b6),_0x14c363='('+_0x4930b6[_0x511efa(0x1d5)]['toString']()+')\x20'+(((_0x1212ec=_0x4930b6['browseName'])===null||_0x1212ec===void 0x0?void 0x0:_0x1212ec[_0x511efa(0x17a)])||((_0x7853e4=_0x4930b6['displayName'])===null||_0x7853e4===void 0x0?void 0x0:_0x7853e4[_0x511efa(0x12a)])||''),_0x4e75c8=$(_0x511efa(0x1ec)+_0x4930b6[_0x511efa(0x1d5)][_0x511efa(0xf3)]()+_0x511efa(0x179)+_0x14c363+_0x511efa(0x157)+_0x52ab7a+_0x511efa(0x189)+_0xe5d837+_0x511efa(0x12e)+_0x444b89+_0x511efa(0x1ac));return _0x4e75c8[_0x511efa(0x13a)](_0x511efa(0x1ed)),_0x4e75c8[_0x511efa(0x1c5)](_0x511efa(0x1b4),_0x5219ef),_0x4e75c8[_0x511efa(0x1c5)](_0x511efa(0x1a9),_0x4930b6),_0x4e75c8;},_0x1682e3=(_0xb9aa69,_0x4109a8)=>{const _0x4a14ec=_0x2ebf36;return _0x4109a8[_0x4a14ec(0x113)](_0x4a14ec(0x1e3)+_0xb9aa69+'\x22]');},_0x2205a9=(_0x51458f,_0x1e7119)=>{const _0x52684b=_0x2ebf36;_0x51458f['$tree'][_0x52684b(0x113)](_0x52684b(0x11e))['removeClass'](_0x52684b(0x1c7)),_0x1e7119[_0x52684b(0x113)](_0x52684b(0x1d8))[_0x52684b(0x13a)](_0x52684b(0x1c7));},_0x588472=(_0x38e394,_0x52e908,_0x12d613)=>_0x272ff8(void 0x0,void 0x0,void 0x0,function*(){const _0x5bcb4a=_0x2ebf36;let _0x42399b=_0x12d613['children'](_0x5bcb4a(0x1ad));_0x52e908['relativePath'][_0x5bcb4a(0xcf)]||[];const _0x4bc0a6=_0x52e908['nodeIds']||[];if(_0x4bc0a6[_0x5bcb4a(0x136)]===0x0)return;for(const _0xc29705 of _0x4bc0a6){_0x42399b['hasClass']('expandable')&&(yield _0x2ee4e6(_0x38e394,_0x42399b));const _0x2039b2=_0x1682e3(_0xc29705,_0x42399b);if(_0x2039b2[_0x5bcb4a(0x136)]===0x0)return;_0x42399b=_0x2039b2;}_0x2205a9(_0x38e394,_0x42399b),_0x2dc544(_0x38e394[_0x5bcb4a(0xca)],_0x42399b);});function _0x2dc544(_0x282ed6,_0x220954){const _0x5d8f25=_0x2ebf36,_0x72605=_0x220954[_0x5d8f25(0x129)]()[_0x5d8f25(0xfe)],_0x45ba9c=_0x282ed6['scrollTop']();if(_0x45ba9c==undefined)return;const _0x29a716=_0x45ba9c+_0x72605-_0x282ed6[_0x5d8f25(0xae)]()/0x2+_0x220954[_0x5d8f25(0xae)]()/0x2;_0x282ed6[_0x5d8f25(0x137)]({'scrollTop':_0x29a716},0x1f4);}const _0x32cc68=(_0x232e52,_0x3c60a1)=>_0x272ff8(void 0x0,void 0x0,void 0x0,function*(){const _0x25105b=_0x2ebf36,_0x1a11f9=_0x232e52[_0x25105b(0xbc)][_0x25105b(0xb6)](),_0x4a48e2={'nodeId':_0x1a11f9,'rootNodeId':_0x3c60a1[_0x25105b(0x1d5)],'isType':_0x232e52[_0x25105b(0x173)]['isTypeRef']||![]},_0x24c4aa=_0x538678(_0x232e52),_0x3e1a73=yield _0x481ecc(_0x24c4aa,_0x4a48e2);if(!_0x3e1a73)return;yield _0x588472(_0x232e52,_0x3e1a73,_0x232e52[_0x25105b(0x14c)]);});function _0x5a8cbe(_0x3fa24e,_0x44b34a,_0x732885,_0x3b0a24){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0xb8a746=_0x1768;if(_0x44b34a[_0xb8a746(0x16f)](_0xb8a746(0x18c))){console[_0xb8a746(0x184)](_0xb8a746(0x195));return;}if(_0x44b34a[_0xb8a746(0x16f)]('loading')){console[_0xb8a746(0x184)](_0xb8a746(0x11b));return;}_0x44b34a[_0xb8a746(0x13a)](_0xb8a746(0xdb)),_0x44b34a[_0xb8a746(0xd3)](_0xb8a746(0xfb));try{_0x44b34a[_0xb8a746(0x174)]('ul')[_0xb8a746(0x1a4)]();const {references:_0x48b754}=yield _0x732885(_0x44b34a,_0x3b0a24);_0x48b754[_0xb8a746(0xc0)]((_0x2ebd3c,_0x5ad73d)=>{const _0x11fa4=_0xb8a746;var _0x37dd92,_0x539d3b;return(((_0x37dd92=_0x2ebd3c[_0x11fa4(0xd8)])===null||_0x37dd92===void 0x0?void 0x0:_0x37dd92['name'])||'')['localeCompare'](((_0x539d3b=_0x5ad73d['browseName'])===null||_0x539d3b===void 0x0?void 0x0:_0x539d3b[_0x11fa4(0x17a)])||'');});for(const _0x3b7acb of _0x48b754){if(_0x3fa24e['options'][_0xb8a746(0x11f)]&&!_0x3fa24e['options'][_0xb8a746(0x11f)](_0x3b7acb))continue;const _0x2050ae=_0x1bab68(_0x3b7acb);_0x44b34a[_0xb8a746(0x174)]('ul')[_0xb8a746(0xd3)](_0x2050ae);}_0x44b34a[_0xb8a746(0x13a)](_0xb8a746(0x18c));}catch(_0x507037){_0x44b34a[_0xb8a746(0x174)]('ul')[_0xb8a746(0xd3)](_0xb8a746(0xc7)+_0x507037[_0xb8a746(0x1ce)]+_0xb8a746(0x199)),console[_0xb8a746(0x184)](_0xb8a746(0x164),_0x507037);}_0x44b34a[_0xb8a746(0x113)]('.spinner')[_0xb8a746(0xdc)](),_0x44b34a['removeClass']('loading');});}function _0x538678(_0x2a4ec9){const _0x551922=_0x2ebf36,_0xfde93f={'baseUrl':_0x2a4ec9[_0x551922(0x173)][_0x551922(0x139)],'endpointNode':typeof _0x2a4ec9['options'][_0x551922(0x16e)]===_0x551922(0x1e6)?_0x2a4ec9[_0x551922(0x173)][_0x551922(0x16e)]():_0x2a4ec9[_0x551922(0x173)][_0x551922(0x16e)],'endpoint':typeof _0x2a4ec9[_0x551922(0x173)][_0x551922(0x191)]===_0x551922(0x1e6)?_0x2a4ec9[_0x551922(0x173)][_0x551922(0x191)]():_0x2a4ec9[_0x551922(0x173)][_0x551922(0x191)]};return _0xfde93f;}function _0x2ee4e6(_0x2d524f,_0x536d5b){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0x1437f7=_0x1768;if(_0x536d5b[_0x1437f7(0x16f)](_0x1437f7(0x18c))){_0x536d5b['removeClass']('expandable')[_0x1437f7(0x13a)](_0x1437f7(0xf5)),_0x536d5b['children']('ul')[_0x1437f7(0x119)]();return;}const _0x4a4cc2=_0x538678(_0x2d524f),_0x315b45=!_0x2d524f[_0x1437f7(0x173)][_0x1437f7(0xcc)]?_0x4ba537:_0x556799;try{yield _0x5a8cbe(_0x2d524f,_0x536d5b,_0x315b45,_0x4a4cc2),_0x536d5b[_0x1437f7(0x1ca)](_0x1437f7(0x1ed))['addClass'](_0x1437f7(0xf5));}catch(_0x11284d){_0x536d5b[_0x1437f7(0x1ca)](_0x1437f7(0x1ed))[_0x1437f7(0x13a)](_0x1437f7(0xf5)),console['log'](_0x1437f7(0x1d7),_0x11284d);}});}const _0x49fcf3={'browseName':{'namespaceIndex':0x0,'name':_0x2ebf36(0x104)},'nodeClass':_0x2ebf36(0x17f),'nodeId':_0x2ebf36(0xcb),'displayName':{'text':_0x2ebf36(0x104)},'typeDefinition':_0x40c53a},_0x289a71=()=>{const _0x2dff5d=_0x2ebf36;$[_0x2dff5d(0x126)](_0x2dff5d(0x17b),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x49fcf3,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0x2d2895=_0x1768,_0x543ad4=this;if(_0x543ad4[_0x2d2895(0x1be)]==undefined){const _0x17c597=typeof _0x543ad4[_0x2d2895(0x173)][_0x2d2895(0x128)]===_0x2d2895(0x1e6)?_0x543ad4[_0x2d2895(0x173)][_0x2d2895(0x128)]['call'](_0x543ad4):_0x543ad4[_0x2d2895(0x173)]['parentNode'];if(_0x17c597 instanceof Promise){const _0x3c47f8=yield _0x17c597;_0x543ad4['__parentNode']=_0x3c47f8;}else _0x543ad4[_0x2d2895(0x1be)]=_0x17c597;}return _0x543ad4[_0x2d2895(0x1be)]||_0x49fcf3;});},'reset'(){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0x34e6a3=_0x1768,_0xe38425=this,_0x4cd9b2=_0xe38425;_0x4cd9b2[_0x34e6a3(0x1be)]=undefined,_0xe38425[_0x34e6a3(0x14c)]['empty']();const _0x580724=yield this['resolveParentNode'](),_0x12904f=_0x1bab68(_0x580724);_0xe38425[_0x34e6a3(0x14c)][_0x34e6a3(0xd3)](_0x12904f),_0xe38425[_0x34e6a3(0x1ab)]=_0x580724;});},'verify'(_0x13f527){const _0x31d636=_0x2dff5d,_0x5f4fc7=this,_0x15986=_0x538678(_0x5f4fc7);_0x2f378e(_0x15986,_0x13f527,_0x5f4fc7[_0x31d636(0xbc)],_0x5f4fc7[_0x31d636(0x1ea)])['then'](_0x529624=>{const _0x1d79b8=_0x31d636;!_0x529624?_0x5f4fc7[_0x1d79b8(0x15d)][_0x1d79b8(0x13a)]('input-error'):_0x5f4fc7[_0x1d79b8(0x15d)][_0x1d79b8(0x1ca)](_0x1d79b8(0x166));});},'_hideMenu'(_0x4cd336){const _0xd76d30=_0x2dff5d,_0x2b779f=this;$(document)['off'](_0xd76d30(0xe3)),_0x4cd336[_0xd76d30(0x177)](),_0x4cd336[_0xd76d30(0x12c)]({'height':_0xd76d30(0x176)});if(_0x4cd336[_0xd76d30(0xdd)][_0xd76d30(0x1a6)]){var _0x5a02c5=[];_0x4cd336[_0xd76d30(0x113)](_0xd76d30(0x182))['each'](function(){const _0x10bd65=_0xd76d30;$(this)[_0x10bd65(0xbe)]('checked')&&_0x5a02c5[_0x10bd65(0x192)]($(this)[_0x10bd65(0x1c5)](_0x10bd65(0x1b4)));}),_0x4cd336[_0xd76d30(0x1cf)](_0x5a02c5);}_0x2b779f[_0xd76d30(0x15b)]['is'](_0xd76d30(0x1e9))?_0x2b779f['$input'][_0xd76d30(0x1e5)]('focus'):_0x2b779f[_0xd76d30(0x18f)][_0xd76d30(0x1e5)]('focus');},'_createMenu'(_0x3ed40f,_0x133b50,_0x62e832){const _0x9be3ff=_0x2dff5d;var _0x4a133b=this;const _0x4d9cb7=$('<div>')['addClass']('sterfive-typedInput-options\x20sterfive-online-menu');return _0x4d9cb7[_0x9be3ff(0xdd)]=_0x133b50,_0x4d9cb7['callback']=_0x62e832,_0x3ed40f[_0x9be3ff(0x122)](_0x467a54=>{const _0x1d0d02=_0x9be3ff;typeof _0x467a54==='string'&&(_0x467a54={'value':_0x467a54,'label':_0x467a54});var _0x33d0f2=$(_0x1d0d02(0x12b))[_0x1d0d02(0x168)](_0x1d0d02(0x1b4),_0x467a54[_0x1d0d02(0x1b4)])[_0x1d0d02(0x1a7)](_0x4d9cb7);_0x467a54[_0x1d0d02(0x198)]&&_0x33d0f2[_0x1d0d02(0x12a)](_0x467a54['label']);_0x467a54[_0x1d0d02(0x14f)]&&_0x33d0f2[_0x1d0d02(0xbe)](_0x1d0d02(0x14f),_0x467a54[_0x1d0d02(0x14f)]);if(_0x467a54[_0x1d0d02(0x1d1)]){if(_0x467a54['icon'][_0x1d0d02(0xc4)]('<')===0x0)$(_0x467a54[_0x1d0d02(0x1d1)])[_0x1d0d02(0x145)](_0x33d0f2);else _0x467a54[_0x1d0d02(0x1d1)][_0x1d0d02(0xc4)]('/')!==-0x1?$(_0x1d0d02(0x1a1),{'class':_0x1d0d02(0x15f),'style':_0x1d0d02(0x165)+_0x467a54[_0x1d0d02(0x1d1)]+_0x1d0d02(0x10c)+_0x467a54[_0x1d0d02(0x1d1)]+');'})[_0x1d0d02(0x145)](_0x33d0f2):$(_0x1d0d02(0x1a1),{'class':_0x1d0d02(0xbd)+_0x467a54[_0x1d0d02(0x1d1)]})[_0x1d0d02(0x145)](_0x33d0f2);}else _0x33d0f2[_0x1d0d02(0x12c)]({'paddingLeft':_0x1d0d02(0xd5)});!_0x467a54['icon']&&!_0x467a54[_0x1d0d02(0x198)]&&_0x33d0f2[_0x1d0d02(0x12a)](_0x467a54[_0x1d0d02(0x1b4)]);var _0x1e9d37;_0x133b50[_0x1d0d02(0x1a6)]&&(_0x1e9d37=$(_0x1d0d02(0x111))[_0x1d0d02(0x12c)](_0x1d0d02(0x10f),_0x1d0d02(0x1c1))[_0x1d0d02(0x1c5)](_0x1d0d02(0x1b4),_0x467a54[_0x1d0d02(0x1b4)])[_0x1d0d02(0x145)](_0x33d0f2)['on'](_0x1d0d02(0x10d),function(_0x1d6bc1){const _0x46ea23=_0x1d0d02;_0x1d6bc1[_0x46ea23(0x112)]();})),_0x33d0f2['on'](_0x1d0d02(0x103),function(_0x2c3c76){const _0x397ee6=_0x1d0d02;_0x2c3c76[_0x397ee6(0x112)](),_0x2c3c76[_0x397ee6(0x148)](),!_0x133b50['multiple']?(_0x62e832(_0x467a54['value']),_0x4a133b['_hideMenu'](_0x4d9cb7)):_0x1e9d37[_0x397ee6(0xbe)](_0x397ee6(0x190),!_0x1e9d37['prop'](_0x397ee6(0x190)));});}),_0x4d9cb7[_0x9be3ff(0x12c)]({'display':'none'}),_0x4d9cb7['on'](_0x9be3ff(0x1c8),function(_0x34bf75){const _0x36700f=_0x9be3ff;if(_0x34bf75[_0x36700f(0x1b3)]===0x28)_0x34bf75[_0x36700f(0x112)](),$(this)[_0x36700f(0x174)](':focus')[_0x36700f(0xe0)]()['trigger'](_0x36700f(0xf8));else{if(_0x34bf75[_0x36700f(0x1b3)]===0x26)_0x34bf75['preventDefault'](),$(this)['children'](':focus')[_0x36700f(0x109)]()[_0x36700f(0x1e5)](_0x36700f(0xf8));else _0x34bf75[_0x36700f(0x1b3)]===0x1b&&(_0x34bf75[_0x36700f(0x112)](),_0x4a133b[_0x36700f(0x101)](_0x4d9cb7));}_0x34bf75[_0x36700f(0x148)]();}),_0x4d9cb7;},'disarmClick':![],'_showMenu'(_0xe602e9,_0x55eb0b){const _0x4d1308=_0x2dff5d;if(this['disarmClick']){this[_0x4d1308(0x16c)]=![];return;}var _0x1f3fb0=this,_0xc43b42=_0x55eb0b[_0x4d1308(0x171)](),_0x112bf1=_0x55eb0b[_0x4d1308(0xae)](),_0x45e8d2=_0xe602e9[_0x4d1308(0xae)](),_0xdadd79=_0x112bf1+_0xc43b42[_0x4d1308(0xfe)];_0xdadd79+_0x45e8d2-$(document)[_0x4d1308(0x143)]()>$(window)[_0x4d1308(0xae)]()&&(_0xdadd79-=_0xdadd79+_0x45e8d2-$(window)['height']()+0x5),_0xdadd79<0x0&&(_0xe602e9[_0x4d1308(0xae)](_0x45e8d2+_0xdadd79),_0xdadd79=0x0),_0xe602e9[_0x4d1308(0x12c)]({'top':_0xdadd79+'px','left':_0xc43b42[_0x4d1308(0xc9)]+'px'}),_0xe602e9[_0x4d1308(0x1c2)](0x64),this[_0x4d1308(0x132)](function(){const _0xb93e76=_0x4d1308;_0x1f3fb0[_0xb93e76(0xf6)][_0xb93e76(0x13a)]('red-ui-typedInput-focus'),$(document)['on'](_0xb93e76(0xe3),function(_0x2456e9){const _0xfaadd1=_0xb93e76;!$(_0x2456e9[_0xfaadd1(0x1b5)])['closest'](_0xe602e9)['length']&&_0x1f3fb0[_0xfaadd1(0x101)](_0xe602e9),$(_0x2456e9[_0xfaadd1(0x1b5)])[_0xfaadd1(0x1df)](_0x55eb0b)['length']&&(_0x1f3fb0[_0xfaadd1(0x16c)]=!![],_0x2456e9[_0xfaadd1(0x112)]());});});},'_showTypeMenu'(){const _0x34f401=_0x2dff5d,_0x485e86=this;this[_0x34f401(0x19f)](_0x485e86[_0x34f401(0x1b9)],_0x485e86['$combo']),_0x485e86['$dropdown']['hide']();const _0x350026=_0x485e86['selectedMenuItem'];var _0x2e84c7=_0x485e86[_0x34f401(0x1b9)]['find'](_0x34f401(0x147)+_0x350026+'\x27');setTimeout(function(){const _0x167dc8=_0x34f401;_0x2e84c7[_0x167dc8(0x1e5)](_0x167dc8(0xf8));},0x78);},'_initMenu'(){const _0x510087=_0x2dff5d,_0x4b55cf=this;_0x4b55cf[_0x510087(0x18f)][_0x510087(0x168)](_0x510087(0x1bc),-0x1),_0x4b55cf['$selectTrigger']['on']('mousedown.red-ui-typedInput-focus-block',function(_0x560dc7){const _0x1b3a87=_0x510087;_0x560dc7[_0x1b3a87(0x112)]();});_0x4b55cf[_0x510087(0x1b9)]&&_0x4b55cf[_0x510087(0x1b9)][_0x510087(0xdc)]();const _0x53adf7=[{'label':_0x510087(0x12a),'value':'t','title':_0x510087(0xd7),'icon':'<i\x20class=\x22fa\x20fa-font\x22/i>\x20'},{'label':'msg.','value':_0x510087(0x1a3),'title':'node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','icon':_0x510087(0x175)},{'label':_0x510087(0x1a2),'value':'n','icon':_0x510087(0x121)},{'label':_0x510087(0x183),'value':'na','icon':_0x510087(0x1b1)},{'label':'NodeId\x20with\x20namespace\x20Urn','value':_0x510087(0x115),'icon':'<i\x20class=\x22fa\x20fa-id-card\x22/>&nbsp;\x20'},{'label':_0x510087(0x17c),'value':'b','icon':'<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;'},{'label':_0x510087(0x156),'value':'ab','icon':'<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;'}],_0x35e1a4=_0x1051c2(_0x4b55cf['$input'][_0x510087(0xb6)]()),_0x5b11ac=_0x53adf7['find'](_0x4b4b16=>_0x4b4b16[_0x510087(0x1b4)]===_0x35e1a4);_0x4b55cf[_0x510087(0x125)][_0x510087(0x1a4)]()[_0x510087(0xd3)]('<span\x20title='+((_0x5b11ac===null||_0x5b11ac===void 0x0?void 0x0:_0x5b11ac[_0x510087(0x14f)])||'')+_0x510087(0x19b)+((_0x5b11ac===null||_0x5b11ac===void 0x0?void 0x0:_0x5b11ac[_0x510087(0x1d1)])||'')+_0x510087(0x1d4)),_0x4b55cf[_0x510087(0x124)]=_0x35e1a4;const _0x578752=this;_0x4b55cf[_0x510087(0x1b9)]=this['_createMenu'](_0x53adf7,{},_0x59d7ff=>{const _0x1dd5b3=_0x510087,_0xa07335=_0x50d45b(_0x59d7ff);_0xa07335&&_0x578752[_0x1dd5b3(0x18b)](_0xa07335);const _0x472eef=_0x53adf7[_0x1dd5b3(0x113)](_0x25289d=>_0x25289d[_0x1dd5b3(0x1b4)]===_0x59d7ff);_0x4b55cf[_0x1dd5b3(0x124)]=_0x59d7ff,_0x4b55cf[_0x1dd5b3(0x125)][_0x1dd5b3(0x1a4)]()['append'](_0x1dd5b3(0xd4)+((_0x472eef===null||_0x472eef===void 0x0?void 0x0:_0x472eef[_0x1dd5b3(0x14f)])||'')+_0x1dd5b3(0x19b)+((_0x472eef===null||_0x472eef===void 0x0?void 0x0:_0x472eef[_0x1dd5b3(0x1d1)])||'')+_0x1dd5b3(0x1d4));}),_0x4b55cf['$menu']['appendTo'](document[_0x510087(0x1aa)]),_0x4b55cf['$menu']['hide'](),_0x4b55cf[_0x510087(0x18f)]['show']();},'mode'(){const _0xdeb38a=_0x2dff5d,_0x10365b=this;return _0x50d45b(_0x10365b[_0xdeb38a(0x124)]);},'_create'(){const _0x4e91f5=_0x2dff5d,_0x4900bd=this;_0x4900bd[_0x4e91f5(0xbc)]=this[_0x4e91f5(0xee)],_0x4900bd[_0x4e91f5(0xbc)]['css'](_0x4e91f5(0xfa),_0x4e91f5(0x1c1)),_0x4900bd[_0x4e91f5(0x15b)]=_0x4900bd[_0x4e91f5(0xbc)][_0x4e91f5(0x138)]('<div>')[_0x4e91f5(0xe9)]()[_0x4e91f5(0x13a)]('main-wrapper'),_0x4900bd[_0x4e91f5(0x15d)]=$('<div/>'),_0x4900bd[_0x4e91f5(0x15d)][_0x4e91f5(0x13a)](_0x4e91f5(0x1b0)),_0x4900bd[_0x4e91f5(0xbc)][_0x4e91f5(0x149)](_0x4900bd['$combo']),_0x4900bd[_0x4e91f5(0x14d)]=$(_0x4e91f5(0x118))[_0x4e91f5(0x13a)](_0x4e91f5(0x1d0)),_0x4900bd[_0x4e91f5(0x15d)][_0x4e91f5(0xd3)](_0x4900bd[_0x4e91f5(0x14d)]),_0x4900bd[_0x4e91f5(0x14d)][_0x4e91f5(0xd3)](_0x4900bd[_0x4e91f5(0xbc)]),_0x4900bd[_0x4e91f5(0x193)]=$(_0x4e91f5(0x15a)),_0x4900bd[_0x4e91f5(0xbc)][_0x4e91f5(0x187)](_0x4900bd[_0x4e91f5(0x193)]),_0x4900bd[_0x4e91f5(0x193)]['on'](_0x4e91f5(0x103),function(){return _0x272ff8(this,void 0x0,void 0x0,function*(){const _0x33a10f=_0x1768;var _0x3a2198;let _0x59a622=![],_0x4f7b3d;!_0x4900bd[_0x33a10f(0xca)]['is'](_0x33a10f(0x1e9))&&(_0x4900bd[_0x33a10f(0x1ea)][_0x33a10f(0x177)](),_0x4f7b3d=yield _0x4900bd[_0x33a10f(0x14e)](),(_0x4f7b3d!==_0x4900bd[_0x33a10f(0x1ab)]||((_0x3a2198=_0x4900bd[_0x33a10f(0x1ab)])===null||_0x3a2198===void 0x0?void 0x0:_0x3a2198[_0x33a10f(0x1d5)])!==_0x4f7b3d['nodeId'])&&(yield _0x4900bd[_0x33a10f(0x102)]()),_0x59a622=!![]),_0x4900bd[_0x33a10f(0xca)]['toggle'](),_0x59a622&&(yield _0x32cc68(_0x4900bd,_0x4f7b3d));});}),_0x4900bd[_0x4e91f5(0xcd)]=$('<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>'),_0x4900bd[_0x4e91f5(0xbc)][_0x4e91f5(0x187)](_0x4900bd['$verifyBtn']),_0x4900bd[_0x4e91f5(0xcd)]['on']('click',()=>{const _0x59c64b=_0x4900bd['mode']();if(!_0x59c64b)return;this['verify'](_0x59c64b);});const _0x215290=_0x36a216=>_0x272ff8(this,void 0x0,void 0x0,function*(){const _0x44b3d9=_0x4e91f5,_0x576a65=this,_0x379cf9=_0x576a65['mode']();if(!_0x379cf9)return;const _0x5c0238=_0x538678(_0x576a65),{data:_0x4894c1,json:_0x32e30e}=yield _0x1d12d6(_0x5c0238,_0x36a216);if(_0x4894c1[_0x44b3d9(0x163)]!==0xc8)return;if(_0x32e30e[_0x44b3d9(0x1d6)]['match'](/Good/)){const _0x349f6c=_0x936839(_0x32e30e,_0x379cf9);_0x576a65[_0x44b3d9(0xbc)][_0x44b3d9(0xb6)](_0x349f6c),_0x576a65['$input']['trigger']('change');}});{_0x4900bd['$uiSelect']=$('<div>'),_0x4900bd['$input'][_0x4e91f5(0x120)](_0x4900bd[_0x4e91f5(0xf6)]),_0x4900bd['$selectTrigger']=$(_0x4e91f5(0x1a5))[_0x4e91f5(0x145)](_0x4900bd[_0x4e91f5(0xf6)]),$(_0x4e91f5(0xd1))[_0x4e91f5(0x119)](!![])[_0x4e91f5(0x1a7)](_0x4900bd['$selectTrigger']),_0x4900bd['$selectTrigger']['on']('click',function(_0x50901b){const _0x6f73d8=_0x4e91f5;_0x50901b[_0x6f73d8(0x112)](),_0x50901b['stopPropagation'](),_0x4900bd['_showTypeMenu']();}),_0x4900bd[_0x4e91f5(0x18f)]['on'](_0x4e91f5(0x1c8),function(_0x3c158f){const _0x48d129=_0x4e91f5;_0x3c158f[_0x48d129(0x1b3)]===0x28&&_0x4900bd['_showTypeMenu'](),_0x3c158f['stopPropagation']();})['on']('focus',function(){const _0xd2ffaf=_0x4e91f5;_0x4900bd[_0xd2ffaf(0xf6)][_0xd2ffaf(0x13a)]('red-ui-typedInput-focus');})['on'](_0x4e91f5(0xed),function(){const _0x398fb1=_0x4e91f5;_0x4900bd[_0x398fb1(0xf6)][_0x398fb1(0x1ca)](_0x398fb1(0x107));}),_0x4900bd[_0x4e91f5(0x125)]=$(_0x4e91f5(0xd6))['appendTo'](_0x4900bd['$selectTrigger']);}this[_0x4e91f5(0x194)]();!_0x4900bd[_0x4e91f5(0xbc)]['attr'](_0x4e91f5(0x10e))&&_0x4900bd['$input'][_0x4e91f5(0x168)]('placeholder',_0x4e91f5(0x106));_0x4900bd[_0x4e91f5(0x1ea)]=$('<div\x20class=\x22info-text\x22></div>'),_0x4900bd[_0x4e91f5(0x1ea)][_0x4e91f5(0x177)](),_0x4900bd['$combo'][_0x4e91f5(0xd3)](_0x4900bd['$info']),_0x4900bd[_0x4e91f5(0xca)]=$(_0x4e91f5(0x118))[_0x4e91f5(0x13a)](_0x4e91f5(0x17e))[_0x4e91f5(0x177)]()['appendTo'](_0x4900bd['$combo']),_0x4900bd[_0x4e91f5(0x14c)]=$(_0x4e91f5(0x170))['appendTo'](_0x4900bd[_0x4e91f5(0xca)]),this[_0x4e91f5(0x102)]();const _0x5f3e56=(_0x23a495,_0x3c1418)=>{const _0x3a2488=_0x4e91f5,_0x3b920a=0x14,_0x98b6ab=0x14,_0x128afc=_0x23a495['offset'](),_0x213fed=_0x3c1418;if(_0x213fed[_0x3a2488(0x133)]>=_0x128afc[_0x3a2488(0xc9)]&&_0x213fed[_0x3a2488(0x133)]<=_0x128afc[_0x3a2488(0xc9)]+_0x3b920a&&_0x213fed[_0x3a2488(0x1b2)]>=_0x128afc[_0x3a2488(0xfe)]&&_0x213fed[_0x3a2488(0x1b2)]<=_0x128afc[_0x3a2488(0xfe)]+_0x98b6ab)return!![];return![];},_0x491f44=_0x2d1f25=>_0x272ff8(this,void 0x0,void 0x0,function*(){const _0x4f6413=_0x4e91f5;if(_0x2d1f25['hasClass'](_0x4f6413(0x1ed)))_0x2ee4e6(_0x4900bd,_0x2d1f25);else{if(_0x2d1f25['hasClass'](_0x4f6413(0xf5)))_0x2d1f25[_0x4f6413(0x174)]('ul')[_0x4f6413(0x119)](),_0x2d1f25['toggleClass']('expandable\x20expanded');else{if(_0x2d1f25[_0x4f6413(0x174)]('ul')[_0x4f6413(0x174)]()[_0x4f6413(0x136)]>0x0)_0x2d1f25['children']('ul')[_0x4f6413(0x119)](),_0x2d1f25['toggleClass'](_0x4f6413(0x1e0));else;}}});_0x4900bd['$tree']['on']('dblclick','li',function(_0x4e1a53){const _0x5c0472=_0x4e91f5;var _0x27304a,_0x1ad54d;_0x4e1a53[_0x5c0472(0x148)]();let _0x1bf4c8=$(this);if(_0x5f3e56(_0x1bf4c8,_0x4e1a53))_0x491f44(_0x1bf4c8);else{const _0x3c0b30=_0x1bf4c8['data'](_0x5c0472(0x1b4)),_0x2a791d=_0x1bf4c8[_0x5c0472(0x1c5)](_0x5c0472(0x1a9));if(_0x4900bd['options'][_0x5c0472(0x169)]&&!_0x4900bd[_0x5c0472(0x173)][_0x5c0472(0x169)](_0x2a791d))return;_0x4900bd[_0x5c0472(0xbc)]['data'](_0x5c0472(0x1a9),_0x2a791d),((_0x27304a=_0x2a791d[_0x5c0472(0xb1)])===null||_0x27304a===void 0x0?void 0x0:_0x27304a[_0x5c0472(0x12a)])||((_0x1ad54d=_0x2a791d[_0x5c0472(0xd8)])===null||_0x1ad54d===void 0x0?void 0x0:_0x1ad54d[_0x5c0472(0x17a)])||_0x2a791d['nodeId']['toString'](),_0x215290(_0x3c0b30),_0x4900bd[_0x5c0472(0xca)][_0x5c0472(0x177)]();}}),_0x4900bd['$tree']['on'](_0x4e91f5(0x103),'li',function(_0x190964){const _0x18dda6=_0x4e91f5;_0x190964[_0x18dda6(0x148)]();let _0x2c42b4=$(this);_0x5f3e56(_0x2c42b4,_0x190964)&&_0x491f44(_0x2c42b4),_0x2205a9(_0x4900bd,_0x2c42b4);}),$(document)['on'](_0x4e91f5(0x103),function(_0x572017){const _0x263d6d=_0x4e91f5;!$(_0x572017[_0x263d6d(0x1b5)])[_0x263d6d(0x1df)](_0x4900bd[_0x263d6d(0x15d)])['length']&&_0x4900bd[_0x263d6d(0xca)]['hide']();});}});},_0x5de07a=()=>{const _0x280f99=_0x2ebf36,_0x2373a3=$(_0x280f99(0xf9)),_0x82acac=_0x2373a3[_0x280f99(0xb6)](),_0x4e3ffd=RED['nodes'][_0x280f99(0xc6)](_0x82acac);if(!_0x4e3ffd)return undefined;const {endpoint:_0x4edd7b,securityMode:_0x451fa7,securityPolicy:_0x54646b,userIdentityType:_0x22c86e,credentials:_0x398262,namespaceAliases:_0x54e9f2}=_0x4e3ffd,_0x12dc02={'endpoint':_0x4edd7b,'securityMode':_0x451fa7,'securityPolicy':_0x54646b,'userIdentityType':_0x22c86e,'credentials':_0x398262,'namespaceAliases':_0x54e9f2};return _0x12dc02;},_0x5e003f=()=>{const _0x4bd418=_0x2ebf36,_0x2f5d5f=$('#node-input-endpoint'),_0x182a41=_0x2f5d5f[_0x4bd418(0xb6)](),_0x2bdd81=_0x5de07a();if(!_0x2bdd81)return undefined;const _0x4709b5=_0x2bdd81[_0x4bd418(0xb5)];return Object[_0x4bd418(0xc2)]({'namespaceAliases':_0x4709b5,'id':_0x182a41},_0x2bdd81);},_0x43304f=()=>{return{'endpointNode':_0x5e003f};},_0x54ce91=()=>{const _0x11b8db=_0x2ebf36;debugger;const _0x1328fe=$(_0x11b8db(0x18d));console[_0x11b8db(0x184)]('installFeedbackWidget\x20',_0x1328fe[_0x11b8db(0x136)]);if(_0x1328fe[_0x11b8db(0x136)]){console[_0x11b8db(0x184)]('installing\x20iframe');const _0x59ddb3=$(_0x11b8db(0x1e7),{'src':_0x11b8db(0x197),'scrolling':'no','style':_0x11b8db(0xbf),'allowtransparency':_0x11b8db(0x19c),'width':_0x11b8db(0x1dc),'height':_0x11b8db(0x127)});_0x1328fe[_0x11b8db(0xd3)](_0x59ddb3),_0x59ddb3['css']({'position':_0x11b8db(0x1cb),'right':_0x11b8db(0xd9),'bottom':_0x11b8db(0x151)});}};RED[_0x2ebf36(0xfd)][_0x2ebf36(0x1d3)](_0x2ebf36(0xc8),{'category':'opcua','color':_0x2ebf36(0xb0),'align':'right','icon':_0x2ebf36(0x1cd),'paletteLabel':'read-history','defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x2ebf36(0x16b)},'historyReadParam':{'value':{'type':_0x2ebf36(0x134),'endTime':_0x2ebf36(0xce),'startTime':_0x2ebf36(0x110),'numValuesPerNode':0x64,'returnBounds':!![]},'required':!![],'validate':_0x4688c6=>{if(_0x4688c6==='')return![];return!![];}},'nodeId':{'value':'','required':![]},'outputType':{'value':_0x2ebf36(0x11a),'required':!![]}},'outputs':0x2,'label'(){return this['name']||'OPCUA\x20Client\x20HistoryRead';},'labelStyle'(){const _0x496025=_0x2ebf36;return this[_0x496025(0x17a)]?_0x496025(0x116):'';},'oneditprepare'(){const _0x29694e=_0x2ebf36,_0x1a8833=this;_0x289a71(),_0x54ce91(),_0x1a8833[_0x29694e(0xac)]=0x1;const _0x2cb5b7=$('#node-input-nodeId');_0x2cb5b7[_0x29694e(0x1de)](Object['assign'](Object[_0x29694e(0xc2)]({},_0x43304f()),{'isSelectable'(_0x38c956){const _0x1354c4=_0x29694e;return _0x38c956['nodeClass']===_0x1354c4(0x1d9);}})),$(_0x29694e(0x140))[_0x29694e(0xb6)](_0x1a8833['historyReadParam'][_0x29694e(0xb9)]);switch(_0x1a8833[_0x29694e(0xef)][_0x29694e(0xb9)]){case'raw':$(_0x29694e(0x105))[_0x29694e(0xb6)](_0x1a8833[_0x29694e(0xef)][_0x29694e(0x154)]),$(_0x29694e(0x16a))[_0x29694e(0xb6)](_0x1a8833['historyReadParam']['endTime']),$(_0x29694e(0x162))['val'](_0x1a8833[_0x29694e(0xef)][_0x29694e(0xff)]),$(_0x29694e(0xf0))[_0x29694e(0xbe)](_0x29694e(0x190),_0x1a8833[_0x29694e(0xef)]['returnBounds']);break;case _0x29694e(0xbb):$(_0x29694e(0x1c6))[_0x29694e(0xb6)](_0x1a8833['historyReadParam'][_0x29694e(0x154)]),$(_0x29694e(0x10b))[_0x29694e(0xb6)](_0x1a8833['historyReadParam'][_0x29694e(0x178)]),$('#node-input-modified-numValuesPerNode')[_0x29694e(0xb6)](_0x1a8833[_0x29694e(0xef)]['numValuesPerNode']),$(_0x29694e(0x117))[_0x29694e(0xbe)](_0x29694e(0x190),_0x1a8833[_0x29694e(0xef)][_0x29694e(0x1c9)]);break;case _0x29694e(0xb3):_0x1a8833['historyReadParam'][_0x29694e(0x141)]=_0x1a8833[_0x29694e(0xef)]['aggregateConfiguration']||{},$(_0x29694e(0x13e))['val'](_0x1a8833['historyReadParam']['startTime']),$(_0x29694e(0x131))[_0x29694e(0xb6)](_0x1a8833[_0x29694e(0xef)][_0x29694e(0x178)]),$(_0x29694e(0xe4))['val'](_0x1a8833[_0x29694e(0xef)][_0x29694e(0xc3)]),$('#node-input-processed-details-aggregateType')['val'](_0x1a8833[_0x29694e(0xef)][_0x29694e(0x1b8)]),$(_0x29694e(0x15c))[_0x29694e(0xbe)](_0x29694e(0x190),_0x1a8833[_0x29694e(0xef)][_0x29694e(0x141)][_0x29694e(0xe8)]),$(_0x29694e(0x15e))[_0x29694e(0xbe)](_0x29694e(0x190),_0x1a8833[_0x29694e(0xef)][_0x29694e(0x141)][_0x29694e(0xad)]),$(_0x29694e(0x1b6))[_0x29694e(0xb6)](_0x1a8833['historyReadParam'][_0x29694e(0x141)]['percentDataBad']),$(_0x29694e(0xd2))[_0x29694e(0xb6)](_0x1a8833[_0x29694e(0xef)][_0x29694e(0x141)][_0x29694e(0x160)]),$(_0x29694e(0x135))[_0x29694e(0xbe)]('checked',_0x1a8833[_0x29694e(0xef)][_0x29694e(0x141)]['useSlopedExtrapolation']);break;}{function _0x52ac43(){const _0x278aa6=_0x29694e;$(_0x278aa6(0x18a))['hide'](),$('#section-modified')[_0x278aa6(0x177)](),$(_0x278aa6(0x1da))[_0x278aa6(0x177)](),$(_0x278aa6(0x17d))[_0x278aa6(0x177)](),$(_0x278aa6(0x1af))[_0x278aa6(0x177)](),$(_0x278aa6(0x159))[_0x278aa6(0x177)]();}function _0x17c08b(){const _0x36b429=_0x29694e;_0x52ac43();var _0x45d677=$(_0x36b429(0x140))['val']();$(_0x36b429(0x19e)+_0x45d677)[_0x36b429(0xc5)]();}$(_0x29694e(0x140))['on'](_0x29694e(0xb2),_0x17c08b),_0x17c08b();}},'oneditsave'(){const _0xc8297d=_0x2ebf36,_0x1fcae8=_0x23760d=>_0x23760d[_0xc8297d(0xb6)]()==undefined?'':_0x23760d[_0xc8297d(0xb6)]()['toString'](),_0x2272ca=_0x4c4400=>_0x4c4400[_0xc8297d(0xb6)]()==undefined?0x0:_0x4c4400[_0xc8297d(0xb6)](),_0x9d9ee7=$(_0xc8297d(0x140))['val']();switch(_0x9d9ee7){case _0xc8297d(0x134):this[_0xc8297d(0xef)]={'type':_0xc8297d(0x134),'startTime':_0x1fcae8($(_0xc8297d(0x105))),'endTime':_0x1fcae8($(_0xc8297d(0x16a))),'numValuesPerNode':_0x2272ca($(_0xc8297d(0x162))),'returnBounds':$(_0xc8297d(0xf0))[_0xc8297d(0xbe)](_0xc8297d(0x190))};break;case _0xc8297d(0xbb):this[_0xc8297d(0xef)]={'type':_0xc8297d(0xbb),'startTime':_0x1fcae8($(_0xc8297d(0x1c6))),'endTime':_0x1fcae8($(_0xc8297d(0x10b))),'numValuesPerNode':_0x2272ca($('#node-input-modified-numValuesPerNode')),'returnBounds':$('#node-input-modified-returnBounds')['prop'](_0xc8297d(0x190))};break;case _0xc8297d(0xb3):this[_0xc8297d(0xef)]={'type':_0xc8297d(0xb3),'startTime':_0x1fcae8($(_0xc8297d(0x13e))),'endTime':_0x1fcae8($('#node-input-processed-details-endTime')),'processingInterval':_0x2272ca($(_0xc8297d(0xe4))),'aggregateType':_0x1fcae8($('#node-input-processed-details-aggregateType')),'aggregateConfiguration':{'useServerCapabilitiesDefaults':$('#node-input-processed-details-aggregateConfiguration-useServerCapabilitiesDefaults')['prop']('checked'),'treatUncertainAsBad':$(_0xc8297d(0x15e))['prop']('checked'),'percentDataBad':_0x2272ca($(_0xc8297d(0x1b6))),'percentDataGood':_0x2272ca($(_0xc8297d(0xd2))),'useSlopedExtrapolation':$(_0xc8297d(0x135))[_0xc8297d(0xbe)](_0xc8297d(0x190))}};break;}}});}()));function _0x34ce(){const _0x260d5b=['Object','json','suppressed','input[type=\x22checkbox\x22]','Aliased\x20NodeId','log','nsu\x20nodeId:\x20','HasTypeDefinition','after','ns=0;i=61','\x22\x20style=\x22color:','#section-raw','verify','fetched','.red-ui-tray-body','nodeId:\x20','$selectTrigger','checked','endpoint','push','$toggleTreeBtn','_initMenu','already\x20fetched','ns=0;i=45','/opcua-for-node-red/support-frame.html','label','</li>','50768ggZYQr','>&nbsp;\x20','true','ns=0;i=46','#section-','_showMenu','/checkNodeId','<i>','NodeId','msg','empty','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','multiple','appendTo','fa-sliders','reference','body','currentParent','</span><ul></ul></li>',':first','fa-object-group','#section-annotation-data','sterfive-combo-box','<i\x20class=\x22fa\x20fa-bookmark\x22/>&nbsp;\x20','pageY','keyCode','value','target','#node-input-processed-details-aggregateConfiguration-percentDataBad','5792725XibSfJ','aggregateType','$menu','ObjectType','then','tabindex','match','__parentNode','aliased\x20NodeId:\x20','2098056KyVdlC','none','slideDown','HasComponent','ns=0;i=34','data','#node-input-modified-startTime','selected','keydown','returnBounds','removeClass','absolute','nodeId_nsu','../../icons/opcuanodeLogo.png','message','callback','input-group','icon','2756502BSmJMv','registerType','</span>','nodeId','statusCode','error','.tree-text:first','Variable','#section-processed-details','SandyBrown','180px','Both','nodeBrowser','closest','expandable\x20expanded','/opcua-for-node-red','fa-question','li[key=\x22','requestedNodeId','trigger','function','<iframe></iframe>','application/json',':visible','$info','rgba(61,\x2060,\x204,\x200.525)','<li\x20key=\x22','expandable','inputs','treatUncertainAsBad','height','/walk-backward','#C0DEED','displayName','change','processed-details','aliasedNodeId','namespaceAliases','val','POST','done','type','fa-list-alt','modified','$input','red-ui-typedInput-icon\x20','prop','background-color:transparent;overflow:hidden;border:3px','sort','Organizes','assign','processingInterval','indexOf','show','node','<li>error\x20','OpcUa-Client2-HistoryRead','left','$dropdown','ns=0;i=85','isTypeRef','$verifyBtn','1m\x20ago','elements','stringify','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','#node-input-processed-details-aggregateConfiguration-percentDataGood','append','<span\x20title=','18px','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','Value\x20is\x20not\x20verified','browseName','20px','SteelBlue','loading','remove','opts','VariableType','View','next','grey','browse\x20path:\x20','mousedown.red-ui-typedInput-close-property-select','#node-input-processed-details-processingInterval','DarkOrange','referenceTypeId','IsForward','useServerCapabilitiesDefaults','parent','HasChild','TypeDefinition','Method','blur','element','historyReadParam','#node-input-returnBounds','nsuNodeID','join','toString','ReferenceType','expanded','$uiSelect','statusCode:\x20','focus','#node-input-endpoint','border','<div\x20class=\x22spinner\x22></div>','ns=0;i=47','nodes','top','numValuesPerNode','fa-folder','_hideMenu','reset','click','Objects','#node-input-raw-startTime','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','red-ui-typedInput-focus','aliasedBrowsePath','prev','3136446jVADlh','#node-input-modified-endTime',');\x20-webkit-mask-image:\x20url(','mousedown','placeholder','pointer-events','11m\x20ago','<input\x20type=\x22checkbox\x22>','preventDefault','find','Good','nsu','node_label_italic','#node-input-modified-returnBounds','<div/>','toggle','Value','already\x20loading','node\x20class:\x20','sterfive-info','li\x20>\x20.tree-text','filter','before','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20&nbsp;\x20','forEach','apply','selectedMenuItem','$selectLabel','widget','30px','parentNode','position','text','<a\x20href=\x22#\x22></a>','css','throw',';\x22></i>\x20','HasProperty','references','#node-input-processed-details-endTime','_delay','pageX','raw','#node-input-processed-details-aggregateConfiguration-useSlopedExtrapolation','length','animate','wrap','baseUrl','addClass','Inverse','nodeId_aliased','failure','#node-input-processed-details-startTime','ns=0;i=35','#select-history-type','aggregateConfiguration','SuppressedError','scrollTop','858894MBVyJv','prependTo','nodeClass','[value=\x27','stopPropagation','replaceWith','CadetBlue','DataType','$tree','$inputGroup','resolveParentNode','title','Invalid','16px','statusText','NodeClass','startTime','2454878uxSrVU','Aliased\x20Browse\x20Path','><i\x20class=\x22fa\x20','fetching\x20failed\x20with\x20error','#section-event','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','$elementDiv','#node-input-processed-details-aggregateConfiguration-useServerCapabilitiesDefaults','$combo','#node-input-processed-details-aggregateConfiguration-treatUncertainAsBad','red-ui-typedInput-icon','percentDataGood','Forward','#node-input-raw-numValuesPerNode','status','err','mask-image:\x20url(','input-error','browsePath','attr','isSelectable','#node-input-raw-endTime','OpcUa-Endpoint2','disarmClick','bp_indexed','endpointNode','hasClass','<ul\x20class=\x22sterfive-tree\x22></ul>','offset','BrowseName','options','children','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','auto','hide','endTime','\x22}><span\x20class=\x22tree-text\x22\x20title=','name','sterfive.nodeBrowser','BrowsePath','#section-at-time','sterfive-dropdown'];_0x34ce=function(){return _0x260d5b;};return _0x34ce();}
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyNzJmZjgiLCJfMHgyYTkzMTAiLCJfMHgzOWI4MTUiLCJfMHgzNDY3NGUiLCJfMHg1ZGJiYTYiLCJfMHgzNWQ0MzMiLCJfMHgzNDNkMGQiLCJfMHg3ZmUwOTMiLCJQcm9taXNlIiwiXzB4YjNlOTBlIiwiXzB4NTIzMWFkIiwiXzB4ODlkZGVmIiwiXzB4M2FiYzE3IiwiXzB4NGU3ZWUyIiwiXzB4ZjI3ODM1IiwiXzB4MzA0YmQ4IiwiXzB4NGQxMjU0IiwiXzB4MTc5OGQyIiwiXzB4MmMwOTFkIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MTI2ZDhmIiwiXzB4NThiZWNkIiwiXzB4NWYxODliIiwiXzB4MThjZjIwIiwiRXJyb3IiLCJfMHgxMTg5ZDciLCJfMHg0MGM1M2EiLCJfMHgyMjM5NzUiLCJfMHgxYWQ5NTMiLCJfMHgyZmI0M2IiLCJfMHgzMGNjM2MiLCJfMHg0YjY2MjMiLCJfMHg5MGZhOCIsIl8weDQzODE2YyIsIl8weDQxOWFhYyIsIl8weDQxYmUwZSIsIl8weDE5YmQ0ZCIsIl8weDM1ODVmYyIsIl8weDUwNTc2YiIsIl8weDI3YzkxYiIsIl8weGViZmIyNiIsIl8weDRjN2ExMyIsIl8weDIyMDUxMiIsIl8weDQyNGNlYyIsIl8weDI4YmY2ZiIsIl8weDMyMGFiMiIsIl8weDUxOTc3OCIsIl8weDNlYTViZSIsImVuZHBvaW50Tm9kZSIsIl8weGI4YmQ5ZCIsImVuZHBvaW50IiwiXzB4MzQ4NjJmIiwiYmFzZVVybCIsIl8weDU3Y2Y1MyIsIl8weDE4NTg2OCIsIl8weDFkMzMxNSIsIl8weDNkN2U3OSIsIl8weDFiOTM5MCIsIl8weGIxMWUyNSIsIk9iamVjdCIsIl8weDE1MmQzYyIsImZldGNoIiwiSlNPTiIsImNvbnNvbGUiLCJfMHgyMDAzMWUiLCJfMHgyZTBhNmMiLCJfMHgyYjI4ZjciLCJfMHhkZGFhZjQiLCJfMHg0ODFlY2MiLCJfMHgyMTk3YWEiLCJfMHgxYTdhZjciLCJfMHgyYmFjMWMiLCJfMHg0OWU2MWQiLCJfMHhmMGUwN2QiLCJub2RlSWQiLCJfMHg0ZGNiOTQiLCJyb290Tm9kZUlkIiwiXzB4MjVhZTg3IiwiaXNUeXBlIiwiXzB4Mzk5MGFmIiwiXzB4M2Q5MDlkIiwiXzB4MTE4M2NkIiwiXzB4YmRlMWI4IiwiXzB4NDRlMjYyIiwiXzB4OTM2ODM5IiwiXzB4NTUxY2RhIiwiXzB4MmE5YTBmIiwiXzB4MjE3MWZmIiwiXzB4MWQ4NTgxIiwiXzB4NGRiMTk1IiwiXzB4MTBlMGIzIiwiXzB4NzAxODJjIiwiXzB4MTA1MWMyIiwiXzB4MTQ2NGQzIiwiXzB4MmE1YjdjIiwiXzB4NTBkNDViIiwiXzB4NTFmMjgwIiwiXzB4M2E4NjNlIiwiXzB4MWQxMmQ2IiwiXzB4MzAzM2Y4IiwiXzB4NTQ2YTA5IiwiXzB4NTA0ZjdiIiwiXzB4MmYyNmI5IiwiXzB4ZjhkYjk1IiwiXzB4MzE4NmMwIiwiXzB4OTFmMmJjIiwiXzB4NWE2ZjYxIiwiXzB4ODZlY2M4IiwiXzB4MzE1ZDkyIiwiUkVEIiwiXzB4Mzk3YWM5IiwiXzB4MWQyZDgiLCJfMHhiNjRlMjciLCJfMHgyZjM3OGUiLCJfMHg0YTY3YiIsIl8weDVlYzUzZiIsIl8weDFlYmNjMSIsIl8weDRjZTQwZiIsIl8weDFlMTUzZCIsIl8weDRhYzI1NSIsIl8weDEyMGJhOSIsIl8weDM4ODJjZCIsIl8weDQ1MmFjMCIsIl8weDM4Yzg5OSIsIl8weDM0M2E2ZCIsImpzb24iLCJfMHgxZDhlOWUiLCJkYXRhIiwiXzB4NDllYzM5IiwiXzB4MWYzYzhlIiwiXzB4NTJjNTdjIiwiXzB4NDU5YTMxIiwic2V0VGltZW91dCIsIl8weDQ5ZGUyOCIsIl8weDJkNjkzZiIsIl8weDRiYTUzNyIsIl8weDI0MWUxOCIsIl8weDRiMWVkOCIsIl8weDVlYTdlMSIsIl8weDQ2NzY3OSIsIl8weDFhM2U1MiIsIl8weDEzNjNmMiIsIl8weDU1Njc5OSIsIl8weDE4MjJmYSIsIl8weDk4YWYyZiIsIl8weDFjYzE0MiIsIl8weDEzOGUyYiIsIl8weDFiYWI2OCIsIl8weDQ5MzBiNiIsIl8weDVkNmM3NiIsIl8weDQzNzAwMSIsIl8weDEyMTJlYyIsIl8weDc4NTNlNCIsIl8weDRjOGE2MyIsIiQiLCJfMHg1MjE5ZWYiLCJfMHg0NDRiODkiLCJpY29uIiwiXzB4NTJhYjdhIiwiY29sb3IiLCJfMHhlNWQ4MzciLCJfMHgxNGMzNjMiLCJfMHg0ZTc1YzgiLCJfMHgxNjgyZTMiLCJfMHhiOWFhNjkiLCJfMHg0MTA5YTgiLCJfMHgyMjA1YTkiLCJfMHg1MTQ1OGYiLCJfMHgxZTcxMTkiLCJfMHg1ODg0NzIiLCJfMHgzOGUzOTQiLCJfMHg1MmU5MDgiLCJfMHgxMmQ2MTMiLCJfMHg0MjM5OWIiLCJfMHg0YmMwYTYiLCJfMHhjMjk3MDUiLCJfMHgyZWU0ZTYiLCJfMHgyMDM5YjIiLCJfMHgyZGM1NDQiLCJfMHgyODJlZDYiLCJfMHgyMjA5NTQiLCJfMHg3MjYwNSIsIl8weDQ1YmE5YyIsInVuZGVmaW5lZCIsIl8weDI5YTcxNiIsIl8weDMyY2M2OCIsIl8weDIzMmU1MiIsIl8weDNjNjBhMSIsIl8weDFhMTFmOSIsIl8weDRhNDhlMiIsIl8weDI0YzRhYSIsIl8weDUzODY3OCIsIl8weDNlMWE3MyIsIl8weDVhOGNiZSIsIl8weDNmYTI0ZSIsIl8weDQ0YjM0YSIsIl8weDczMjg4NSIsIl8weDNiMGEyNCIsInJlZmVyZW5jZXMiLCJfMHg0OGI3NTQiLCJfMHgyZWJkM2MiLCJfMHg1YWQ3M2QiLCJfMHgzN2RkOTIiLCJfMHg1MzlkM2IiLCJfMHgzYjdhY2IiLCJfMHgyMDUwYWUiLCJfMHg1MDcwMzciLCJfMHgyYTRlYzkiLCJfMHhmZGU5M2YiLCJfMHgyZDUyNGYiLCJfMHg1MzZkNWIiLCJfMHg0YTRjYzIiLCJfMHgzMTViNDUiLCJfMHgxMTI4NGQiLCJfMHg0OWZjZjMiLCJfMHgyODlhNzEiLCJfMHg1NDNhZDQiLCJfMHgxN2M1OTciLCJfMHgzYzQ3ZjgiLCJfMHhlMzg0MjUiLCJfMHg0Y2Q5YjIiLCJfMHg1ODA3MjQiLCJfMHgxMjkwNGYiLCJfMHgxM2Y1MjciLCJfMHg1ZjRmYzciLCJfMHgxNTk4NiIsIl8weDUyOTYyNCIsIl8weDRjZDMzNiIsIl8weDJiNzc5ZiIsImRvY3VtZW50IiwiXzB4NWEwMmM1IiwiXzB4M2VkNDBmIiwiXzB4MTMzYjUwIiwiXzB4NjJlODMyIiwiXzB4NGExMzNiIiwiXzB4NGQ5Y2I3IiwiXzB4NDY3YTU0IiwiXzB4MzNkMGYyIiwiXzB4MWU5ZDM3IiwiXzB4MWQ2YmMxIiwiXzB4MmMzYzc2IiwiXzB4MzRiZjc1IiwiXzB4ZTYwMmU5IiwiXzB4NTVlYjBiIiwiXzB4MWYzZmIwIiwiXzB4YzQzYjQyIiwiXzB4MTEyYmYxIiwiXzB4NDVlOGQyIiwiXzB4ZGFkZDc5Iiwid2luZG93IiwiXzB4MjQ1NmU5IiwiXzB4NDg1ZTg2IiwiXzB4MzUwMDI2IiwiXzB4MmU4NGM3IiwiXzB4NGI1NWNmIiwiXzB4NTYwZGM3IiwiXzB4NTNhZGY3IiwiXzB4MzVlMWE0IiwiXzB4NWIxMWFjIiwiXzB4NGI0YjE2IiwiXzB4NTc4NzUyIiwiXzB4NTlkN2ZmIiwiXzB4YTA3MzM1IiwiXzB4NDcyZWVmIiwiXzB4MjUyODlkIiwiXzB4MTAzNjViIiwiXzB4NDkwMGJkIiwiXzB4M2EyMTk4IiwiXzB4NTlhNjIyIiwiXzB4NGY3YjNkIiwiXzB4NTljNjRiIiwiXzB4MjE1MjkwIiwiXzB4MzZhMjE2IiwiXzB4NTc2YTY1IiwiXzB4Mzc5Y2Y5IiwiXzB4NWMwMjM4IiwiXzB4NDg5NGMxIiwiXzB4MzJlMzBlIiwiXzB4MzQ5ZjZjIiwiXzB4NTA5MDFiIiwiXzB4M2MxNThmIiwiXzB4NWYzZTU2IiwiXzB4MjNhNDk1IiwiXzB4M2MxNDE4IiwiXzB4M2I5MjBhIiwiXzB4OThiNmFiIiwiXzB4MTI4YWZjIiwiXzB4MjEzZmVkIiwiXzB4NDkxZjQ0IiwiXzB4MmQxZjI1IiwiXzB4NGUxYTUzIiwiXzB4MjczMDRhIiwiXzB4MWFkNTRkIiwiXzB4MWJmNGM4IiwiXzB4M2MwYjMwIiwiXzB4MmE3OTFkIiwiXzB4MTkwOTY0IiwiXzB4MmM0MmI0IiwiXzB4NTcyMDE3IiwiXzB4NWRlMDdhIiwiXzB4MjM3M2EzIiwiXzB4ODJhY2FjIiwiXzB4NGUzZmZkIiwiXzB4NGVkZDdiIiwic2VjdXJpdHlNb2RlIiwiXzB4NDUxZmE3Iiwic2VjdXJpdHlQb2xpY3kiLCJfMHg1NDY0NmIiLCJ1c2VySWRlbnRpdHlUeXBlIiwiXzB4MjJjODZlIiwiY3JlZGVudGlhbHMiLCJfMHgzOTgyNjIiLCJuYW1lc3BhY2VBbGlhc2VzIiwiXzB4NTRlOWYyIiwiXzB4MTJkYzAyIiwiXzB4NWUwMDNmIiwiXzB4MmY1ZDVmIiwiXzB4MTgyYTQxIiwiXzB4MmJkZDgxIiwiXzB4NDcwOWI1IiwiXzB4NDMzMDRmIiwiXzB4NTRjZTkxIiwiXzB4MTMyOGZlIiwiXzB4NTlkZGIzIiwiXzB4NDY4OGM2IiwiXzB4MWE4ODMzIiwiXzB4MmNiNWI3IiwiXzB4MzhjOTU2IiwiXzB4NTJhYzQzIiwiXzB4MTdjMDhiIiwiXzB4NDVkNjc3IiwiXzB4MWZjYWU4IiwiXzB4MjM3NjBkIiwiXzB4MjI3MmNhIiwiXzB4NGM0NDAwIiwiXzB4OWQ5ZWU3Il0sIm1hcHBpbmdzIjoiK3JCQUFBLENBQUMsVSxDQUNHLGEsd0JBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixTQUFVQyxTQUFWLENBQW1CQyxTQUFuQixDLHlCQUM1QixTQUFTQyxTQUFULENBQW1CQyxTQUFuQixDLENBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsTUFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxT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Q0FBQSxDLGdCQUFBLENBQWQsQ0FISSxDLGlCQUlwQixDQUFpQm1MLFNBQUEsQ0FBY25MLENBQUEsQyxlQUFBLENBQWQsQ0FKRyxDLHdCQUtwQixDQUF3QkEsQ0FBQSxDLGdCQUFBLEUsZUFBQSxFLGdCQUFBLENBTEosQ0FOSixDQUF4QixDQWNBLE1BbENSLEMsQ0FyRzRDLENBQXBELEMsRUE1Z0NKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9IChfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJyb3dzZSBmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHdhbGtCYWNrd2FyZCA9IChfYSwgX2IpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgX2JdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNob29zZU5vZGVJZCA9IChkYXRhLCBtb2RlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXF1ZXN0ZWROb2RlSWQ7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9hbGlhc2VkIHx8IGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX2FsaWFzZWQgfHwgZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbWFrZVRvb2x0aXAgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGBzdGF0dXNDb2RlOiAke2RhdGEuc3RhdHVzQ29kZX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHN0ciA9IFtdO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGVJZDogJHtkYXRhLm5vZGVJZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBicm93c2UgcGF0aDogJHtkYXRhLmJwX2luZGV4ZWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZSBjbGFzczogJHtOb2RlQ2xhc3NbZGF0YS5ub2RlQ2xhc3NdfWApO1xuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX25zdSkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBuc3Ugbm9kZUlkOiAke2RhdGEubm9kZUlkX25zdX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9hbGlhc2VkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgTm9kZUlkOiAke2RhdGEubm9kZUlkX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5icF9pbmRleGVkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgYnJvd3NlUGF0aDogJHtkYXRhLmJwX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1vZGUoZW5oYW5jZWROb2RlSWQpIHtcbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnN1PS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14obnM9Lio7KT8oaXxifHN8Zyk9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zYT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKVswLTldKzovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKS4qOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGZpZ3VyZU91dE1vZGUoc3RyKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdG9Nb2RlKHYpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuYVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuc3VcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImFiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZEJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICB9XG4gICAgY29uc3QgX2NhbGxDaGVja05vZGVJZCA9IChfYSwgbm9kZUlkXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vY2hlY2tOb2RlSWRgO1xuICAgICAgICBjb25zdCBlSWQgPSBlbmRwb2ludE5vZGUuaWQ7XG4gICAgICAgIGNvbnN0IG4gPSBSRUQubm9kZXMubm9kZShlSWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhuLm5hbWVzcGFjZUFsaWFzZXMpO1xuICAgICAgICBuLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5vZGUubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4geyBqc29uLCBkYXRhIH07XG4gICAgfSk7XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBtb2RlLCAkaW5wdXRFbGVtZW50LCAkaW5mbykge1xuICAgICAgICBjb25zdCBlbmhhbmNlZE5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHsganNvbiwgZGF0YSB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZCh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgZW5oYW5jZWROb2RlSWQpO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBlbmhhbmNlZE5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcCA9IG1ha2VUb29sdGlwKGpzb24pO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQuYXR0cihcInRpdGxlXCIsIHRvb2x0aXApO1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7ZW5oYW5jZWROb2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmICghcmVmZXJlbmNlIHx8ICFyZWZlcmVuY2Uubm9kZUlkKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGAoJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9KSAkeygoX2MgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hbWUpIHx8ICgoX2QgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50ZXh0KSB8fCBcIlwifWA7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpIGtleT1cIiR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfVwifT48c3BhbiBjbGFzcz1cInRyZWUtdGV4dFwiIHRpdGxlPSR7dGl0bGV9PjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PC9zcGFuPjx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGZpbmRFbGVtZW50ID0gKG5vZGVJZCwgJHRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuICR0cmVlLmZpbmQoYGxpW2tleT1cIiR7bm9kZUlkfVwiXWApO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0U2luZ2xlID0gKHRoYXQsICRsaSkgPT4ge1xuICAgICAgICB0aGF0LiR0cmVlLmZpbmQoXCJsaSA+IC50cmVlLXRleHRcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgLy8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICRsaS5maW5kKFwiLnRyZWUtdGV4dDpmaXJzdFwiKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgIH07XG4gICAgY29uc3QgYXV0b0V4cGFuZCA9ICh0aGF0LCBicm93c2VQYXRoLCAkdHJlZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGV4cGFuZCB0aGUgdHJlZSB0byBzaG93IHRoZSBub2RlSWRcbiAgICAgICAgbGV0ICRjdXJyZW50ID0gJHRyZWUuY2hpbGRyZW4oXCI6Zmlyc3RcIik7XG4gICAgICAgIGJyb3dzZVBhdGgucmVsYXRpdmVQYXRoLmVsZW1lbnRzIHx8IFtdO1xuICAgICAgICBjb25zdCBub2RlSWRzID0gYnJvd3NlUGF0aC5ub2RlSWRzIHx8IFtdO1xuICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKCRjdXJyZW50Lmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZXhwYW5kIGFuZCBzZWxlY3QgdGhlIHJpZ2h0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICB5aWVsZCBfZXhwYW5kTGkodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBmaW5kRWxlbWVudChuLCAkY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoJGVsZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGN1cnJlbnQgPSAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICBzY3JvbGxUb0xpKHRoYXQuJGRyb3Bkb3duLCAkY3VycmVudCk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9MaSgkY29udGFpbmVyLCAkdGFyZ2V0TGkpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0gcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBsaVBvcyA9ICR0YXJnZXRMaS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclNjcm9sbFRvcCA9ICRjb250YWluZXIuc2Nyb2xsVG9wKCk7XG4gICAgICAgIGlmIChjb250YWluZXJTY3JvbGxUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG8gKGN1cnJlbnQgc2Nyb2xsICsgaXRlbSdzIHBvc2l0aW9uKVxuICAgICAgICAvLyBBZGp1c3QgdGhpcyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB5b3VyIG5lZWRzXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gY29udGFpbmVyU2Nyb2xsVG9wICsgbGlQb3MgLSAkY29udGFpbmVyLmhlaWdodCgpIC8gMiArICR0YXJnZXRMaS5oZWlnaHQoKSAvIDI7XG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIGVuc3VyZSB0aGUgaXRlbSBpcyB2aXNpYmxlXG4gICAgICAgICRjb250YWluZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvLFxuICAgICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhlIGR1cmF0aW9uICg1MDBtcykgYXMgbmVlZGVkXG4gICAgfVxuICAgIGNvbnN0IHJlYWNoU2VsZWN0aW9uID0gKHRoYXQsIHBhcmVudE5vZGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBub2RlSWQgPSB0aGF0LiRpbnB1dC52YWwoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIHJvb3ROb2RlSWQ6IHBhcmVudE5vZGUubm9kZUlkLFxuICAgICAgICAgICAgaXNUeXBlOiB0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmIHx8IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgIGNvbnN0IGJyb3dzZVBhdGggPSB5aWVsZCB3YWxrQmFja3dhcmQoZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIGlmICghYnJvd3NlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIGF1dG9FeHBhbmQodGhhdCwgYnJvd3NlUGF0aCwgdGhhdC4kdHJlZSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gc29ydCByZWZlcmVuY2UgICBieSBicm93c2VOYW1lXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlcy5zb3J0KChhLCBiKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoKChfYSA9IGEuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8IFwiXCIpLmxvY2FsZUNvbXBhcmUoKChfYiA9IGIuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IFwiXCIpOyB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1ha2VDb25uZWN0aW9uKHRoYXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9leHBhbmRMaSh0aGF0LCAkbGkpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbGksIGYsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRQYXJlbnROb2RlID0ge1xuICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gZGVmYXVsdFBhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX19wYXJlbnROb2RlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUuY2FsbCh0aGF0KSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBkZXNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9fcGFyZW50Tm9kZSB8fCBkZWZhdWx0UGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyByZXNldCBwYXJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdGhhdDtcbiAgICAgICAgICAgICAgICAgICAgYS5fX3BhcmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHlpZWxkIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCBtb2RlLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwiaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5yZW1vdmVDbGFzcyhcImlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2hpZGVNZW51KG1lbnUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAobWVudS5vcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmZpbmQoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcChcImNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5wdXNoKCQodGhpcykuZGF0YShcInZhbHVlXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2soc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kZWxlbWVudERpdi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgLy94eCB9IGVsc2UgaWYgKHRoaXMuJG9wdGlvblNlbGVjdFRyaWdnZXIuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvL3h4ICAgICB0aGF0LiRvcHRpb25TZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlTWVudShtZW51T3B0aW9ucywgb3B0cywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVudSA9ICQoXCI8ZGl2PlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLXR5cGVkSW5wdXQtb3B0aW9ucyBzdGVyZml2ZS1vbmxpbmUtbWVudVwiKTtcbiAgICAgICAgICAgICAgICBtZW51Lm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBtZW51T3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdCA9IHsgdmFsdWU6IG9wdCwgbGFiZWw6IG9wdCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcCA9ICQoJzxhIGhyZWY9XCIjXCI+PC9hPicpLmF0dHIoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpLmFwcGVuZFRvKG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AucHJvcChcInRpdGxlXCIsIG9wdC50aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24uaW5kZXhPZihcIjxcIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wdC5pY29uKS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0Lmljb24uaW5kZXhPZihcIi9cIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwibWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwgeyBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIFwiICsgb3B0Lmljb24gfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLmNzcyh7IHBhZGRpbmdMZWZ0OiBcIjE4cHhcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdC5pY29uICYmICFvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgY2I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYiA9ICQoJzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoXCJwb2ludGVyLWV2ZW50c1wiLCBcIm5vbmVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YShcInZhbHVlXCIsIG9wdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlcGVuZFRvKG9wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcIm1vdXNlZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLnByb3AoXCJjaGVja2VkXCIsICFjYi5wcm9wKFwiY2hlY2tlZFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERPV05cbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikubmV4dCgpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMzgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVVBcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikucHJldigpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTQ0FQRVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzYXJtQ2xpY2s6IGZhbHNlLFxuICAgICAgICAgICAgX3Nob3dNZW51KG1lbnUsIHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNhcm1DbGljaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FybUNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWxhdGl2ZVRvLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByZWxhdGl2ZVRvLmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciBtZW51SGVpZ2h0ID0gbWVudS5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gaGVpZ2h0ICsgcG9zLnRvcDtcbiAgICAgICAgICAgICAgICBpZiAodG9wICsgbWVudUhlaWdodCAtICQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpID4gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCAtPSB0b3AgKyBtZW51SGVpZ2h0IC0gJCh3aW5kb3cpLmhlaWdodCgpICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRvcCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5oZWlnaHQobWVudUhlaWdodCArIHRvcCk7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3AgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBvcy5sZWZ0ICsgXCJweFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuc2xpZGVEb3duKDEwMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KG1lbnUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHJlbGF0aXZlVG8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuZGlzYXJtQ2xpY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zaG93VHlwZU1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd01lbnUodGhhdC4kbWVudSwgdGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhhdC5zZWxlY3RlZE1lbnVJdGVtO1xuICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IHRoYXQuJG1lbnUuZmluZChcIlt2YWx1ZT0nXCIgKyB0eXBlICsgXCInXCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfSwgMTIwKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaW5pdE1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5hdHRyKFwidGFiaW5kZXhcIiwgLTEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtZm9jdXMtYmxvY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kbWVudSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRtZW51LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBmYS1pZC1jYXJkXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUxpc3QgPSBbXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwidGV4dFwiLCB2YWx1ZTogXCJ0XCIsIHRpdGxlOiBcIlZhbHVlIGlzIG5vdCB2ZXJpZmllZFwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1mb250XCIvaT4gJyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJtc2cuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJtc2dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIm5vZGUgaWQgb3IgIGJyb3dzZSBwYXRoIGNvbWVzIGZyb20gaW5qZWN0ZWQgbXNnIHBhcmFtZXRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUtb3Blbi1vXCIvPicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkXCIsIHZhbHVlOiBcIm5cIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjEgJm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJBbGlhc2VkIE5vZGVJZFwiLCB2YWx1ZTogXCJuYVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZCB3aXRoIG5hbWVzcGFjZSBVcm5cIiwgdmFsdWU6IFwibnN1XCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWlkLWNhcmRcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJCcm93c2VQYXRoXCIsIHZhbHVlOiBcImJcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBbGlhc2VkIEJyb3dzZSBQYXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJhYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGZpZ3VyZU91dE1lblVJdGVtVmFsdWUodGhhdC4kaW5wdXQudmFsKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSBhKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IGE7XG4gICAgICAgICAgICAgICAgY29uc3QgdHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUgPSB0aGlzLl9jcmVhdGVNZW51KHR5cGVMaXN0LCB7fSwgKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRvTW9kZSh2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIE1lbnUgc2VsZWN0ZWQgIVxuICAgICAgICAgICAgICAgICAgICAgICAgdHQudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSB2KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gdjtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuc2hvdygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vZGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTW9kZSh0aGF0LnNlbGVjdGVkTWVudUl0ZW0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuY3NzKFwiYm9yZGVyXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnREaXYgPSB0aGF0LiRpbnB1dC53cmFwKFwiPGRpdj5cIikucGFyZW50KCkuYWRkQ2xhc3MoXCJtYWluLXdyYXBwZXJcIik7XG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBDb21ibyBicm93c2VyXG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtaW5wdXQtd3JhcFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIGFkZCBidXR0b24gb24gdGhlIHJpZ2h0IHNpZGVcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRvZ2dsZVRyZWVCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cIm9wZW4gT1BDVUEgQWRkcmVzc1NwYWNlIEJyb3dzZXJcIj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB5aWVsZCB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uICYmICh5aWVsZCByZWFjaFNlbGVjdGlvbih0aGF0LCBwYXJlbnROb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHZlcmlmeUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJ2ZXJpZnkgbm9kZUlkIG9yIGJyb3dzZVBhdGhcIj48aSBjbGFzcz1cImZhIGZhLXJlZnJlc2hcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVJbnB1dCA9IChpbnB1dCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25EYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwganNvbiB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZChjb25uZWN0aW9uRGF0YSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgcHJlcGVuZGVkIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QgPSAkKFwiPGRpdj5cIik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmJlZm9yZSh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIgPSAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIj48L2J1dHRvbj4nKS5wcmVwZW5kVG8odGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICAkKCc8aSBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LWljb24gZmEgZmEtY2FyZXQtZG93blwiPjwvaT4nKS50b2dnbGUodHJ1ZSkuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiZm9jdXNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImJsdXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIG9wdCA9IHRoYXQudHlwZU1hcFt0aGF0LnByb3BlcnR5VHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob3B0Lmhhc1ZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QucmVtb3ZlQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsID0gJCgnPHNwYW4gY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC10eXBlLWxhYmVsXCI+PC9zcGFuPicpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0TWVudSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdGVtcG9yYXR5IGluZm8gcGFuZWxcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBkcm9wIGRvd24gdHJlZVxuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKS5hcHBlbmRUbyh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRkcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVJbnB1dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgY29udGFpbmluZzpcbiAgICAgKiAgLSB0aGUgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksXG4gICAgICogIC0gdXNlcklkZW50aXR5VHlwZSxcbiAgICAgKiAgLSBjcmVkZW50aWFsc1xuICAgICAqICAtIG5hbWVzcGFjZUFsaWFzZXNcbiAgICAgKlxuICAgICAqIGV4dHJhY3RlZCBmcm9tIHRoZSB1aSB3aWRnZXQgI25vZGUtaW5wdXQtZW5kcG9pbnRcbiAgICAgKi9cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzLCBuYW1lc3BhY2VBbGlhc2VzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnROciA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICBpZiAoIWVuZHBvaW50TnIpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50TnIubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyBuYW1lc3BhY2VBbGlhc2VzLCBpZDogZW5kcG9pbnRJZCB9LCBlbmRwb2ludE5yKTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgaW5zdGFsbEZlZWRiYWNrV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgdHJheUNvbnRlbnQgPSAkKFwiLnJlZC11aS10cmF5LWJvZHlcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW5zdGFsbEZlZWRiYWNrV2lkZ2V0IFwiLCB0cmF5Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBpZiAodHJheUNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc3RhbGxpbmcgaWZyYW1lXCIpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpZnJhbWUgZWxlbWVudFxuICAgICAgICAgICAgY29uc3QgaWZyYW1lID0gJChcIjxpZnJhbWU+PC9pZnJhbWU+XCIsIHtcbiAgICAgICAgICAgICAgICBzcmM6IFwiL29wY3VhLWZvci1ub2RlLXJlZC9zdXBwb3J0LWZyYW1lLmh0bWxcIixcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IFwibm9cIixcbiAgICAgICAgICAgICAgICBzdHlsZTogXCJiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O292ZXJmbG93OmhpZGRlbjtib3JkZXI6M3B4XCIsXG4gICAgICAgICAgICAgICAgYWxsb3d0cmFuc3BhcmVuY3k6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE4MHB4XCIsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjMwcHhcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBpZnJhbWUgdG8gdGhlIGZlZWRiYWNrIGVsZW1lbnRcbiAgICAgICAgICAgIHRyYXlDb250ZW50LmFwcGVuZChpZnJhbWUpO1xuICAgICAgICAgICAgLy8gUG9zaXRpb24gdGhlIGZlZWRiYWNrIGVsZW1lbnQgYXQgdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgdHJheSBjb250ZW50XG4gICAgICAgICAgICBpZnJhbWUuY3NzKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIjIwcHhcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiMTZweFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItSGlzdG9yeVJlYWRcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJvcGN1YVwiLFxuICAgICAgICBjb2xvcjogXCIjQzBERUVEXCIsXG4gICAgICAgIGFsaWduOiBcInJpZ2h0XCIsXG4gICAgICAgIGljb246IFwiLi4vLi4vaWNvbnMvb3BjdWFub2RlTG9nby5wbmdcIixcbiAgICAgICAgcGFsZXR0ZUxhYmVsOiBcInJlYWQtaGlzdG9yeVwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDQgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiBcIk9wY1VhLUVuZHBvaW50MlwiIH0sXG4gICAgICAgICAgICBoaXN0b3J5UmVhZFBhcmFtOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJyYXdcIixcbiAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogXCIxbSBhZ29cIixcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBcIjExbSBhZ29cIixcbiAgICAgICAgICAgICAgICAgICAgbnVtVmFsdWVzUGVyTm9kZTogMTAwLFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5Cb3VuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsID09PSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gcmVhZCBIaXN0b3J5XG4gICAgICAgICAgICBub2RlSWQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgb3V0cHV0VHlwZTogeyB2YWx1ZTogXCJWYWx1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBpbnB1dHM6LFxuICAgICAgICBvdXRwdXRzOiAyLCAvLyAyIG91dHB1dCwgc2Vjb25kIGZvciByYXcgbm9kZS1vcGN1YSBkaWFnbm9zdGljcyBvciBtb3JlIGNvbXBsZXRlIG1lc3NhZ2VcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQ2xpZW50IEhpc3RvcnlSZWFkXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBpbnN0YWxsRmVlZGJhY2tXaWRnZXQoKTtcbiAgICAgICAgICAgIG5vZGUuaW5wdXRzID0gMTtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgICAgICQoXCIjc2VsZWN0LWhpc3RvcnktdHlwZVwiKS52YWwobm9kZS5oaXN0b3J5UmVhZFBhcmFtLnR5cGUpO1xuICAgICAgICAgICAgc3dpdGNoIChub2RlLmhpc3RvcnlSZWFkUGFyYW0udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyYXdcIjpcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXJhdy1zdGFydFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5zdGFydFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcmF3LWVuZFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5lbmRUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXJhdy1udW1WYWx1ZXNQZXJOb2RlXCIpLnZhbChub2RlLmhpc3RvcnlSZWFkUGFyYW0ubnVtVmFsdWVzUGVyTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1yZXR1cm5Cb3VuZHNcIikucHJvcChcImNoZWNrZWRcIiwgbm9kZS5oaXN0b3J5UmVhZFBhcmFtLnJldHVybkJvdW5kcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJtb2RpZmllZFwiOlxuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtbW9kaWZpZWQtc3RhcnRUaW1lXCIpLnZhbChub2RlLmhpc3RvcnlSZWFkUGFyYW0uc3RhcnRUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLWVuZFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5lbmRUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLW51bVZhbHVlc1Blck5vZGVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5udW1WYWx1ZXNQZXJOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLXJldHVybkJvdW5kc1wiKS5wcm9wKFwiY2hlY2tlZFwiLCBub2RlLmhpc3RvcnlSZWFkUGFyYW0ucmV0dXJuQm91bmRzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInByb2Nlc3NlZC1kZXRhaWxzXCI6XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVDb25maWd1cmF0aW9uID0gbm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24gfHwge307XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1zdGFydFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5zdGFydFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtZW5kVGltZVwiKS52YWwobm9kZS5oaXN0b3J5UmVhZFBhcmFtLmVuZFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtcHJvY2Vzc2luZ0ludGVydmFsXCIpLnZhbChub2RlLmhpc3RvcnlSZWFkUGFyYW0ucHJvY2Vzc2luZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZVR5cGVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHNcIikucHJvcChcImNoZWNrZWRcIiwgbm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24udXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHMpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi10cmVhdFVuY2VydGFpbkFzQmFkXCIpLnByb3AoXCJjaGVja2VkXCIsIG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVDb25maWd1cmF0aW9uLnRyZWF0VW5jZXJ0YWluQXNCYWQpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi1wZXJjZW50RGF0YUJhZFwiKS52YWwobm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24ucGVyY2VudERhdGFCYWQpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi1wZXJjZW50RGF0YUdvb2RcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVDb25maWd1cmF0aW9uLnBlcmNlbnREYXRhR29vZCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1hZ2dyZWdhdGVDb25maWd1cmF0aW9uLXVzZVNsb3BlZEV4dHJhcG9sYXRpb25cIikucHJvcChcImNoZWNrZWRcIiwgbm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24udXNlU2xvcGVkRXh0cmFwb2xhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBhZHZhbmNlZCBjb250cm9sc1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoaWRlQWxsU2VjdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLXJhd1wiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1tb2RpZmllZFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1wcm9jZXNzZWQtZGV0YWlsc1wiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1hdC10aW1lXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLWFubm90YXRpb24tZGF0YVwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1ldmVudFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVNlY3Rpb25zKCkge1xuICAgICAgICAgICAgICAgICAgICBoaWRlQWxsU2VjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRWYWx1ZSA9ICQoXCIjc2VsZWN0LWhpc3RvcnktdHlwZVwiKS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxlcnQoXCJ0b2dnbGVTZWN0aW9ucyBcIiArIHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tXCIgKyBzZWxlY3RlZFZhbHVlKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICQoXCIjc2VsZWN0LWhpc3RvcnktdHlwZVwiKS5vbihcImNoYW5nZVwiLCB0b2dnbGVTZWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlU2VjdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXNUZXh0ID0gKGEpID0+IChhLnZhbCgpID09IHVuZGVmaW5lZCA/IFwiXCIgOiBhLnZhbCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVBc051bWJlciA9IChhKSA9PiAoYS52YWwoKSA9PSB1bmRlZmluZWQgPyAwIDogYS52YWwoKSk7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gJChcIiNzZWxlY3QtaGlzdG9yeS10eXBlXCIpLnZhbCgpO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInJhd1wiOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlSZWFkUGFyYW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJhd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtcmF3LXN0YXJ0VGltZVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtcmF3LWVuZFRpbWVcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtVmFsdWVzUGVyTm9kZTogdmFsdWVBc051bWJlcigkKFwiI25vZGUtaW5wdXQtcmF3LW51bVZhbHVlc1Blck5vZGVcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuQm91bmRzOiAkKFwiI25vZGUtaW5wdXQtcmV0dXJuQm91bmRzXCIpLnByb3AoXCJjaGVja2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwibW9kaWZpZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5UmVhZFBhcmFtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJtb2RpZmllZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtbW9kaWZpZWQtc3RhcnRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWU6IHZhbHVlQXNUZXh0KCQoXCIjbm9kZS1pbnB1dC1tb2RpZmllZC1lbmRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bVZhbHVlc1Blck5vZGU6IHZhbHVlQXNOdW1iZXIoJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLW51bVZhbHVlc1Blck5vZGVcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuQm91bmRzOiAkKFwiI25vZGUtaW5wdXQtbW9kaWZpZWQtcmV0dXJuQm91bmRzXCIpLnByb3AoXCJjaGVja2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJvY2Vzc2VkLWRldGFpbHNcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5UmVhZFBhcmFtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJwcm9jZXNzZWQtZGV0YWlsc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtc3RhcnRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWU6IHZhbHVlQXNUZXh0KCQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1lbmRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdJbnRlcnZhbDogdmFsdWVBc051bWJlcigkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtcHJvY2Vzc2luZ0ludGVydmFsXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZVR5cGU6IHZhbHVlQXNUZXh0KCQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1hZ2dyZWdhdGVUeXBlXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VTZXJ2ZXJDYXBhYmlsaXRpZXNEZWZhdWx0czogJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHNcIikucHJvcChcImNoZWNrZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlYXRVbmNlcnRhaW5Bc0JhZDogJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdHJlYXRVbmNlcnRhaW5Bc0JhZFwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50RGF0YUJhZDogdmFsdWVBc051bWJlcigkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi1wZXJjZW50RGF0YUJhZFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudERhdGFHb29kOiB2YWx1ZUFzTnVtYmVyKCQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1hZ2dyZWdhdGVDb25maWd1cmF0aW9uLXBlcmNlbnREYXRhR29vZFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU2xvcGVkRXh0cmFwb2xhdGlvbjogJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdXNlU2xvcGVkRXh0cmFwb2xhdGlvblwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
7
+ function _0x2ddc(_0x5a395f,_0x5e2857){const _0x4d05c1=_0x4d05();return _0x2ddc=function(_0x2ddcc2,_0x5db674){_0x2ddcc2=_0x2ddcc2-0x1b4;let _0x34d71e=_0x4d05c1[_0x2ddcc2];return _0x34d71e;},_0x2ddc(_0x5a395f,_0x5e2857);}function _0x4d05(){const _0x8f11b4=['fetched','hide','>&nbsp;\x20','sort','#node-input-processed-details-startTime','VariableType','TypeDefinition','_createMenu','OpcUa-Client2-HistoryRead','appendTo','toggleClass','ObjectType','><i\x20class=\x22fa\x20','show','trigger','mask-image:\x20url(','node','li[key=\x22','assign','$input','requestedNodeId','nodeBrowser','apply','error','$tree','percentDataGood','$selectLabel','nodes','$menu','#node-input-endpoint','Forward','#node-input-modified-endTime','NodeId','ns=0;i=46','nodeId','nodeId_aliased','sterfive-dropdown','multiple','/browse','mode','currentParent','mousedown.red-ui-typedInput-close-property-select','sterfive-combo-box','rgba(61,\x2060,\x204,\x200.525)','browse\x20path:\x20','blur','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','callback','182938rhrPyU','then','disarmClick','$inputGroup','Method','toggle','.spinner','msg','#node-input-processed-details-aggregateConfiguration-percentDataBad','fa-object-group','border','element','forEach','click','2000520UmnJwF','/checkNodeId','#node-input-modified-returnBounds','7RVdYee','numValuesPerNode','indexOf','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','statusCode','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','Aliased\x20Browse\x20Path','2572TNtKnS','data','Aliased\x20NodeId','11m\x20ago','processed-details','suppressed','nsu\x20nodeId:\x20','</span>','namespaceAliases','#section-annotation-data','BrowseName','aliasedBrowsePath','keydown','checked','19560gBoFwp','find',');\x20-webkit-mask-image:\x20url(','sterfive.nodeBrowser','</span><ul></ul></li>','stringify','2646VMoDcm','prependTo','<span\x20title=','modified','length','ns=0;i=35','addClass','expanded','$combo','fa-sliders','offset','$elementDiv','<a\x20href=\x22#\x22></a>','HasTypeDefinition','hasClass','parentNode','<div/>','#node-input-returnBounds','HasSubtype','$selectTrigger','endTime','NodeId\x20with\x20namespace\x20Urn','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','main-wrapper','mousedown','<div\x20class=\x22spinner\x22></div>','red-ui-typedInput-focus','references','reset','remove','registerType','toString','statusText','HasComponent','Both','scrollTop','stopPropagation','application/json','node\x20class:\x20','#select-history-type','icon','ReferenceType','raw','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20&nbsp;\x20','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','slideDown','msg.','match','DodgerBlue','title','none','1m\x20ago','removeClass','Inverse','input[type=\x22checkbox\x22]','#node-input-processed-details-aggregateType','isTypeRef','\x22\x20style=\x22color:','percentDataBad','CadetBlue','treatUncertainAsBad','aliased\x20NodeId:\x20','</li>','name','call','<i\x20class=\x22fa\x20fa-id-card\x22/>&nbsp;\x20','children','verify','throw','type','top','resolveParentNode','DataType','css','$uiSelect','#section-event','/opcua-for-node-red','fa-text-width','filter','push','ns=0;i=40','processingInterval','left','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','endpoint','ns=0;i=85','/walk-backward','keyCode','View','value','function','ns=0;i=47','aggregateConfiguration','message','Good','historyReadParam','<ul\x20class=\x22sterfive-tree\x22></ul>','Object','#node-input-processed-details-aggregateConfiguration-useSlopedExtrapolation','position','fa-cog','focus','text','$info','Value\x20is\x20not\x20verified','endpointNode','#node-input-processed-details-aggregateConfiguration-treatUncertainAsBad','Objects','relativePath','browseName','fa-list-alt','#section-at-time','selectedMenuItem','nsuNodeID','err','#node-input-raw-startTime','empty','pointer-events','animate','preventDefault','widget','json','red-ui-typedInput-icon\x20',':visible','replaceWith','#node-input-raw-numValuesPerNode','3534fjneSu','closest','DarkOrange','body','#node-input-processed-details-processingInterval','isSelectable','startTime','displayName','status','$toggleTreeBtn','val','_delay','#node-input-modified-numValuesPerNode','$dropdown','failure','bp_aliased','nodeId:\x20','#node-input-nodeId','Value','Unspecified','bp_indexed','selected','aggregateType','log','referenceTypeId','../../icons/opcuanodeLogo.png','__parentNode','Variable','target','returnBounds','386748NNXqKP','join','fetching\x20failed\x20with\x20error','done','OPCUA\x20Client\x20HistoryRead','red-ui-typedInput-icon','change','expandable','height','#node-input-raw-endTime','#node-input-modified-startTime','append','nodeId_nsu','attr','aliasedNodeId','#section-processed-details',':focus','next','read-history','SteelBlue','DisplayName','dblclick','aliased\x20browsePath:\x20','SuppressedError','ns=0;i=61','pageY','useServerCapabilitiesDefaults','<div>','438440mIbpsx','_hideMenu','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','ns=0;i=34','browsePath','NodeClass','label','<li\x20key=\x22','each','Organizes','_showTypeMenu','$verifyBtn','#node-input-processed-details-aggregateConfiguration-percentDataGood','expandable\x20expanded','BrowsePath','parent','#section-','SandyBrown','browseResult','prop','opcua','#node-input-processed-details-aggregateConfiguration-useServerCapabilitiesDefaults','#node-input-processed-details-endTime','loading','reference','options','<i\x20class=\x22fa\x20fa-bookmark\x22/>&nbsp;\x20','nsu','nodeClass','[value=\x27','tabindex','i=61','auto','238516YeslQM','HasChild'];_0x4d05=function(){return _0x8f11b4;};return _0x4d05();}(function(_0x47111e,_0x4ad601){const _0x1b6aee=_0x2ddc,_0x2b0fd5=_0x47111e();while(!![]){try{const _0x2a8396=-parseInt(_0x1b6aee(0x29d))/0x1+parseInt(_0x1b6aee(0x2cf))/0x2+parseInt(_0x1b6aee(0x242))/0x3*(parseInt(_0x1b6aee(0x2e7))/0x4)+parseInt(_0x1b6aee(0x2dd))/0x5+parseInt(_0x1b6aee(0x260))/0x6*(parseInt(_0x1b6aee(0x2e0))/0x7)+-parseInt(_0x1b6aee(0x1bd))/0x8*(parseInt(_0x1b6aee(0x1c3))/0x9)+parseInt(_0x1b6aee(0x27c))/0xa;if(_0x2a8396===_0x4ad601)break;else _0x2b0fd5['push'](_0x2b0fd5['shift']());}catch(_0x1ca813){_0x2b0fd5['push'](_0x2b0fd5['shift']());}}}(_0x4d05,0x61a6f),(function(){'use strict';const _0x4d4009=_0x2ddc;function _0x48d472(_0x5bb14e,_0x55ed4f,_0x25823c,_0x2aa884){function _0x22e6a4(_0x479d05){return _0x479d05 instanceof _0x25823c?_0x479d05:new _0x25823c(function(_0x5220c8){_0x5220c8(_0x479d05);});}return new(_0x25823c||(_0x25823c=Promise))(function(_0x14fdcc,_0x177711){const _0x145943=_0x2ddc;function _0x4056f8(_0x387ba0){const _0x30ce9a=_0x2ddc;try{_0x5e06f3(_0x2aa884[_0x30ce9a(0x271)](_0x387ba0));}catch(_0x59e6fb){_0x177711(_0x59e6fb);}}function _0x44c086(_0x464b76){const _0x5cf1c0=_0x2ddc;try{_0x5e06f3(_0x2aa884[_0x5cf1c0(0x208)](_0x464b76));}catch(_0x6bba1e){_0x177711(_0x6bba1e);}}function _0x5e06f3(_0x539dbe){const _0x527012=_0x2ddc;_0x539dbe[_0x527012(0x263)]?_0x14fdcc(_0x539dbe[_0x527012(0x21d)]):_0x22e6a4(_0x539dbe['value'])[_0x527012(0x2d0)](_0x4056f8,_0x44c086);}_0x5e06f3((_0x2aa884=_0x2aa884[_0x145943(0x2b5)](_0x5bb14e,_0x55ed4f||[]))[_0x145943(0x271)]());});}typeof SuppressedError===_0x4d4009(0x21e)?SuppressedError:function(_0x57c236,_0x1b131e,_0x15f68c){const _0x2e15ac=_0x4d4009;var _0x2ed3d8=new Error(_0x15f68c);return _0x2ed3d8[_0x2e15ac(0x203)]=_0x2e15ac(0x277),_0x2ed3d8[_0x2e15ac(0x2b6)]=_0x57c236,_0x2ed3d8[_0x2e15ac(0x1b4)]=_0x1b131e,_0x2ed3d8;};const _0x347e6a=_0x4d4009(0x1c8),_0x3713b2=_0x4d4009(0x278),_0x113f75=_0x4d4009(0x21f),_0x1c1919=_0x4d4009(0x2c0),_0x557f33=_0x4d4009(0x27f),_0x4c1ebf='ns=0;i=45',_0x5ab642=_0x4d4009(0x214);var _0x594c24;(function(_0x50fcaa){const _0x544851=_0x4d4009;_0x50fcaa[_0x50fcaa[_0x544851(0x2bd)]=0x0]='Forward',_0x50fcaa[_0x50fcaa[_0x544851(0x1f9)]=0x1]=_0x544851(0x1f9),_0x50fcaa[_0x50fcaa[_0x544851(0x1e6)]=0x2]=_0x544851(0x1e6),_0x50fcaa[_0x50fcaa['Invalid']=0x3]='Invalid';}(_0x594c24||(_0x594c24={})));var _0x181959;(function(_0x46f842){const _0x2799f6=_0x4d4009;_0x46f842[_0x46f842['Unspecified']=0x0]=_0x2799f6(0x255),_0x46f842[_0x46f842[_0x2799f6(0x225)]=0x1]=_0x2799f6(0x225),_0x46f842[_0x46f842[_0x2799f6(0x25d)]=0x2]=_0x2799f6(0x25d),_0x46f842[_0x46f842[_0x2799f6(0x2d3)]=0x4]=_0x2799f6(0x2d3),_0x46f842[_0x46f842['ObjectType']=0x8]='ObjectType',_0x46f842[_0x46f842[_0x2799f6(0x2a4)]=0x10]=_0x2799f6(0x2a4),_0x46f842[_0x46f842[_0x2799f6(0x1ed)]=0x20]=_0x2799f6(0x1ed),_0x46f842[_0x46f842[_0x2799f6(0x20c)]=0x40]=_0x2799f6(0x20c),_0x46f842[_0x46f842['View']=0x80]=_0x2799f6(0x21c);}(_0x181959||(_0x181959={})));var _0x16c52b;(function(_0x2afa87){const _0x1bfeba=_0x4d4009;_0x2afa87[_0x2afa87[_0x1bfeba(0x225)]=0x1]=_0x1bfeba(0x225),_0x2afa87[_0x2afa87[_0x1bfeba(0x25d)]=0x2]=_0x1bfeba(0x25d),_0x2afa87[_0x2afa87[_0x1bfeba(0x2d3)]=0x4]=_0x1bfeba(0x2d3),_0x2afa87[_0x2afa87[_0x1bfeba(0x2aa)]=0x8]=_0x1bfeba(0x2aa),_0x2afa87[_0x2afa87[_0x1bfeba(0x2a4)]=0x10]=_0x1bfeba(0x2a4),_0x2afa87[_0x2afa87[_0x1bfeba(0x1ed)]=0x20]=_0x1bfeba(0x1ed),_0x2afa87[_0x2afa87[_0x1bfeba(0x20c)]=0x40]=_0x1bfeba(0x20c),_0x2afa87[_0x2afa87[_0x1bfeba(0x21c)]=0x80]=_0x1bfeba(0x21c);}(_0x16c52b||(_0x16c52b={})));var _0x5b3d10;(function(_0x4aee91){const _0x2a3298=_0x4d4009;_0x4aee91[_0x4aee91[_0x2a3298(0x1ed)]=0x1]='ReferenceType',_0x4aee91[_0x4aee91['IsForward']=0x2]='IsForward',_0x4aee91[_0x4aee91[_0x2a3298(0x281)]=0x4]=_0x2a3298(0x281),_0x4aee91[_0x4aee91[_0x2a3298(0x1b9)]=0x8]=_0x2a3298(0x1b9),_0x4aee91[_0x4aee91[_0x2a3298(0x274)]=0x10]=_0x2a3298(0x274),_0x4aee91[_0x4aee91[_0x2a3298(0x2a5)]=0x20]=_0x2a3298(0x2a5);}(_0x5b3d10||(_0x5b3d10={})));function _0x13bfb3(_0x5a767c){const _0x59ec26=_0x4d4009;switch(_0x5a767c){case _0x59ec26(0x285):return _0x347e6a;case'HasProperty':return _0x1c1919;case _0x59ec26(0x1e5):return _0x113f75;case _0x59ec26(0x29e):return _0x557f33;case _0x59ec26(0x1d5):return _0x4c1ebf;case _0x59ec26(0x1d0):return _0x5ab642;}}const _0x3c1ae4=_0x499ec6=>{const _0x3ceb50=_0x4d4009;switch(_0x499ec6['nodeClass']){case _0x3ceb50(0x225):if(_0x499ec6[_0x3ceb50(0x25a)]===_0x347e6a);if(_0x499ec6['typeDefinition']===_0x3713b2||_0x499ec6['referenceTypeId']===_0x3ceb50(0x29b))return{'icon':'fa-folder','color':_0x3ceb50(0x2ca)};return{'icon':_0x3ceb50(0x2d8),'color':'SeaGreen'};case _0x3ceb50(0x25d):if(_0x499ec6[_0x3ceb50(0x25a)]===_0x113f75)return{'icon':_0x3ceb50(0x232),'color':_0x3ceb50(0x273)};else return _0x499ec6['referenceTypeId']===_0x1c1919?{'icon':_0x3ceb50(0x232),'color':_0x3ceb50(0x1f4)}:{'icon':'fa-list-alt','color':'CadetBlue'};case _0x3ceb50(0x2d3):return{'icon':_0x3ceb50(0x228),'color':_0x3ceb50(0x28d)};case _0x3ceb50(0x2aa):return{'icon':'fa-object-group','color':'DarkOrange'};case _0x3ceb50(0x2a4):return{'icon':_0x3ceb50(0x1cc),'color':_0x3ceb50(0x244)};case _0x3ceb50(0x20c):return{'icon':_0x3ceb50(0x211),'color':_0x3ceb50(0x1ff)};}return{'icon':'fa-question','color':'grey'};},_0x519f99=(_0x5d4aa3,_0x486727,_0x4de2a2)=>_0x48d472(void 0x0,[_0x5d4aa3,_0x486727,_0x4de2a2],void 0x0,function*({endpointNode:_0x287058,endpoint:_0xccee35,baseUrl:_0x24a3e2},_0x28e75d,_0x43ef6e){const _0x568ffe=_0x4d4009,_0x2bc157=_0x24a3e2+_0x568ffe(0x210),_0x36decb=_0x2bc157+_0x568ffe(0x2c5),_0x4d88be=Object['assign'](Object[_0x568ffe(0x2b1)]({},_0x43ef6e),{'nodeId':_0x28e75d,'resultMask':0x3f}),_0x44dd55=yield fetch(_0x36decb,{'method':'POST','body':JSON[_0x568ffe(0x1c2)]({'endpointNode':_0x287058,'endpoint':_0xccee35,'browseDescription':_0x4d88be}),'headers':{'Content-Type':_0x568ffe(0x1e9)}});if(_0x44dd55[_0x568ffe(0x24a)]!==0xc8)return console['log'](_0x568ffe(0x262),_0x44dd55[_0x568ffe(0x24a)],_0x44dd55[_0x568ffe(0x1e4)]),{'references':[]};const _0x53bef5=yield _0x44dd55[_0x568ffe(0x23d)](),_0xd590b6=_0x53bef5[_0x568ffe(0x28e)]['references']||[];return{'references':_0xd590b6};}),_0x3bb365={'referenceTypeId':_0x13bfb3('HasChild'),'includeSubtypes':!![],'browseDirection':_0x594c24[_0x4d4009(0x2bd)],'nodeClassMask':_0x181959[_0x4d4009(0x25d)]|_0x181959[_0x4d4009(0x225)]|_0x181959[_0x4d4009(0x2d3)],'resultMask':0x3f},_0x30a838={'referenceTypeId':_0x13bfb3('Organizes'),'includeSubtypes':!![],'browseDirection':_0x594c24['Forward'],'nodeClassMask':_0x181959['Variable']|_0x181959[_0x4d4009(0x225)]|_0x181959[_0x4d4009(0x2d3)],'resultMask':0x3f},_0x422f10=(_0xa267dd,_0x37a323)=>_0x48d472(void 0x0,[_0xa267dd,_0x37a323],void 0x0,function*({endpointNode:_0x5b68c0,endpoint:_0x17ca6d,baseUrl:_0x158a40},{nodeId:_0x5b1916,rootNodeId:_0x197362,isType:_0x1a6972}){const _0x182f8f=_0x4d4009,_0x4a304f=_0x158a40+'/opcua-for-node-red',_0x8350d7=_0x4a304f+_0x182f8f(0x21a),_0x57b521=yield fetch(_0x8350d7,{'method':'POST','body':JSON[_0x182f8f(0x1c2)]({'endpointNode':_0x5b68c0,'endpoint':_0x17ca6d,'nodeId':_0x5b1916,'rootNodeId':_0x197362,'isType':_0x1a6972}),'headers':{'Content-Type':_0x182f8f(0x1e9)}});if(_0x57b521['status']!==0xc8)return null;const _0x10b9fe=yield _0x57b521[_0x182f8f(0x23d)]();return _0x10b9fe[_0x182f8f(0x280)];}),_0x1b7d3d=(_0x85d878,_0x562f28)=>{const _0x2c858e=_0x4d4009;if(_0x85d878['statusCode']!=='Good')return _0x85d878[_0x2c858e(0x2b3)];switch(_0x562f28){case _0x2c858e(0x280):return _0x85d878[_0x2c858e(0x256)];case'aliasedBrowsePath':return _0x85d878[_0x2c858e(0x251)]||_0x85d878['bp_indexed'];case _0x2c858e(0x26e):return _0x85d878['nodeId_aliased']||_0x85d878['nodeId_nsu'];case'nsuNodeID':return _0x85d878[_0x2c858e(0x26c)];default:case _0x2c858e(0x2c1):return _0x85d878['nodeId'];}},_0x56062d=_0x5b8124=>{const _0x32d75e=_0x4d4009;if(_0x5b8124[_0x32d75e(0x2e4)]!=='Good')return'statusCode:\x20'+_0x5b8124['statusCode'];else{let _0x92879b=[];return _0x92879b['push'](_0x32d75e(0x252)+_0x5b8124['nodeId']),_0x92879b[_0x32d75e(0x213)](_0x32d75e(0x2cb)+_0x5b8124[_0x32d75e(0x256)]),_0x92879b[_0x32d75e(0x213)](_0x32d75e(0x1ea)+_0x181959[_0x5b8124['nodeClass']]),_0x5b8124[_0x32d75e(0x26c)]&&_0x92879b[_0x32d75e(0x213)](_0x32d75e(0x1b5)+_0x5b8124[_0x32d75e(0x26c)]),_0x5b8124[_0x32d75e(0x2c2)]&&_0x92879b[_0x32d75e(0x213)](_0x32d75e(0x201)+_0x5b8124['nodeId_aliased']),_0x5b8124[_0x32d75e(0x256)]&&_0x92879b[_0x32d75e(0x213)](_0x32d75e(0x276)+_0x5b8124[_0x32d75e(0x251)]),_0x92879b[_0x32d75e(0x261)]('\x0a');}};function _0x243356(_0x28ca14){const _0x43b22c=_0x4d4009;if(_0x28ca14[_0x43b22c(0x1f3)](/^nsu=/))return'nsuNodeID';if(_0x28ca14[_0x43b22c(0x1f3)](/^(ns=.*;)?(i|b|s|g)=/))return _0x43b22c(0x2c1);if(_0x28ca14[_0x43b22c(0x1f3)](/^nsa=/))return'aliasedNodeId';if(_0x28ca14[_0x43b22c(0x1f3)](/^(\/|\.)[0-9]+:/))return _0x43b22c(0x280);if(_0x28ca14['match'](/^(\/|\.).*:/))return _0x43b22c(0x280);}function _0x4400eb(_0x22e98b){const _0x306b2e=_0x4d4009,_0x25f998=_0x243356(_0x22e98b);switch(_0x25f998){case'nodeId':return'n';case _0x306b2e(0x26e):return'na';case _0x306b2e(0x235):return _0x306b2e(0x297);case _0x306b2e(0x280):return'b';case _0x306b2e(0x1ba):return'ab';default:return't';}}function _0x58370d(_0x4a101d){const _0x2800a7=_0x4d4009;let _0x57437e;switch(_0x4a101d){case'n':_0x57437e='nodeId';break;case'na':_0x57437e=_0x2800a7(0x26e);break;case _0x2800a7(0x297):_0x57437e=_0x2800a7(0x235);break;case'b':_0x57437e=_0x2800a7(0x280);break;case'ab':_0x57437e=_0x2800a7(0x1ba);break;}return _0x57437e;}function _0x28d514(_0x1be344){const _0x3bd93c=_0x4d4009;switch(_0x1be344){case _0x3bd93c(0x2c1):return'n';case'aliasedNodeId':return'na';case _0x3bd93c(0x235):return _0x3bd93c(0x297);case'browsePath':return'b';case _0x3bd93c(0x1ba):return'ab';default:return't';}}const _0x4b6227=(_0x51d611,_0x2b3d43)=>_0x48d472(void 0x0,[_0x51d611,_0x2b3d43],void 0x0,function*({endpointNode:_0x204695,endpoint:_0x4d9481,baseUrl:_0x320d0f},_0x1af472){const _0xfd9b1c=_0x4d4009,_0x168df2=_0x320d0f+_0xfd9b1c(0x210),_0x427d8a=_0x168df2+_0xfd9b1c(0x2de),_0x1ec0b3=_0x204695['id'],_0x4f40c2=RED[_0xfd9b1c(0x2ba)]['node'](_0x1ec0b3);console[_0xfd9b1c(0x259)](_0x4f40c2[_0xfd9b1c(0x1b7)]),_0x4f40c2[_0xfd9b1c(0x1b7)];const _0x442fd3=_0x204695[_0xfd9b1c(0x1b7)],_0x479b45=yield fetch(_0x427d8a,{'method':'POST','body':JSON[_0xfd9b1c(0x1c2)]({'endpointNode':_0x204695,'endpoint':_0x4d9481,'nodeId':_0x1af472,'namespaceAliases':_0x442fd3}),'headers':{'Content-Type':_0xfd9b1c(0x1e9)}}),_0x4aa741=yield _0x479b45[_0xfd9b1c(0x23d)]();return{'json':_0x4aa741,'data':_0x479b45};}),_0x4770de=(_0x179935,_0x5e9ea5,_0x290b98,_0x5258dc)=>_0x48d472(void 0x0,[_0x179935,_0x5e9ea5,_0x290b98,_0x5258dc],void 0x0,function*({endpointNode:_0x2d77c6,endpoint:_0x3ca426,baseUrl:_0x240f4c},_0x5b59b9,_0x21222a,_0x26daa7){const _0x11ab3c=_0x4d4009,_0x246622=_0x21222a[_0x11ab3c(0x24c)](),{json:_0x3e85b5,data:_0x4077e6}=yield _0x4b6227({'endpointNode':_0x2d77c6,'endpoint':_0x3ca426,'baseUrl':_0x240f4c},_0x246622),_0x12ebcb=(_0x12a910,_0x1c4006)=>{const _0xda243=_0x11ab3c;_0x26daa7[_0xda243(0x22a)](_0x12a910)[_0xda243(0x1c9)]('sterfive-info')['addClass'](_0x1c4006),_0x26daa7[_0xda243(0x2ac)](),setTimeout(()=>{const _0x55f6a6=_0xda243;_0x26daa7[_0x55f6a6(0x1f8)](_0x1c4006),_0x26daa7[_0x55f6a6(0x2a0)]();},0xbb8);};if(_0x4077e6[_0x11ab3c(0x24a)]!==0xc8)return _0x12ebcb('!!failure!!'+_0x246622,'failure'),![];else{if(_0x3e85b5[_0x11ab3c(0x2e4)][_0x11ab3c(0x1f3)](/Good/)){const _0x4f1dd1=_0x56062d(_0x3e85b5);_0x21222a[_0x11ab3c(0x26d)](_0x11ab3c(0x1f5),_0x4f1dd1);const _0x478725=_0x1b7d3d(_0x3e85b5,_0x5b59b9);return _0x21222a[_0x11ab3c(0x24c)](_0x478725),_0x21222a[_0x11ab3c(0x2ad)](_0x11ab3c(0x266)),_0x12ebcb(_0x11ab3c(0x222),'ok'),!![];}else return _0x21222a[_0x11ab3c(0x24c)](''+_0x246622),_0x12ebcb(_0x3e85b5[_0x11ab3c(0x2e4)]+'\x20'+_0x4077e6[_0x11ab3c(0x1e4)],_0x11ab3c(0x250)),![];}});function _0x39622e(_0x2cb611,_0x5799d5){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x454da2=_0x2ddc,_0x1b1c87=_0x2cb611['data'](_0x454da2(0x21d)),_0x441907=yield _0x519f99(_0x5799d5,_0x1b1c87,_0x3bb365),_0x1c531c=yield _0x519f99(_0x5799d5,_0x1b1c87,_0x30a838);return{'references':[..._0x441907[_0x454da2(0x1df)],..._0x1c531c[_0x454da2(0x1df)]]};});}const _0x5062a5={'referenceTypeId':_0x13bfb3(_0x4d4009(0x1d5)),'includeSubtypes':!![],'browseDirection':_0x594c24[_0x4d4009(0x2bd)],'nodeClassMask':_0x181959[_0x4d4009(0x1ed)]|_0x181959[_0x4d4009(0x2aa)]|_0x181959[_0x4d4009(0x20c)]|_0x181959[_0x4d4009(0x2a4)],'resultMask':0x3f};function _0x163293(_0x41f17e,_0x58b92c){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x5baf2b=_0x2ddc,_0x1ad366=_0x41f17e['data'](_0x5baf2b(0x21d)),_0x1b6e1f=yield _0x519f99(_0x58b92c,_0x1ad366,_0x5062a5);return _0x1b6e1f;});}const _0x3e9855=_0x400fed=>{const _0x268c8e=_0x4d4009;var _0x28a325,_0x4fbfd3,_0x53e395,_0x1a3e3a;if(!_0x400fed||!_0x400fed[_0x268c8e(0x2c1)]){const _0x5a6720=$(_0x268c8e(0x2e5));return _0x5a6720;}const _0x4c0494=_0x400fed[_0x268c8e(0x2c1)]['toString'](),_0x332fb0=((_0x28a325=_0x400fed[_0x268c8e(0x249)])===null||_0x28a325===void 0x0?void 0x0:_0x28a325[_0x268c8e(0x22a)])||((_0x4fbfd3=_0x400fed[_0x268c8e(0x231)])===null||_0x4fbfd3===void 0x0?void 0x0:_0x4fbfd3[_0x268c8e(0x203)])||_0x400fed[_0x268c8e(0x2c1)][_0x268c8e(0x1e3)](),{icon:_0x5b9044,color:_0x499d07}=_0x3c1ae4(_0x400fed),_0x1f1227='('+_0x400fed[_0x268c8e(0x2c1)][_0x268c8e(0x1e3)]()+')\x20'+(((_0x53e395=_0x400fed['browseName'])===null||_0x53e395===void 0x0?void 0x0:_0x53e395[_0x268c8e(0x203)])||((_0x1a3e3a=_0x400fed[_0x268c8e(0x249)])===null||_0x1a3e3a===void 0x0?void 0x0:_0x1a3e3a[_0x268c8e(0x22a)])||''),_0x1a7c56=$(_0x268c8e(0x283)+_0x400fed[_0x268c8e(0x2c1)][_0x268c8e(0x1e3)]()+'\x22}><span\x20class=\x22tree-text\x22\x20title='+_0x1f1227+_0x268c8e(0x2ab)+_0x5b9044+_0x268c8e(0x1fd)+_0x499d07+';\x22></i>\x20'+_0x332fb0+_0x268c8e(0x1c1));return _0x1a7c56[_0x268c8e(0x1c9)](_0x268c8e(0x267)),_0x1a7c56['data']('value',_0x4c0494),_0x1a7c56[_0x268c8e(0x2e8)](_0x268c8e(0x294),_0x400fed),_0x1a7c56;},_0xf665fd=(_0x27fa5e,_0x19144f)=>{const _0x15b163=_0x4d4009;return _0x19144f[_0x15b163(0x1be)](_0x15b163(0x2b0)+_0x27fa5e+'\x22]');},_0x494c99=(_0xb14eca,_0x16e97a)=>{const _0xdb16be=_0x4d4009;_0xb14eca['$tree'][_0xdb16be(0x1be)]('li\x20>\x20.tree-text')['removeClass'](_0xdb16be(0x257)),_0x16e97a[_0xdb16be(0x1be)]('.tree-text:first')['addClass'](_0xdb16be(0x257));},_0x40816d=(_0x492190,_0x2a30a9,_0x506823)=>_0x48d472(void 0x0,void 0x0,void 0x0,function*(){const _0x235f2a=_0x4d4009;let _0x1cd847=_0x506823[_0x235f2a(0x206)](':first');_0x2a30a9[_0x235f2a(0x230)]['elements']||[];const _0x35727b=_0x2a30a9['nodeIds']||[];if(_0x35727b[_0x235f2a(0x1c7)]===0x0)return;for(const _0xa2971b of _0x35727b){_0x1cd847[_0x235f2a(0x1d1)](_0x235f2a(0x267))&&(yield _0x448a3f(_0x492190,_0x1cd847));const _0x2a4c6a=_0xf665fd(_0xa2971b,_0x1cd847);if(_0x2a4c6a[_0x235f2a(0x1c7)]===0x0)return;_0x1cd847=_0x2a4c6a;}_0x494c99(_0x492190,_0x1cd847),_0x513a7d(_0x492190[_0x235f2a(0x24f)],_0x1cd847);});function _0x513a7d(_0x4036d2,_0x32ef49){const _0x591bf2=_0x4d4009,_0x360f37=_0x32ef49[_0x591bf2(0x227)]()[_0x591bf2(0x20a)],_0x5d967c=_0x4036d2['scrollTop']();if(_0x5d967c==undefined)return;const _0x3e3a15=_0x5d967c+_0x360f37-_0x4036d2[_0x591bf2(0x268)]()/0x2+_0x32ef49['height']()/0x2;_0x4036d2[_0x591bf2(0x23a)]({'scrollTop':_0x3e3a15},0x1f4);}const _0xd88693=(_0x337b52,_0x46bb46)=>_0x48d472(void 0x0,void 0x0,void 0x0,function*(){const _0x5eb001=_0x4d4009,_0x266289=_0x337b52[_0x5eb001(0x2b2)][_0x5eb001(0x24c)](),_0x921420={'nodeId':_0x266289,'rootNodeId':_0x46bb46['nodeId'],'isType':_0x337b52['options'][_0x5eb001(0x1fc)]||![]},_0x15d279=_0x137c61(_0x337b52),_0x536ebc=yield _0x422f10(_0x15d279,_0x921420);if(!_0x536ebc)return;yield _0x40816d(_0x337b52,_0x536ebc,_0x337b52[_0x5eb001(0x2b7)]);});function _0x1cc38e(_0xa63cb4,_0x1c226c,_0x556f36,_0x2082fe){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x1e87b5=_0x2ddc;if(_0x1c226c[_0x1e87b5(0x1d1)](_0x1e87b5(0x29f))){console[_0x1e87b5(0x259)]('already\x20fetched');return;}if(_0x1c226c['hasClass'](_0x1e87b5(0x293))){console[_0x1e87b5(0x259)]('already\x20loading');return;}_0x1c226c[_0x1e87b5(0x1c9)]('loading'),_0x1c226c[_0x1e87b5(0x26b)](_0x1e87b5(0x1dd));try{_0x1c226c[_0x1e87b5(0x206)]('ul')[_0x1e87b5(0x238)]();const {references:_0x4db12b}=yield _0x556f36(_0x1c226c,_0x2082fe);_0x4db12b[_0x1e87b5(0x2a2)]((_0xac2aa5,_0x1efa41)=>{const _0xd7b1f=_0x1e87b5;var _0x54ab0b,_0xee426f;return(((_0x54ab0b=_0xac2aa5[_0xd7b1f(0x231)])===null||_0x54ab0b===void 0x0?void 0x0:_0x54ab0b[_0xd7b1f(0x203)])||'')['localeCompare'](((_0xee426f=_0x1efa41[_0xd7b1f(0x231)])===null||_0xee426f===void 0x0?void 0x0:_0xee426f[_0xd7b1f(0x203)])||'');});for(const _0x2b2165 of _0x4db12b){if(_0xa63cb4[_0x1e87b5(0x295)][_0x1e87b5(0x212)]&&!_0xa63cb4['options'][_0x1e87b5(0x212)](_0x2b2165))continue;const _0x3541ae=_0x3e9855(_0x2b2165);_0x1c226c[_0x1e87b5(0x206)]('ul')[_0x1e87b5(0x26b)](_0x3541ae);}_0x1c226c['addClass'](_0x1e87b5(0x29f));}catch(_0x2fd546){_0x1c226c[_0x1e87b5(0x206)]('ul')['append']('<li>error\x20'+_0x2fd546[_0x1e87b5(0x221)]+_0x1e87b5(0x202)),console[_0x1e87b5(0x259)](_0x1e87b5(0x236),_0x2fd546);}_0x1c226c[_0x1e87b5(0x1be)](_0x1e87b5(0x2d5))[_0x1e87b5(0x1e1)](),_0x1c226c['removeClass'](_0x1e87b5(0x293));});}function _0x137c61(_0x4e25ff){const _0x50059f=_0x4d4009,_0x56659d={'baseUrl':_0x4e25ff[_0x50059f(0x295)]['baseUrl'],'endpointNode':typeof _0x4e25ff[_0x50059f(0x295)][_0x50059f(0x22d)]===_0x50059f(0x21e)?_0x4e25ff[_0x50059f(0x295)][_0x50059f(0x22d)]():_0x4e25ff[_0x50059f(0x295)][_0x50059f(0x22d)],'endpoint':typeof _0x4e25ff[_0x50059f(0x295)][_0x50059f(0x218)]===_0x50059f(0x21e)?_0x4e25ff['options'][_0x50059f(0x218)]():_0x4e25ff[_0x50059f(0x295)][_0x50059f(0x218)]};return _0x56659d;}function _0x448a3f(_0x4e8cc7,_0x805a60){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x5acd18=_0x2ddc;if(_0x805a60['hasClass'](_0x5acd18(0x29f))){_0x805a60[_0x5acd18(0x1f8)](_0x5acd18(0x267))['addClass'](_0x5acd18(0x1ca)),_0x805a60[_0x5acd18(0x206)]('ul')[_0x5acd18(0x2d4)]();return;}const _0x1add05=_0x137c61(_0x4e8cc7),_0x2cf851=!_0x4e8cc7[_0x5acd18(0x295)]['isTypeRef']?_0x39622e:_0x163293;try{yield _0x1cc38e(_0x4e8cc7,_0x805a60,_0x2cf851,_0x1add05),_0x805a60[_0x5acd18(0x1f8)](_0x5acd18(0x267))[_0x5acd18(0x1c9)]('expanded');}catch(_0x357925){_0x805a60[_0x5acd18(0x1f8)](_0x5acd18(0x267))[_0x5acd18(0x1c9)](_0x5acd18(0x1ca)),console[_0x5acd18(0x259)](_0x5acd18(0x2b6),_0x357925);}});}const _0x3cf080={'browseName':{'namespaceIndex':0x0,'name':_0x4d4009(0x22f)},'nodeClass':'Object','nodeId':_0x4d4009(0x219),'displayName':{'text':_0x4d4009(0x22f)},'typeDefinition':_0x3713b2},_0x4dd192=()=>{const _0x9be7c7=_0x4d4009;$[_0x9be7c7(0x23c)](_0x9be7c7(0x1c0),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x3cf080,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x1363b3=_0x2ddc,_0x443370=this;if(_0x443370[_0x1363b3(0x25c)]==undefined){const _0x5ef7a9=typeof _0x443370['options'][_0x1363b3(0x1d2)]===_0x1363b3(0x21e)?_0x443370['options'][_0x1363b3(0x1d2)][_0x1363b3(0x204)](_0x443370):_0x443370[_0x1363b3(0x295)]['parentNode'];if(_0x5ef7a9 instanceof Promise){const _0x5b8264=yield _0x5ef7a9;_0x443370['__parentNode']=_0x5b8264;}else _0x443370['__parentNode']=_0x5ef7a9;}return _0x443370['__parentNode']||_0x3cf080;});},'reset'(){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x4205da=_0x2ddc,_0x5a8808=this,_0x50eba8=_0x5a8808;_0x50eba8[_0x4205da(0x25c)]=undefined,_0x5a8808[_0x4205da(0x2b7)][_0x4205da(0x238)]();const _0x599e7c=yield this['resolveParentNode'](),_0x143078=_0x3e9855(_0x599e7c);_0x5a8808[_0x4205da(0x2b7)][_0x4205da(0x26b)](_0x143078),_0x5a8808[_0x4205da(0x2c7)]=_0x599e7c;});},'verify'(_0x5d103d){const _0x33c277=_0x9be7c7,_0x22ca26=this,_0x574c49=_0x137c61(_0x22ca26);_0x4770de(_0x574c49,_0x5d103d,_0x22ca26[_0x33c277(0x2b2)],_0x22ca26['$info'])[_0x33c277(0x2d0)](_0x3d8410=>{const _0x46aaa9=_0x33c277;!_0x3d8410?_0x22ca26['$combo'][_0x46aaa9(0x1c9)]('input-error'):_0x22ca26[_0x46aaa9(0x1cb)][_0x46aaa9(0x1f8)]('input-error');});},'_hideMenu'(_0x4fa9e9){const _0x564b67=_0x9be7c7,_0x442e21=this;$(document)['off']('mousedown.red-ui-typedInput-close-property-select'),_0x4fa9e9[_0x564b67(0x2a0)](),_0x4fa9e9['css']({'height':_0x564b67(0x29c)});if(_0x4fa9e9['opts'][_0x564b67(0x2c4)]){var _0x126ed6=[];_0x4fa9e9[_0x564b67(0x1be)](_0x564b67(0x1fa))[_0x564b67(0x284)](function(){const _0x1b4916=_0x564b67;$(this)['prop'](_0x1b4916(0x1bc))&&_0x126ed6[_0x1b4916(0x213)]($(this)[_0x1b4916(0x2e8)](_0x1b4916(0x21d)));}),_0x4fa9e9[_0x564b67(0x2ce)](_0x126ed6);}_0x442e21[_0x564b67(0x1ce)]['is'](_0x564b67(0x23f))?_0x442e21[_0x564b67(0x2b2)][_0x564b67(0x2ad)](_0x564b67(0x229)):_0x442e21['$selectTrigger'][_0x564b67(0x2ad)](_0x564b67(0x229));},'_createMenu'(_0x2f5fb9,_0x1b8bf0,_0x2631a9){const _0x587bec=_0x9be7c7;var _0x5f1731=this;const _0xe4d10d=$(_0x587bec(0x27b))[_0x587bec(0x1c9)]('sterfive-typedInput-options\x20sterfive-online-menu');return _0xe4d10d['opts']=_0x1b8bf0,_0xe4d10d[_0x587bec(0x2ce)]=_0x2631a9,_0x2f5fb9[_0x587bec(0x2db)](_0x1c693e=>{const _0x5d24fa=_0x587bec;typeof _0x1c693e==='string'&&(_0x1c693e={'value':_0x1c693e,'label':_0x1c693e});var _0x36be02=$(_0x5d24fa(0x1cf))[_0x5d24fa(0x26d)]('value',_0x1c693e[_0x5d24fa(0x21d)])[_0x5d24fa(0x2a8)](_0xe4d10d);_0x1c693e[_0x5d24fa(0x282)]&&_0x36be02[_0x5d24fa(0x22a)](_0x1c693e[_0x5d24fa(0x282)]);_0x1c693e[_0x5d24fa(0x1f5)]&&_0x36be02[_0x5d24fa(0x28f)](_0x5d24fa(0x1f5),_0x1c693e['title']);if(_0x1c693e[_0x5d24fa(0x1ec)]){if(_0x1c693e['icon'][_0x5d24fa(0x2e2)]('<')===0x0)$(_0x1c693e['icon'])['prependTo'](_0x36be02);else _0x1c693e[_0x5d24fa(0x1ec)][_0x5d24fa(0x2e2)]('/')!==-0x1?$('<i>',{'class':_0x5d24fa(0x265),'style':_0x5d24fa(0x2ae)+_0x1c693e[_0x5d24fa(0x1ec)]+_0x5d24fa(0x1bf)+_0x1c693e[_0x5d24fa(0x1ec)]+');'})[_0x5d24fa(0x1c4)](_0x36be02):$('<i>',{'class':_0x5d24fa(0x23e)+_0x1c693e[_0x5d24fa(0x1ec)]})[_0x5d24fa(0x1c4)](_0x36be02);}else _0x36be02['css']({'paddingLeft':'18px'});!_0x1c693e[_0x5d24fa(0x1ec)]&&!_0x1c693e[_0x5d24fa(0x282)]&&_0x36be02[_0x5d24fa(0x22a)](_0x1c693e[_0x5d24fa(0x21d)]);var _0x15a5c2;_0x1b8bf0[_0x5d24fa(0x2c4)]&&(_0x15a5c2=$('<input\x20type=\x22checkbox\x22>')[_0x5d24fa(0x20d)](_0x5d24fa(0x239),_0x5d24fa(0x1f6))[_0x5d24fa(0x2e8)](_0x5d24fa(0x21d),_0x1c693e[_0x5d24fa(0x21d)])[_0x5d24fa(0x1c4)](_0x36be02)['on'](_0x5d24fa(0x1dc),function(_0x596e03){const _0x3ecd3e=_0x5d24fa;_0x596e03[_0x3ecd3e(0x23b)]();})),_0x36be02['on'](_0x5d24fa(0x2dc),function(_0x277d1c){const _0x5a8b35=_0x5d24fa;_0x277d1c[_0x5a8b35(0x23b)](),_0x277d1c[_0x5a8b35(0x1e8)](),!_0x1b8bf0[_0x5a8b35(0x2c4)]?(_0x2631a9(_0x1c693e[_0x5a8b35(0x21d)]),_0x5f1731['_hideMenu'](_0xe4d10d)):_0x15a5c2[_0x5a8b35(0x28f)](_0x5a8b35(0x1bc),!_0x15a5c2[_0x5a8b35(0x28f)](_0x5a8b35(0x1bc)));});}),_0xe4d10d[_0x587bec(0x20d)]({'display':_0x587bec(0x1f6)}),_0xe4d10d['on'](_0x587bec(0x1bb),function(_0x51858f){const _0x43d91d=_0x587bec;if(_0x51858f['keyCode']===0x28)_0x51858f[_0x43d91d(0x23b)](),$(this)[_0x43d91d(0x206)](_0x43d91d(0x270))[_0x43d91d(0x271)]()[_0x43d91d(0x2ad)](_0x43d91d(0x229));else{if(_0x51858f[_0x43d91d(0x21b)]===0x26)_0x51858f[_0x43d91d(0x23b)](),$(this)[_0x43d91d(0x206)](_0x43d91d(0x270))['prev']()[_0x43d91d(0x2ad)](_0x43d91d(0x229));else _0x51858f[_0x43d91d(0x21b)]===0x1b&&(_0x51858f[_0x43d91d(0x23b)](),_0x5f1731[_0x43d91d(0x27d)](_0xe4d10d));}_0x51858f['stopPropagation']();}),_0xe4d10d;},'disarmClick':![],'_showMenu'(_0x231efb,_0x295706){const _0xfa4b7a=_0x9be7c7;if(this[_0xfa4b7a(0x2d1)]){this[_0xfa4b7a(0x2d1)]=![];return;}var _0x3df7f7=this,_0x33f6ca=_0x295706[_0xfa4b7a(0x1cd)](),_0x3b2840=_0x295706[_0xfa4b7a(0x268)](),_0x50a44f=_0x231efb['height'](),_0xe6f2da=_0x3b2840+_0x33f6ca[_0xfa4b7a(0x20a)];_0xe6f2da+_0x50a44f-$(document)[_0xfa4b7a(0x1e7)]()>$(window)['height']()&&(_0xe6f2da-=_0xe6f2da+_0x50a44f-$(window)[_0xfa4b7a(0x268)]()+0x5),_0xe6f2da<0x0&&(_0x231efb[_0xfa4b7a(0x268)](_0x50a44f+_0xe6f2da),_0xe6f2da=0x0),_0x231efb[_0xfa4b7a(0x20d)]({'top':_0xe6f2da+'px','left':_0x33f6ca[_0xfa4b7a(0x216)]+'px'}),_0x231efb[_0xfa4b7a(0x1f1)](0x64),this[_0xfa4b7a(0x24d)](function(){const _0x54362c=_0xfa4b7a;_0x3df7f7[_0x54362c(0x20e)][_0x54362c(0x1c9)](_0x54362c(0x1de)),$(document)['on'](_0x54362c(0x2c8),function(_0x10fd3c){const _0x390696=_0x54362c;!$(_0x10fd3c[_0x390696(0x25e)])[_0x390696(0x243)](_0x231efb)[_0x390696(0x1c7)]&&_0x3df7f7[_0x390696(0x27d)](_0x231efb),$(_0x10fd3c[_0x390696(0x25e)])['closest'](_0x295706)[_0x390696(0x1c7)]&&(_0x3df7f7[_0x390696(0x2d1)]=!![],_0x10fd3c[_0x390696(0x23b)]());});});},'_showTypeMenu'(){const _0xcabb54=_0x9be7c7,_0x49939c=this;this['_showMenu'](_0x49939c[_0xcabb54(0x2bb)],_0x49939c[_0xcabb54(0x1cb)]),_0x49939c[_0xcabb54(0x24f)][_0xcabb54(0x2a0)]();const _0x2e5b5d=_0x49939c[_0xcabb54(0x234)];var _0x5cf7b7=_0x49939c[_0xcabb54(0x2bb)][_0xcabb54(0x1be)](_0xcabb54(0x299)+_0x2e5b5d+'\x27');setTimeout(function(){const _0x9c8349=_0xcabb54;_0x5cf7b7[_0x9c8349(0x2ad)](_0x9c8349(0x229));},0x78);},'_initMenu'(){const _0xca546c=_0x9be7c7,_0x4fc55d=this;_0x4fc55d[_0xca546c(0x1d6)][_0xca546c(0x26d)](_0xca546c(0x29a),-0x1),_0x4fc55d[_0xca546c(0x1d6)]['on']('mousedown.red-ui-typedInput-focus-block',function(_0x59f096){const _0x41cb65=_0xca546c;_0x59f096[_0x41cb65(0x23b)]();});_0x4fc55d[_0xca546c(0x2bb)]&&_0x4fc55d[_0xca546c(0x2bb)][_0xca546c(0x1e1)]();const _0x2fcf9e=[{'label':_0xca546c(0x22a),'value':'t','title':_0xca546c(0x22c),'icon':_0xca546c(0x2e3)},{'label':_0xca546c(0x1f2),'value':_0xca546c(0x2d6),'title':_0xca546c(0x2cd),'icon':'<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>'},{'label':_0xca546c(0x2bf),'value':'n','icon':_0xca546c(0x1ef)},{'label':_0xca546c(0x2e9),'value':'na','icon':_0xca546c(0x296)},{'label':_0xca546c(0x1d8),'value':'nsu','icon':_0xca546c(0x205)},{'label':_0xca546c(0x28a),'value':'b','icon':_0xca546c(0x217)},{'label':_0xca546c(0x2e6),'value':'ab','icon':'<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;'}],_0x5892dc=_0x4400eb(_0x4fc55d[_0xca546c(0x2b2)][_0xca546c(0x24c)]()),_0x3f6f83=_0x2fcf9e['find'](_0x24f21d=>_0x24f21d[_0xca546c(0x21d)]===_0x5892dc);_0x4fc55d[_0xca546c(0x2b9)][_0xca546c(0x238)]()[_0xca546c(0x26b)](_0xca546c(0x1c5)+((_0x3f6f83===null||_0x3f6f83===void 0x0?void 0x0:_0x3f6f83[_0xca546c(0x1f5)])||'')+_0xca546c(0x2a1)+((_0x3f6f83===null||_0x3f6f83===void 0x0?void 0x0:_0x3f6f83[_0xca546c(0x1ec)])||'')+_0xca546c(0x1b6)),_0x4fc55d[_0xca546c(0x234)]=_0x5892dc;const _0x16b9dd=this;_0x4fc55d[_0xca546c(0x2bb)]=this[_0xca546c(0x2a6)](_0x2fcf9e,{},_0x2f6703=>{const _0x32a65e=_0xca546c,_0x54b8bc=_0x58370d(_0x2f6703);_0x54b8bc&&_0x16b9dd[_0x32a65e(0x207)](_0x54b8bc);const _0x56df85=_0x2fcf9e[_0x32a65e(0x1be)](_0x32cb42=>_0x32cb42[_0x32a65e(0x21d)]===_0x2f6703);_0x4fc55d['selectedMenuItem']=_0x2f6703,_0x4fc55d[_0x32a65e(0x2b9)][_0x32a65e(0x238)]()[_0x32a65e(0x26b)](_0x32a65e(0x1c5)+((_0x56df85===null||_0x56df85===void 0x0?void 0x0:_0x56df85['title'])||'')+_0x32a65e(0x2a1)+((_0x56df85===null||_0x56df85===void 0x0?void 0x0:_0x56df85[_0x32a65e(0x1ec)])||'')+_0x32a65e(0x1b6));}),_0x4fc55d[_0xca546c(0x2bb)][_0xca546c(0x2a8)](document[_0xca546c(0x245)]),_0x4fc55d['$menu'][_0xca546c(0x2a0)](),_0x4fc55d[_0xca546c(0x1d6)][_0xca546c(0x2ac)]();},'mode'(){const _0x225ddb=_0x9be7c7,_0xa89064=this;return _0x58370d(_0xa89064[_0x225ddb(0x234)]);},'setMode'(_0x3f92c8){const _0x494ed2=_0x9be7c7,_0x5c02ae=this,_0x2ace46=_0x28d514(_0x3f92c8);_0x5c02ae[_0x494ed2(0x234)]=_0x2ace46;},'_create'(){const _0xe8c6d0=_0x9be7c7,_0x317b0a=this;_0x317b0a[_0xe8c6d0(0x2b2)]=this[_0xe8c6d0(0x2da)],_0x317b0a['$input'][_0xe8c6d0(0x20d)](_0xe8c6d0(0x2d9),'none'),_0x317b0a[_0xe8c6d0(0x1ce)]=_0x317b0a[_0xe8c6d0(0x2b2)]['wrap'](_0xe8c6d0(0x27b))[_0xe8c6d0(0x28b)]()['addClass'](_0xe8c6d0(0x1db)),_0x317b0a[_0xe8c6d0(0x1cb)]=$('<div/>'),_0x317b0a[_0xe8c6d0(0x1cb)][_0xe8c6d0(0x1c9)](_0xe8c6d0(0x2c9)),_0x317b0a[_0xe8c6d0(0x2b2)][_0xe8c6d0(0x240)](_0x317b0a['$combo']),_0x317b0a[_0xe8c6d0(0x2d2)]=$(_0xe8c6d0(0x1d3))[_0xe8c6d0(0x1c9)]('input-group'),_0x317b0a[_0xe8c6d0(0x1cb)][_0xe8c6d0(0x26b)](_0x317b0a['$inputGroup']),_0x317b0a[_0xe8c6d0(0x2d2)]['append'](_0x317b0a['$input']),_0x317b0a['$toggleTreeBtn']=$(_0xe8c6d0(0x27e)),_0x317b0a[_0xe8c6d0(0x2b2)]['after'](_0x317b0a[_0xe8c6d0(0x24b)]),_0x317b0a[_0xe8c6d0(0x24b)]['on']('click',function(){return _0x48d472(this,void 0x0,void 0x0,function*(){const _0x5df067=_0x2ddc;var _0x5ea836;let _0x525717=![],_0x1698da;!_0x317b0a[_0x5df067(0x24f)]['is'](_0x5df067(0x23f))&&(_0x317b0a['$info'][_0x5df067(0x2a0)](),_0x1698da=yield _0x317b0a[_0x5df067(0x20b)](),(_0x1698da!==_0x317b0a[_0x5df067(0x2c7)]||((_0x5ea836=_0x317b0a['currentParent'])===null||_0x5ea836===void 0x0?void 0x0:_0x5ea836['nodeId'])!==_0x1698da[_0x5df067(0x2c1)])&&(yield _0x317b0a[_0x5df067(0x1e0)]()),_0x525717=!![]),_0x317b0a[_0x5df067(0x24f)]['toggle'](),_0x525717&&(yield _0xd88693(_0x317b0a,_0x1698da));});}),_0x317b0a['$verifyBtn']=$(_0xe8c6d0(0x1d9)),_0x317b0a[_0xe8c6d0(0x2b2)]['after'](_0x317b0a[_0xe8c6d0(0x287)]),_0x317b0a[_0xe8c6d0(0x287)]['on'](_0xe8c6d0(0x2dc),()=>{const _0x481411=_0xe8c6d0,_0x2cff75=_0x317b0a[_0x481411(0x2c6)]();if(!_0x2cff75)return;this[_0x481411(0x207)](_0x2cff75);});const _0x4d059c=_0x4b28ab=>_0x48d472(this,void 0x0,void 0x0,function*(){const _0x36a36d=_0xe8c6d0,_0x163b48=this;let _0x5c1ef7=_0x163b48[_0x36a36d(0x2c6)]();if(!_0x5c1ef7)return;const _0x15ec9c=_0x137c61(_0x163b48),{data:_0x48ac98,json:_0x5ea5a7}=yield _0x4b6227(_0x15ec9c,_0x4b28ab);if(_0x48ac98[_0x36a36d(0x24a)]!==0xc8)return;if(_0x5ea5a7['statusCode'][_0x36a36d(0x1f3)](/Good/)){const _0xe70434=_0x1b7d3d(_0x5ea5a7,_0x5c1ef7);_0x163b48[_0x36a36d(0x2b2)]['val'](_0xe70434),_0x163b48[_0x36a36d(0x2b2)][_0x36a36d(0x2ad)](_0x36a36d(0x266));}});{_0x317b0a[_0xe8c6d0(0x20e)]=$(_0xe8c6d0(0x27b)),_0x317b0a['$input']['before'](_0x317b0a[_0xe8c6d0(0x20e)]),_0x317b0a['$selectTrigger']=$('<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>')['prependTo'](_0x317b0a['$uiSelect']),$(_0xe8c6d0(0x1f0))['toggle'](!![])[_0xe8c6d0(0x2a8)](_0x317b0a[_0xe8c6d0(0x1d6)]),_0x317b0a[_0xe8c6d0(0x1d6)]['on']('click',function(_0x3ba1d9){const _0x534af7=_0xe8c6d0;_0x3ba1d9['preventDefault'](),_0x3ba1d9[_0x534af7(0x1e8)](),_0x317b0a[_0x534af7(0x286)]();}),_0x317b0a[_0xe8c6d0(0x1d6)]['on']('keydown',function(_0x365ed1){const _0x13415e=_0xe8c6d0;_0x365ed1[_0x13415e(0x21b)]===0x28&&_0x317b0a[_0x13415e(0x286)](),_0x365ed1[_0x13415e(0x1e8)]();})['on']('focus',function(){const _0x3229b1=_0xe8c6d0;_0x317b0a[_0x3229b1(0x20e)][_0x3229b1(0x1c9)](_0x3229b1(0x1de));})['on'](_0xe8c6d0(0x2cc),function(){const _0x1fbe85=_0xe8c6d0;_0x317b0a[_0x1fbe85(0x20e)][_0x1fbe85(0x1f8)](_0x1fbe85(0x1de));}),_0x317b0a[_0xe8c6d0(0x2b9)]=$('<span\x20class=\x22red-ui-typedInput-type-label\x22></span>')[_0xe8c6d0(0x2a8)](_0x317b0a[_0xe8c6d0(0x1d6)]);}this['_initMenu']();!_0x317b0a[_0xe8c6d0(0x2b2)][_0xe8c6d0(0x26d)]('placeholder')&&_0x317b0a[_0xe8c6d0(0x2b2)][_0xe8c6d0(0x26d)]('placeholder',_0xe8c6d0(0x1da));_0x317b0a['$info']=$('<div\x20class=\x22info-text\x22></div>'),_0x317b0a['$info'][_0xe8c6d0(0x2a0)](),_0x317b0a['$combo'][_0xe8c6d0(0x26b)](_0x317b0a[_0xe8c6d0(0x22b)]),_0x317b0a['$dropdown']=$(_0xe8c6d0(0x1d3))[_0xe8c6d0(0x1c9)](_0xe8c6d0(0x2c3))['hide']()[_0xe8c6d0(0x2a8)](_0x317b0a[_0xe8c6d0(0x1cb)]),_0x317b0a[_0xe8c6d0(0x2b7)]=$(_0xe8c6d0(0x224))[_0xe8c6d0(0x2a8)](_0x317b0a[_0xe8c6d0(0x24f)]),this[_0xe8c6d0(0x1e0)]();const _0x4eddcc=(_0x2cfdd5,_0x30d477)=>{const _0x3357c8=_0xe8c6d0,_0x18275e=0x14,_0x464f1a=0x14,_0x201560=_0x2cfdd5[_0x3357c8(0x1cd)](),_0x5cd027=_0x30d477;if(_0x5cd027['pageX']>=_0x201560[_0x3357c8(0x216)]&&_0x5cd027['pageX']<=_0x201560['left']+_0x18275e&&_0x5cd027[_0x3357c8(0x279)]>=_0x201560[_0x3357c8(0x20a)]&&_0x5cd027['pageY']<=_0x201560[_0x3357c8(0x20a)]+_0x464f1a)return!![];return![];},_0x16b816=_0x5229d7=>_0x48d472(this,void 0x0,void 0x0,function*(){const _0x362446=_0xe8c6d0;if(_0x5229d7['hasClass']('expandable'))_0x448a3f(_0x317b0a,_0x5229d7);else{if(_0x5229d7['hasClass']('expanded'))_0x5229d7['children']('ul')[_0x362446(0x2d4)](),_0x5229d7[_0x362446(0x2a9)](_0x362446(0x289));else{if(_0x5229d7[_0x362446(0x206)]('ul')[_0x362446(0x206)]()[_0x362446(0x1c7)]>0x0)_0x5229d7[_0x362446(0x206)]('ul')[_0x362446(0x2d4)](),_0x5229d7[_0x362446(0x2a9)](_0x362446(0x289));else;}}});_0x317b0a[_0xe8c6d0(0x2b7)]['on'](_0xe8c6d0(0x275),'li',function(_0x49c2eb){const _0x516950=_0xe8c6d0;var _0x2419f3,_0x5c5fb1;_0x49c2eb['stopPropagation']();let _0x15fa8c=$(this);if(_0x4eddcc(_0x15fa8c,_0x49c2eb))_0x16b816(_0x15fa8c);else{const _0x53de15=_0x15fa8c[_0x516950(0x2e8)]('value'),_0x35b4fb=_0x15fa8c[_0x516950(0x2e8)](_0x516950(0x294));if(_0x317b0a[_0x516950(0x295)][_0x516950(0x247)]&&!_0x317b0a[_0x516950(0x295)]['isSelectable'](_0x35b4fb))return;_0x317b0a[_0x516950(0x2b2)][_0x516950(0x2e8)](_0x516950(0x294),_0x35b4fb),((_0x2419f3=_0x35b4fb[_0x516950(0x249)])===null||_0x2419f3===void 0x0?void 0x0:_0x2419f3['text'])||((_0x5c5fb1=_0x35b4fb[_0x516950(0x231)])===null||_0x5c5fb1===void 0x0?void 0x0:_0x5c5fb1['name'])||_0x35b4fb['nodeId']['toString']();let _0x7c6471=_0x317b0a[_0x516950(0x2c6)]();!_0x7c6471&&(_0x7c6471=_0x516950(0x2c1),_0x317b0a['setMode'](_0x7c6471)),_0x4d059c(_0x53de15)[_0x516950(0x2d0)](()=>{const _0x5451be=_0x516950;_0x317b0a[_0x5451be(0x24f)][_0x5451be(0x2a0)]();})['catch'](_0x43cf99=>{const _0x455786=_0x516950;_0x317b0a[_0x455786(0x24f)][_0x455786(0x2a0)]();});}}),_0x317b0a[_0xe8c6d0(0x2b7)]['on'](_0xe8c6d0(0x2dc),'li',function(_0x1bcaf3){const _0x2e9367=_0xe8c6d0;_0x1bcaf3[_0x2e9367(0x1e8)]();let _0x3e2f65=$(this);_0x4eddcc(_0x3e2f65,_0x1bcaf3)&&_0x16b816(_0x3e2f65),_0x494c99(_0x317b0a,_0x3e2f65);}),$(document)['on'](_0xe8c6d0(0x2dc),function(_0x52dd5a){const _0x2083be=_0xe8c6d0;!$(_0x52dd5a[_0x2083be(0x25e)])['closest'](_0x317b0a[_0x2083be(0x1cb)])['length']&&_0x317b0a[_0x2083be(0x24f)][_0x2083be(0x2a0)]();});}});},_0x1be051=()=>{const _0x260120=_0x4d4009,_0x456b27=$(_0x260120(0x2bc)),_0x34cc8d=_0x456b27[_0x260120(0x24c)](),_0xec5f13=RED[_0x260120(0x2ba)][_0x260120(0x2af)](_0x34cc8d);if(!_0xec5f13)return undefined;const {endpoint:_0x194b81,securityMode:_0x5a206c,securityPolicy:_0x40d349,userIdentityType:_0x46feb7,credentials:_0x58341a,namespaceAliases:_0x1105c4}=_0xec5f13,_0x31a957={'endpoint':_0x194b81,'securityMode':_0x5a206c,'securityPolicy':_0x40d349,'userIdentityType':_0x46feb7,'credentials':_0x58341a,'namespaceAliases':_0x1105c4};return _0x31a957;},_0x4902f3=()=>{const _0x187075=_0x4d4009,_0x153a35=$(_0x187075(0x2bc)),_0x46568c=_0x153a35['val'](),_0x1d1d87=_0x1be051();if(!_0x1d1d87)return undefined;const _0x384fc4=_0x1d1d87[_0x187075(0x1b7)];return Object[_0x187075(0x2b1)]({'namespaceAliases':_0x384fc4,'id':_0x46568c},_0x1d1d87);},_0x244f8f=()=>{return{'endpointNode':_0x4902f3};};RED[_0x4d4009(0x2ba)][_0x4d4009(0x1e2)](_0x4d4009(0x2a7),{'category':_0x4d4009(0x290),'color':'#C0DEED','align':'right','icon':_0x4d4009(0x25b),'paletteLabel':_0x4d4009(0x272),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'historyReadParam':{'value':{'type':_0x4d4009(0x1ee),'endTime':_0x4d4009(0x1f7),'startTime':_0x4d4009(0x2ea),'numValuesPerNode':0x64,'returnBounds':!![]},'required':!![],'validate':_0xee475d=>{if(_0xee475d==='')return![];return!![];}},'nodeId':{'value':'','required':![]},'outputType':{'value':_0x4d4009(0x254),'required':!![]}},'outputs':0x2,'label'(){const _0x22b3e2=_0x4d4009;return this[_0x22b3e2(0x203)]||_0x22b3e2(0x264);},'labelStyle'(){const _0x201b71=_0x4d4009;return this[_0x201b71(0x203)]?'node_label_italic':'';},'oneditprepare'(){const _0x2c5c84=_0x4d4009,_0x2e8045=this;_0x4dd192(),_0x2e8045['inputs']=0x1;const _0x4924e0=$(_0x2c5c84(0x253));_0x4924e0[_0x2c5c84(0x2b4)](Object[_0x2c5c84(0x2b1)](Object[_0x2c5c84(0x2b1)]({},_0x244f8f()),{'isSelectable'(_0x6883aa){const _0x3b1f28=_0x2c5c84;return _0x6883aa[_0x3b1f28(0x298)]==='Variable';}})),$('#select-history-type')[_0x2c5c84(0x24c)](_0x2e8045['historyReadParam']['type']);switch(_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x209)]){case _0x2c5c84(0x1ee):$(_0x2c5c84(0x237))[_0x2c5c84(0x24c)](_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x248)]),$(_0x2c5c84(0x269))[_0x2c5c84(0x24c)](_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x1d7)]),$('#node-input-raw-numValuesPerNode')[_0x2c5c84(0x24c)](_0x2e8045['historyReadParam'][_0x2c5c84(0x2e1)]),$('#node-input-returnBounds')[_0x2c5c84(0x28f)]('checked',_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x25f)]);break;case'modified':$(_0x2c5c84(0x26a))[_0x2c5c84(0x24c)](_0x2e8045['historyReadParam'][_0x2c5c84(0x248)]),$(_0x2c5c84(0x2be))['val'](_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x1d7)]),$(_0x2c5c84(0x24e))[_0x2c5c84(0x24c)](_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x2e1)]),$(_0x2c5c84(0x2df))[_0x2c5c84(0x28f)](_0x2c5c84(0x1bc),_0x2e8045['historyReadParam']['returnBounds']);break;case _0x2c5c84(0x2eb):_0x2e8045['historyReadParam'][_0x2c5c84(0x220)]=_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x220)]||{},$(_0x2c5c84(0x2a3))[_0x2c5c84(0x24c)](_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x248)]),$(_0x2c5c84(0x292))[_0x2c5c84(0x24c)](_0x2e8045['historyReadParam'][_0x2c5c84(0x1d7)]),$(_0x2c5c84(0x246))[_0x2c5c84(0x24c)](_0x2e8045[_0x2c5c84(0x223)][_0x2c5c84(0x215)]),$(_0x2c5c84(0x1fb))[_0x2c5c84(0x24c)](_0x2e8045['historyReadParam'][_0x2c5c84(0x258)]),$('#node-input-processed-details-aggregateConfiguration-useServerCapabilitiesDefaults')['prop'](_0x2c5c84(0x1bc),_0x2e8045['historyReadParam']['aggregateConfiguration'][_0x2c5c84(0x27a)]),$('#node-input-processed-details-aggregateConfiguration-treatUncertainAsBad')[_0x2c5c84(0x28f)](_0x2c5c84(0x1bc),_0x2e8045['historyReadParam']['aggregateConfiguration'][_0x2c5c84(0x200)]),$(_0x2c5c84(0x2d7))['val'](_0x2e8045['historyReadParam'][_0x2c5c84(0x220)][_0x2c5c84(0x1fe)]),$(_0x2c5c84(0x288))[_0x2c5c84(0x24c)](_0x2e8045['historyReadParam']['aggregateConfiguration'][_0x2c5c84(0x2b8)]),$(_0x2c5c84(0x226))[_0x2c5c84(0x28f)](_0x2c5c84(0x1bc),_0x2e8045['historyReadParam'][_0x2c5c84(0x220)]['useSlopedExtrapolation']);break;}{function _0x1ef036(){const _0x53063c=_0x2c5c84;$('#section-raw')[_0x53063c(0x2a0)](),$('#section-modified')[_0x53063c(0x2a0)](),$(_0x53063c(0x26f))[_0x53063c(0x2a0)](),$(_0x53063c(0x233))[_0x53063c(0x2a0)](),$(_0x53063c(0x1b8))['hide'](),$(_0x53063c(0x20f))[_0x53063c(0x2a0)]();}function _0x1dbef0(){const _0xd3b26b=_0x2c5c84;_0x1ef036();var _0x2f4bb6=$(_0xd3b26b(0x1eb))[_0xd3b26b(0x24c)]();$(_0xd3b26b(0x28c)+_0x2f4bb6)[_0xd3b26b(0x2ac)]();}$(_0x2c5c84(0x1eb))['on'](_0x2c5c84(0x266),_0x1dbef0),_0x1dbef0();}},'oneditsave'(){const _0x3cde22=_0x4d4009,_0x44ce40=_0x791f06=>_0x791f06[_0x3cde22(0x24c)]()==undefined?'':_0x791f06[_0x3cde22(0x24c)]()[_0x3cde22(0x1e3)](),_0x23bbaf=_0x68e0c7=>_0x68e0c7[_0x3cde22(0x24c)]()==undefined?0x0:_0x68e0c7['val'](),_0x20a1a2=$(_0x3cde22(0x1eb))[_0x3cde22(0x24c)]();switch(_0x20a1a2){case _0x3cde22(0x1ee):this[_0x3cde22(0x223)]={'type':_0x3cde22(0x1ee),'startTime':_0x44ce40($('#node-input-raw-startTime')),'endTime':_0x44ce40($(_0x3cde22(0x269))),'numValuesPerNode':_0x23bbaf($(_0x3cde22(0x241))),'returnBounds':$(_0x3cde22(0x1d4))[_0x3cde22(0x28f)](_0x3cde22(0x1bc))};break;case _0x3cde22(0x1c6):this['historyReadParam']={'type':'modified','startTime':_0x44ce40($(_0x3cde22(0x26a))),'endTime':_0x44ce40($(_0x3cde22(0x2be))),'numValuesPerNode':_0x23bbaf($(_0x3cde22(0x24e))),'returnBounds':$(_0x3cde22(0x2df))[_0x3cde22(0x28f)](_0x3cde22(0x1bc))};break;case _0x3cde22(0x2eb):this['historyReadParam']={'type':_0x3cde22(0x2eb),'startTime':_0x44ce40($(_0x3cde22(0x2a3))),'endTime':_0x44ce40($(_0x3cde22(0x292))),'processingInterval':_0x23bbaf($('#node-input-processed-details-processingInterval')),'aggregateType':_0x44ce40($(_0x3cde22(0x1fb))),'aggregateConfiguration':{'useServerCapabilitiesDefaults':$(_0x3cde22(0x291))['prop'](_0x3cde22(0x1bc)),'treatUncertainAsBad':$(_0x3cde22(0x22e))['prop']('checked'),'percentDataBad':_0x23bbaf($('#node-input-processed-details-aggregateConfiguration-percentDataBad')),'percentDataGood':_0x23bbaf($(_0x3cde22(0x288))),'useSlopedExtrapolation':$(_0x3cde22(0x226))[_0x3cde22(0x28f)](_0x3cde22(0x1bc))}};break;}}});}()));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg0OGQ0NzIiLCJfMHg1YmIxNGUiLCJfMHg1NWVkNGYiLCJfMHgyNTgyM2MiLCJfMHgyYWE4ODQiLCJfMHgyMmU2YTQiLCJfMHg0NzlkMDUiLCJfMHg1MjIwYzgiLCJQcm9taXNlIiwiXzB4MTRmZGNjIiwiXzB4MTc3NzExIiwiXzB4NDA1NmY4IiwiXzB4Mzg3YmEwIiwiXzB4NWUwNmYzIiwiXzB4NTllNmZiIiwiXzB4NDRjMDg2IiwiXzB4NDY0Yjc2IiwiXzB4NmJiYTFlIiwiXzB4NTM5ZGJlIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NTdjMjM2IiwiXzB4MWIxMzFlIiwiXzB4MTVmNjhjIiwiXzB4MmVkM2Q4IiwiRXJyb3IiLCJfMHgzNDdlNmEiLCJfMHgzNzEzYjIiLCJfMHgxMTNmNzUiLCJfMHgxYzE5MTkiLCJfMHg1NTdmMzMiLCJfMHg0YzFlYmYiLCJfMHg1YWI2NDIiLCJfMHg1OTRjMjQiLCJfMHg1MGZjYWEiLCJfMHgxODE5NTkiLCJfMHg0NmY4NDIiLCJfMHgxNmM1MmIiLCJfMHgyYWZhODciLCJfMHg1YjNkMTAiLCJfMHg0YWVlOTEiLCJfMHgxM2JmYjMiLCJfMHg1YTc2N2MiLCJfMHgzYzFhZTQiLCJfMHg0OTllYzYiLCJfMHg1MTlmOTkiLCJfMHg1ZDRhYTMiLCJfMHg0ODY3MjciLCJfMHg0ZGUyYTIiLCJlbmRwb2ludE5vZGUiLCJfMHgyODcwNTgiLCJlbmRwb2ludCIsIl8weGNjZWUzNSIsImJhc2VVcmwiLCJfMHgyNGEzZTIiLCJfMHgyOGU3NWQiLCJfMHg0M2VmNmUiLCJfMHgyYmMxNTciLCJfMHgzNmRlY2IiLCJfMHg0ZDg4YmUiLCJPYmplY3QiLCJfMHg0NGRkNTUiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4NTNiZWY1IiwiXzB4ZDU5MGI2IiwiXzB4M2JiMzY1IiwiXzB4MzBhODM4IiwiXzB4NDIyZjEwIiwiXzB4YTI2N2RkIiwiXzB4MzdhMzIzIiwiXzB4NWI2OGMwIiwiXzB4MTdjYTZkIiwiXzB4MTU4YTQwIiwibm9kZUlkIiwiXzB4NWIxOTE2Iiwicm9vdE5vZGVJZCIsIl8weDE5NzM2MiIsImlzVHlwZSIsIl8weDFhNjk3MiIsIl8weDRhMzA0ZiIsIl8weDgzNTBkNyIsIl8weDU3YjUyMSIsIl8weDEwYjlmZSIsIl8weDFiN2QzZCIsIl8weDg1ZDg3OCIsIl8weDU2MmYyOCIsIl8weDU2MDYyZCIsIl8weDViODEyNCIsIl8weDkyODc5YiIsIl8weDI0MzM1NiIsIl8weDI4Y2ExNCIsIl8weDQ0MDBlYiIsIl8weDIyZTk4YiIsIl8weDI1Zjk5OCIsIl8weDU4MzcwZCIsIl8weDRhMTAxZCIsIl8weDU3NDM3ZSIsIl8weDI4ZDUxNCIsIl8weDFiZTM0NCIsIl8weDRiNjIyNyIsIl8weDUxZDYxMSIsIl8weDJiM2Q0MyIsIl8weDIwNDY5NSIsIl8weDRkOTQ4MSIsIl8weDMyMGQwZiIsIl8weDFhZjQ3MiIsIl8weDE2OGRmMiIsIl8weDQyN2Q4YSIsIl8weDFlYzBiMyIsIl8weDRmNDBjMiIsIlJFRCIsIl8weDQ0MmZkMyIsIl8weDQ3OWI0NSIsIl8weDRhYTc0MSIsIl8weDQ3NzBkZSIsIl8weDE3OTkzNSIsIl8weDVlOWVhNSIsIl8weDI5MGI5OCIsIl8weDUyNThkYyIsIl8weDJkNzdjNiIsIl8weDNjYTQyNiIsIl8weDI0MGY0YyIsIl8weDViNTliOSIsIl8weDIxMjIyYSIsIl8weDI2ZGFhNyIsIl8weDI0NjYyMiIsImpzb24iLCJfMHgzZTg1YjUiLCJkYXRhIiwiXzB4NDA3N2U2IiwiXzB4MTJlYmNiIiwiXzB4MTJhOTEwIiwiXzB4MWM0MDA2Iiwic2V0VGltZW91dCIsIl8weDRmMWRkMSIsIl8weDQ3ODcyNSIsIl8weDM5NjIyZSIsIl8weDJjYjYxMSIsIl8weDU3OTlkNSIsIl8weDFiMWM4NyIsIl8weDQ0MTkwNyIsIl8weDFjNTMxYyIsIl8weDUwNjJhNSIsIl8weDE2MzI5MyIsIl8weDQxZjE3ZSIsIl8weDU4YjkyYyIsIl8weDFhZDM2NiIsIl8weDFiNmUxZiIsIl8weDNlOTg1NSIsIl8weDQwMGZlZCIsIl8weDI4YTMyNSIsIl8weDRmYmZkMyIsIl8weDUzZTM5NSIsIl8weDFhM2UzYSIsIl8weDVhNjcyMCIsIiQiLCJfMHg0YzA0OTQiLCJfMHgzMzJmYjAiLCJpY29uIiwiXzB4NWI5MDQ0IiwiY29sb3IiLCJfMHg0OTlkMDciLCJfMHgxZjEyMjciLCJfMHgxYTdjNTYiLCJfMHhmNjY1ZmQiLCJfMHgyN2ZhNWUiLCJfMHgxOTE0NGYiLCJfMHg0OTRjOTkiLCJfMHhiMTRlY2EiLCJfMHgxNmU5N2EiLCJfMHg0MDgxNmQiLCJfMHg0OTIxOTAiLCJfMHgyYTMwYTkiLCJfMHg1MDY4MjMiLCJfMHgxY2Q4NDciLCJfMHgzNTcyN2IiLCJfMHhhMjk3MWIiLCJfMHg0NDhhM2YiLCJfMHgyYTRjNmEiLCJfMHg1MTNhN2QiLCJfMHg0MDM2ZDIiLCJfMHgzMmVmNDkiLCJfMHgzNjBmMzciLCJfMHg1ZDk2N2MiLCJ1bmRlZmluZWQiLCJfMHgzZTNhMTUiLCJfMHhkODg2OTMiLCJfMHgzMzdiNTIiLCJfMHg0NmJiNDYiLCJfMHgyNjYyODkiLCJfMHg5MjE0MjAiLCJfMHgxNWQyNzkiLCJfMHgxMzdjNjEiLCJfMHg1MzZlYmMiLCJfMHgxY2MzOGUiLCJfMHhhNjNjYjQiLCJfMHgxYzIyNmMiLCJfMHg1NTZmMzYiLCJfMHgyMDgyZmUiLCJyZWZlcmVuY2VzIiwiXzB4NGRiMTJiIiwiXzB4YWMyYWE1IiwiXzB4MWVmYTQxIiwiXzB4NTRhYjBiIiwiXzB4ZWU0MjZmIiwiXzB4MmIyMTY1IiwiXzB4MzU0MWFlIiwiXzB4MmZkNTQ2IiwiXzB4NGUyNWZmIiwiXzB4NTY2NTlkIiwiXzB4NGU4Y2M3IiwiXzB4ODA1YTYwIiwiXzB4MWFkZDA1IiwiXzB4MmNmODUxIiwiXzB4MzU3OTI1IiwiXzB4M2NmMDgwIiwiXzB4NGRkMTkyIiwiXzB4NDQzMzcwIiwiXzB4NWVmN2E5IiwiXzB4NWI4MjY0IiwiXzB4NWE4ODA4IiwiXzB4NTBlYmE4IiwiXzB4NTk5ZTdjIiwiXzB4MTQzMDc4IiwiXzB4NWQxMDNkIiwiXzB4MjJjYTI2IiwiXzB4NTc0YzQ5IiwiXzB4M2Q4NDEwIiwiXzB4NGZhOWU5IiwiXzB4NDQyZTIxIiwiZG9jdW1lbnQiLCJfMHgxMjZlZDYiLCJfMHgyZjVmYjkiLCJfMHgxYjhiZjAiLCJfMHgyNjMxYTkiLCJfMHg1ZjE3MzEiLCJfMHhlNGQxMGQiLCJfMHgxYzY5M2UiLCJfMHgzNmJlMDIiLCJfMHgxNWE1YzIiLCJfMHg1OTZlMDMiLCJfMHgyNzdkMWMiLCJfMHg1MTg1OGYiLCJfMHgyMzFlZmIiLCJfMHgyOTU3MDYiLCJfMHgzZGY3ZjciLCJfMHgzM2Y2Y2EiLCJfMHgzYjI4NDAiLCJfMHg1MGE0NGYiLCJfMHhlNmYyZGEiLCJ3aW5kb3ciLCJfMHgxMGZkM2MiLCJfMHg0OTkzOWMiLCJfMHgyZTViNWQiLCJfMHg1Y2Y3YjciLCJfMHg0ZmM1NWQiLCJfMHg1OWYwOTYiLCJfMHgyZmNmOWUiLCJfMHg1ODkyZGMiLCJfMHgzZjZmODMiLCJfMHgyNGYyMWQiLCJfMHgxNmI5ZGQiLCJfMHgyZjY3MDMiLCJfMHg1NGI4YmMiLCJfMHg1NmRmODUiLCJfMHgzMmNiNDIiLCJfMHhhODkwNjQiLCJfMHgzZjkyYzgiLCJfMHg1YzAyYWUiLCJfMHgyYWNlNDYiLCJfMHgzMTdiMGEiLCJfMHg1ZWE4MzYiLCJfMHg1MjU3MTciLCJfMHgxNjk4ZGEiLCJfMHgyY2ZmNzUiLCJfMHg0ZDA1OWMiLCJfMHg0YjI4YWIiLCJfMHgxNjNiNDgiLCJfMHg1YzFlZjciLCJfMHgxNWVjOWMiLCJfMHg0OGFjOTgiLCJfMHg1ZWE1YTciLCJfMHhlNzA0MzQiLCJfMHgzYmExZDkiLCJfMHgzNjVlZDEiLCJfMHg0ZWRkY2MiLCJfMHgyY2ZkZDUiLCJfMHgzMGQ0NzciLCJfMHgxODI3NWUiLCJfMHg0NjRmMWEiLCJfMHgyMDE1NjAiLCJfMHg1Y2QwMjciLCJfMHgxNmI4MTYiLCJfMHg1MjI5ZDciLCJfMHg0OWMyZWIiLCJfMHgyNDE5ZjMiLCJfMHg1YzVmYjEiLCJfMHgxNWZhOGMiLCJfMHg1M2RlMTUiLCJfMHgzNWI0ZmIiLCJfMHg3YzY0NzEiLCJfMHg0M2NmOTkiLCJfMHgxYmNhZjMiLCJfMHgzZTJmNjUiLCJfMHg1MmRkNWEiLCJfMHgxYmUwNTEiLCJfMHg0NTZiMjciLCJfMHgzNGNjOGQiLCJfMHhlYzVmMTMiLCJfMHgxOTRiODEiLCJzZWN1cml0eU1vZGUiLCJfMHg1YTIwNmMiLCJzZWN1cml0eVBvbGljeSIsIl8weDQwZDM0OSIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHg0NmZlYjciLCJjcmVkZW50aWFscyIsIl8weDU4MzQxYSIsIm5hbWVzcGFjZUFsaWFzZXMiLCJfMHgxMTA1YzQiLCJfMHgzMWE5NTciLCJfMHg0OTAyZjMiLCJfMHgxNTNhMzUiLCJfMHg0NjU2OGMiLCJfMHgxZDFkODciLCJfMHgzODRmYzQiLCJfMHgyNDRmOGYiLCJfMHhlZTQ3NWQiLCJfMHgyZTgwNDUiLCJfMHg0OTI0ZTAiLCJfMHg2ODgzYWEiLCJfMHgxZWYwMzYiLCJfMHgxZGJlZjAiLCJfMHgyZjRiYjYiLCJfMHg0NGNlNDAiLCJfMHg3OTFmMDYiLCJfMHgyM2JiYWYiLCJfMHg2OGUwYzciLCJfMHgyMGExYTIiXSwibWFwcGluZ3MiOiIyMU1BQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMseUJBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsZ0JBQUEs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QUFBLENBQVosQ0FGUyxDLFNBR3BCLENBQVNtTCxTQUFBLENBQVluTCxDQUFBLEMsZ0JBQUEsQ0FBWixDQUhXLEMsb0JBSXBCLENBQW9CcUwsU0FBQSxDQUFjckwsQ0FBQSxDLGtEQUFBLENBQWQsQ0FKQSxDLGVBS3BCLENBQWVtTCxTQUFBLENBQVluTCxDQUFBLEMsZ0JBQUEsQ0FBWixDQUxLLEMsd0JBTXBCLENBQXdCLEMsK0JBQ3BCLENBQStCQSxDQUFBLEMsZ0JBQUEsRSxNQUFBLEUsZ0JBQUEsQ0FEWCxDLHFCQUVwQixDQUFxQkEsQ0FBQSxDLGdCQUFBLEUsTUFBQSxFLFNBQUEsQ0FGRCxDLGdCQUdwQixDQUFnQnFMLFNBQUEsQ0FBY3JMLENBQUEsQyxxRUFBQSxDQUFkLENBSEksQyxpQkFJcEIsQ0FBaUJxTCxTQUFBLENBQWNyTCxDQUFBLEMsZ0JBQUEsQ0FBZCxDQUpHLEMsd0JBS3BCLENBQXdCQSxDQUFBLEMsZ0JBQUEsRSxnQkFBQSxFLGdCQUFBLENBTEosQ0FOSixDQUF4QixDQWNBLE1BbENSLEMsQ0FwRzRDLENBQXBELEMsRUFuaENKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9IChfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJyb3dzZSBmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHdhbGtCYWNrd2FyZCA9IChfYSwgX2IpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgX2JdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNob29zZU5vZGVJZCA9IChkYXRhLCBtb2RlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXF1ZXN0ZWROb2RlSWQ7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9hbGlhc2VkIHx8IGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX2FsaWFzZWQgfHwgZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbWFrZVRvb2x0aXAgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGBzdGF0dXNDb2RlOiAke2RhdGEuc3RhdHVzQ29kZX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHN0ciA9IFtdO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGVJZDogJHtkYXRhLm5vZGVJZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBicm93c2UgcGF0aDogJHtkYXRhLmJwX2luZGV4ZWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZSBjbGFzczogJHtOb2RlQ2xhc3NbZGF0YS5ub2RlQ2xhc3NdfWApO1xuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX25zdSkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBuc3Ugbm9kZUlkOiAke2RhdGEubm9kZUlkX25zdX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9hbGlhc2VkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgTm9kZUlkOiAke2RhdGEubm9kZUlkX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5icF9pbmRleGVkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgYnJvd3NlUGF0aDogJHtkYXRhLmJwX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1vZGUoZW5oYW5jZWROb2RlSWQpIHtcbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnN1PS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14obnM9Lio7KT8oaXxifHN8Zyk9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zYT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKVswLTldKzovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKS4qOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGZpZ3VyZU91dE1vZGUoc3RyKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdG9Nb2RlKHYpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuYVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuc3VcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImFiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZEJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZnJvbU1vZGUobW9kZSkge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5hXCI7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnN1XCI7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImFiXCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcInRcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBfY2FsbENoZWNrTm9kZUlkID0gKF9hLCBub2RlSWRfMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBub2RlSWRfMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9jaGVja05vZGVJZGA7XG4gICAgICAgIGNvbnN0IGVJZCA9IGVuZHBvaW50Tm9kZS5pZDtcbiAgICAgICAgY29uc3QgbiA9IFJFRC5ub2Rlcy5ub2RlKGVJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG4ubmFtZXNwYWNlQWxpYXNlcyk7XG4gICAgICAgIG4ubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50Tm9kZS5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgbmFtZXNwYWNlQWxpYXNlcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIHJldHVybiB7IGpzb24sIGRhdGEgfTtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9IChfYSwgbW9kZV8xLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbW9kZV8xLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG1vZGUsICRpbnB1dEVsZW1lbnQsICRpbmZvKSB7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkTm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgeyBqc29uLCBkYXRhIH0gPSB5aWVsZCBfY2FsbENoZWNrTm9kZUlkKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBlbmhhbmNlZE5vZGVJZCk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nO1xuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiISFmYWlsdXJlISFcIiArIGVuaGFuY2VkTm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29sdGlwID0gbWFrZVRvb2x0aXAoanNvbik7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC5hdHRyKFwidGl0bGVcIiwgdG9vbHRpcCk7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtlbmhhbmNlZE5vZGVJZH1gKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oYCR7anNvbi5zdGF0dXNDb2RlfSAke2RhdGEuc3RhdHVzVGV4dH1gLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UgfHwgIXJlZmVyZW5jZS5ub2RlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gYCgke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX0pICR7KChfYyA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubmFtZSkgfHwgKChfZCA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnRleHQpIHx8IFwiXCJ9YDtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGkga2V5PVwiJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9XCJ9PjxzcGFuIGNsYXNzPVwidHJlZS10ZXh0XCIgdGl0bGU9JHt0aXRsZX0+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08L3NwYW4+PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZmluZEVsZW1lbnQgPSAobm9kZUlkLCAkdHJlZSkgPT4ge1xuICAgICAgICByZXR1cm4gJHRyZWUuZmluZChgbGlba2V5PVwiJHtub2RlSWR9XCJdYCk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RTaW5nbGUgPSAodGhhdCwgJGxpKSA9PiB7XG4gICAgICAgIHRoYXQuJHRyZWUuZmluZChcImxpID4gLnRyZWUtdGV4dFwiKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAvLyBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgJGxpLmZpbmQoXCIudHJlZS10ZXh0OmZpcnN0XCIpLmFkZENsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgfTtcbiAgICBjb25zdCBhdXRvRXhwYW5kID0gKHRoYXQsIGJyb3dzZVBhdGgsICR0cmVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSB0cmVlIHRvIHNob3cgdGhlIG5vZGVJZFxuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkdHJlZS5jaGlsZHJlbihcIjpmaXJzdFwiKTtcbiAgICAgICAgYnJvd3NlUGF0aC5yZWxhdGl2ZVBhdGguZWxlbWVudHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5vZGVJZHMgPSBicm93c2VQYXRoLm5vZGVJZHMgfHwgW107XG4gICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlSWRzKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnJlbnQuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gbmVlZCB0byBleHBhbmQgYW5kIHNlbGVjdCB0aGUgcmlnaHQgZWxlbWVudFxuICAgICAgICAgICAgICAgIHlpZWxkIF9leHBhbmRMaSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IGZpbmRFbGVtZW50KG4sICRjdXJyZW50KTtcbiAgICAgICAgICAgIGlmICgkZWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkY3VycmVudCA9ICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgIHNjcm9sbFRvTGkodGhhdC4kZHJvcGRvd24sICRjdXJyZW50KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBzY3JvbGxUb0xpKCRjb250YWluZXIsICR0YXJnZXRMaSkge1xuICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXRlbSByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGxpUG9zID0gJHRhcmdldExpLnBvc2l0aW9uKCkudG9wO1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgY29udGFpbmVyU2Nyb2xsVG9wID0gJGNvbnRhaW5lci5zY3JvbGxUb3AoKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lclNjcm9sbFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0byAoY3VycmVudCBzY3JvbGwgKyBpdGVtJ3MgcG9zaXRpb24pXG4gICAgICAgIC8vIEFkanVzdCB0aGlzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSBjb250YWluZXJTY3JvbGxUb3AgKyBsaVBvcyAtICRjb250YWluZXIuaGVpZ2h0KCkgLyAyICsgJHRhcmdldExpLmhlaWdodCgpIC8gMjtcbiAgICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gZW5zdXJlIHRoZSBpdGVtIGlzIHZpc2libGVcbiAgICAgICAgJGNvbnRhaW5lci5hbmltYXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG8sXG4gICAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGUgZHVyYXRpb24gKDUwMG1zKSBhcyBuZWVkZWRcbiAgICB9XG4gICAgY29uc3QgcmVhY2hTZWxlY3Rpb24gPSAodGhhdCwgcGFyZW50Tm9kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHRoYXQuJGlucHV0LnZhbCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgcm9vdE5vZGVJZDogcGFyZW50Tm9kZS5ub2RlSWQsXG4gICAgICAgICAgICBpc1R5cGU6IHRoYXQub3B0aW9ucy5pc1R5cGVSZWYgfHwgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgY29uc3QgYnJvd3NlUGF0aCA9IHlpZWxkIHdhbGtCYWNrd2FyZChkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFicm93c2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgYXV0b0V4cGFuZCh0aGF0LCBicm93c2VQYXRoLCB0aGF0LiR0cmVlKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBzb3J0IHJlZmVyZW5jZSAgIGJ5IGJyb3dzZU5hbWVcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzLnNvcnQoKGEsIGIpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuICgoKF9hID0gYS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZSkgfHwgXCJcIikubG9jYWxlQ29tcGFyZSgoKF9iID0gYi5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgXCJcIik7IH0pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5maWx0ZXIgJiYgIXRoYXQub3B0aW9ucy5maWx0ZXIocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZUNvbm5lY3Rpb24odGhhdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2V4cGFuZExpKHRoYXQsICRsaSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRsaSwgZiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFBhcmVudE5vZGUgPSB7XG4gICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICB9O1xuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiBkZWZhdWx0UGFyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fX3BhcmVudE5vZGUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZS5jYWxsKHRoYXQpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGRlc2M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX19wYXJlbnROb2RlIHx8IGRlZmF1bHRQYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHJlc2V0IHBhcmVudCBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0aGF0O1xuICAgICAgICAgICAgICAgICAgICBhLl9fcGFyZW50Tm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geWllbGQgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KG1vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgIGludGVybmFsVmVyaWZ5KGRhdGEsIG1vZGUsIHRoYXQuJGlucHV0LCB0aGF0LiRpbmZvKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJpbnB1dC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLnJlbW92ZUNsYXNzKFwiaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaGlkZU1lbnUobWVudSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIik7XG4gICAgICAgICAgICAgICAgbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChtZW51Lm9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuZmluZCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKFwiY2hlY2tlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnB1c2goJCh0aGlzKS5kYXRhKFwidmFsdWVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5jYWxsYmFjayhzZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGF0LiRlbGVtZW50RGl2LmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAvL3h4IH0gZWxzZSBpZiAodGhpcy4kb3B0aW9uU2VsZWN0VHJpZ2dlci5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8veHggICAgIHRoYXQuJG9wdGlvblNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGVNZW51KG1lbnVPcHRpb25zLCBvcHRzLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51ID0gJChcIjxkaXY+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtdHlwZWRJbnB1dC1vcHRpb25zIHN0ZXJmaXZlLW9ubGluZS1tZW51XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUub3B0cyA9IG9wdHM7XG4gICAgICAgICAgICAgICAgbWVudS5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIG1lbnVPcHRpb25zLmZvckVhY2goKG9wdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0ID0geyB2YWx1ZTogb3B0LCBsYWJlbDogb3B0IH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG9wID0gJCgnPGEgaHJlZj1cIiNcIj48L2E+JykuYXR0cihcInZhbHVlXCIsIG9wdC52YWx1ZSkuYXBwZW5kVG8obWVudSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC5wcm9wKFwidGl0bGVcIiwgb3B0LnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHQuaWNvbi5pbmRleE9mKFwiPFwiKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQob3B0Lmljb24pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHQuaWNvbi5pbmRleE9mKFwiL1wiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiPGk+XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwicmVkLXVpLXR5cGVkSW5wdXQtaWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJtYXNrLWltYWdlOiB1cmwoXCIgKyBvcHQuaWNvbiArIFwiKTsgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCIgKyBvcHQuaWNvbiArIFwiKTtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7IGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb24gXCIgKyBvcHQuaWNvbiB9KS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AuY3NzKHsgcGFkZGluZ0xlZnQ6IFwiMThweFwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0Lmljb24gJiYgIW9wdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AudGV4dChvcHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiID0gJCgnPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcyhcInBvaW50ZXItZXZlbnRzXCIsIFwibm9uZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKFwidmFsdWVcIiwgb3B0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVwZW5kVG8ob3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9wLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvcHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2IucHJvcChcImNoZWNrZWRcIiwgIWNiLnByb3AoXCJjaGVja2VkXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51Lm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRE9XTlxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbihcIjpmb2N1c1wiKS5uZXh0KCkudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVUFxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbihcIjpmb2N1c1wiKS5wcmV2KCkudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAyNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNDQVBFXG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVudTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNhcm1DbGljazogZmFsc2UsXG4gICAgICAgICAgICBfc2hvd01lbnUobWVudSwgcmVsYXRpdmVUbykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpc2FybUNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYXJtQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlbGF0aXZlVG8ub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlbGF0aXZlVG8uaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdmFyIG1lbnVIZWlnaHQgPSBtZW51LmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSBoZWlnaHQgKyBwb3MudG9wO1xuICAgICAgICAgICAgICAgIGlmICh0b3AgKyBtZW51SGVpZ2h0IC0gJChkb2N1bWVudCkuc2Nyb2xsVG9wKCkgPiAkKHdpbmRvdykuaGVpZ2h0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wIC09IHRvcCArIG1lbnVIZWlnaHQgLSAkKHdpbmRvdykuaGVpZ2h0KCkgKyA1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodG9wIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBtZW51LmhlaWdodChtZW51SGVpZ2h0ICsgdG9wKTtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRvcCArIFwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zLmxlZnQgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5zbGlkZURvd24oMTAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxheShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWNsb3NlLXByb3BlcnR5LXNlbGVjdFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QobWVudSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJChldmVudC50YXJnZXQpLmNsb3Nlc3QocmVsYXRpdmVUbykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5kaXNhcm1DbGljayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3Nob3dUeXBlTWVudSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93TWVudSh0aGF0LiRtZW51LCB0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGF0LnNlbGVjdGVkTWVudUl0ZW07XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gdGhhdC4kbWVudS5maW5kKFwiW3ZhbHVlPSdcIiArIHR5cGUgKyBcIidcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9LCAxMjApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbml0TWVudSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLmF0dHIoXCJ0YWJpbmRleFwiLCAtMSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1mb2N1cy1ibG9ja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGF0LiRtZW51KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGZhLWlkLWNhcmRcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlTGlzdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJ0ZXh0XCIsIHZhbHVlOiBcInRcIiwgdGl0bGU6IFwiVmFsdWUgaXMgbm90IHZlcmlmaWVkXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWZvbnRcIi9pPiAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm1zZy5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIm1zZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwibm9kZSBpZCBvciAgYnJvd3NlIHBhdGggY29tZXMgZnJvbSBpbmplY3RlZCBtc2cgcGFyYW1ldGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZS1vcGVuLW9cIi8+JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJOb2RlSWRcIiwgdmFsdWU6IFwiblwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS10YWdcIi8+MSAmbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIkFsaWFzZWQgTm9kZUlkXCIsIHZhbHVlOiBcIm5hXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWJvb2ttYXJrXCIvPiZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkIHdpdGggbmFtZXNwYWNlIFVyblwiLCB2YWx1ZTogXCJuc3VcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtaWQtY2FyZFwiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIkJyb3dzZVBhdGhcIiwgdmFsdWU6IFwiYlwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS10YWdcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkFsaWFzZWQgQnJvd3NlIFBhdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcImFiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz48aSBjbGFzcz1cImZhIGZhLWZpZ2h0ZXItamV0XCIvPiZuYnNwOycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZSh0aGF0LiRpbnB1dC52YWwoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHR5cGVMaXN0LmZpbmQoKHgpID0+IHgudmFsdWUgPT09IGEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsLmVtcHR5KCkuYXBwZW5kKGA8c3BhbiB0aXRsZT0keyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUudGl0bGUpIHx8IFwiXCJ9PiZuYnNwOyAkeyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuaWNvbikgfHwgXCJcIn08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gYTtcbiAgICAgICAgICAgICAgICBjb25zdCB0dCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudSA9IHRoaXMuX2NyZWF0ZU1lbnUodHlwZUxpc3QsIHt9LCAodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdG9Nb2RlKHYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gTWVudSBzZWxlY3RlZCAhXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHR5cGVMaXN0LmZpbmQoKHgpID0+IHgudmFsdWUgPT09IHYpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSB2O1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5zaG93KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Nb2RlKHRoYXQuc2VsZWN0ZWRNZW51SXRlbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0TW9kZShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGZyb21Nb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5jc3MoXCJib3JkZXJcIiwgXCJub25lXCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXRcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kZWxlbWVudERpdiA9IHRoYXQuJGlucHV0LndyYXAoXCI8ZGl2PlwiKS5wYXJlbnQoKS5hZGRDbGFzcyhcIm1haW4td3JhcHBlclwiKTtcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIENvbWJvIGJyb3dzZXJcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1pbnB1dC13cmFwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gYWRkIGJ1dHRvbiBvbiB0aGUgcmlnaHQgc2lkZVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdG9nZ2xlVHJlZUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4gPSAkKGA8YnV0dG9uIHRpdGxlPVwib3BlbiBPUENVQSBBZGRyZXNzU3BhY2UgQnJvd3NlclwiPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hZnRlcih0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRUb1JlYWNoU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyZWUgd2lkZ2V0IGlzIGdvaW5nIHRvIGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHlpZWxkIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSAhPT0gdGhhdC5jdXJyZW50UGFyZW50IHx8ICgoX2EgPSB0aGF0LmN1cnJlbnRQYXJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWQpICE9PSBwYXJlbnROb2RlLm5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGF0LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gJiYgKHlpZWxkIHJlYWNoU2VsZWN0aW9uKHRoYXQsIHBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdmVyaWZ5QnRuXG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cInZlcmlmeSBub2RlSWQgb3IgYnJvd3NlUGF0aFwiPjxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hZnRlcih0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeShtb2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZUlucHV0ID0gKGlucHV0KSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25EYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwganNvbiB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZChjb25uZWN0aW9uRGF0YSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgcHJlcGVuZGVkIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QgPSAkKFwiPGRpdj5cIik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmJlZm9yZSh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIgPSAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIj48L2J1dHRvbj4nKS5wcmVwZW5kVG8odGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICAkKCc8aSBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LWljb24gZmEgZmEtY2FyZXQtZG93blwiPjwvaT4nKS50b2dnbGUodHJ1ZSkuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiZm9jdXNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImJsdXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIG9wdCA9IHRoYXQudHlwZU1hcFt0aGF0LnByb3BlcnR5VHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob3B0Lmhhc1ZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QucmVtb3ZlQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsID0gJCgnPHNwYW4gY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC10eXBlLWxhYmVsXCI+PC9zcGFuPicpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0TWVudSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdGVtcG9yYXR5IGluZm8gcGFuZWxcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBkcm9wIGRvd24gdHJlZVxuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKS5hcHBlbmRUbyh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRkcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IFwibm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5zZXRNb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplSW5wdXQodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBjb250YWluaW5nOlxuICAgICAqICAtIHRoZSBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSxcbiAgICAgKiAgLSB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAqICAtIGNyZWRlbnRpYWxzXG4gICAgICogIC0gbmFtZXNwYWNlQWxpYXNlc1xuICAgICAqXG4gICAgICogZXh0cmFjdGVkIGZyb20gdGhlIHVpIHdpZGdldCAjbm9kZS1pbnB1dC1lbmRwb2ludFxuICAgICAqL1xuICAgIGNvbnN0IGdldEVuZFBvaW50QXR0cmlidXRlcyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCByZWROb2RlID0gUkVELm5vZGVzLm5vZGUoZW5kcG9pbnRJZCk7XG4gICAgICAgIGlmICghcmVkTm9kZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGNvbnN0IGNyZWRlbnRpYWxzID0gUkVELihlbmRwb2ludElkKTtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzYW5pdGl6ZSBhbmQgZXh0cmFjdCB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBvbmx5ICggbm90IHRoZSBub2RlLXJlZCBzdHVmZilcbiAgICAgICAgY29uc3QgeyBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSwgdXNlcklkZW50aXR5VHlwZSwgY3JlZGVudGlhbHMsIG5hbWVzcGFjZUFsaWFzZXMgfSA9IHJlZE5vZGU7XG4gICAgICAgIGNvbnN0IHJldFZhbHVlID0ge1xuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICBzZWN1cml0eU1vZGUsXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICBjcmVkZW50aWFscyxcbiAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuYW1lc3BhY2VBbGlhc2VzID0gZW5kcG9pbnROci5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IG5hbWVzcGFjZUFsaWFzZXMsIGlkOiBlbmRwb2ludElkIH0sIGVuZHBvaW50TnIpO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzLFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtQ2xpZW50Mi1IaXN0b3J5UmVhZFwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwicmVhZC1oaXN0b3J5XCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogNCB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIGhpc3RvcnlSZWFkUGFyYW06IHtcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJhd1wiLFxuICAgICAgICAgICAgICAgICAgICBlbmRUaW1lOiBcIjFtIGFnb1wiLFxuICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IFwiMTFtIGFnb1wiLFxuICAgICAgICAgICAgICAgICAgICBudW1WYWx1ZXNQZXJOb2RlOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybkJvdW5kczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gZm9yIGFjdGlvbiByZWFkIEhpc3RvcnlcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBvdXRwdXRUeXBlOiB7IHZhbHVlOiBcIlZhbHVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGlucHV0czosXG4gICAgICAgIG91dHB1dHM6IDIsIC8vIDIgb3V0cHV0LCBzZWNvbmQgZm9yIHJhdyBub2RlLW9wY3VhIGRpYWdub3N0aWNzIG9yIG1vcmUgY29tcGxldGUgbWVzc2FnZVxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQSBDbGllbnQgSGlzdG9yeVJlYWRcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIG5vZGUuaW5wdXRzID0gMTtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgICAgICQoXCIjc2VsZWN0LWhpc3RvcnktdHlwZVwiKS52YWwobm9kZS5oaXN0b3J5UmVhZFBhcmFtLnR5cGUpO1xuICAgICAgICAgICAgc3dpdGNoIChub2RlLmhpc3RvcnlSZWFkUGFyYW0udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyYXdcIjpcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXJhdy1zdGFydFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5zdGFydFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcmF3LWVuZFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5lbmRUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXJhdy1udW1WYWx1ZXNQZXJOb2RlXCIpLnZhbChub2RlLmhpc3RvcnlSZWFkUGFyYW0ubnVtVmFsdWVzUGVyTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1yZXR1cm5Cb3VuZHNcIikucHJvcChcImNoZWNrZWRcIiwgbm9kZS5oaXN0b3J5UmVhZFBhcmFtLnJldHVybkJvdW5kcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJtb2RpZmllZFwiOlxuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtbW9kaWZpZWQtc3RhcnRUaW1lXCIpLnZhbChub2RlLmhpc3RvcnlSZWFkUGFyYW0uc3RhcnRUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLWVuZFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5lbmRUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLW51bVZhbHVlc1Blck5vZGVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5udW1WYWx1ZXNQZXJOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLXJldHVybkJvdW5kc1wiKS5wcm9wKFwiY2hlY2tlZFwiLCBub2RlLmhpc3RvcnlSZWFkUGFyYW0ucmV0dXJuQm91bmRzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInByb2Nlc3NlZC1kZXRhaWxzXCI6XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVDb25maWd1cmF0aW9uID0gbm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24gfHwge307XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1zdGFydFRpbWVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5zdGFydFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtZW5kVGltZVwiKS52YWwobm9kZS5oaXN0b3J5UmVhZFBhcmFtLmVuZFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtcHJvY2Vzc2luZ0ludGVydmFsXCIpLnZhbChub2RlLmhpc3RvcnlSZWFkUGFyYW0ucHJvY2Vzc2luZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZVR5cGVcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHNcIikucHJvcChcImNoZWNrZWRcIiwgbm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24udXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHMpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi10cmVhdFVuY2VydGFpbkFzQmFkXCIpLnByb3AoXCJjaGVja2VkXCIsIG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVDb25maWd1cmF0aW9uLnRyZWF0VW5jZXJ0YWluQXNCYWQpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi1wZXJjZW50RGF0YUJhZFwiKS52YWwobm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24ucGVyY2VudERhdGFCYWQpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi1wZXJjZW50RGF0YUdvb2RcIikudmFsKG5vZGUuaGlzdG9yeVJlYWRQYXJhbS5hZ2dyZWdhdGVDb25maWd1cmF0aW9uLnBlcmNlbnREYXRhR29vZCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1hZ2dyZWdhdGVDb25maWd1cmF0aW9uLXVzZVNsb3BlZEV4dHJhcG9sYXRpb25cIikucHJvcChcImNoZWNrZWRcIiwgbm9kZS5oaXN0b3J5UmVhZFBhcmFtLmFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24udXNlU2xvcGVkRXh0cmFwb2xhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBhZHZhbmNlZCBjb250cm9sc1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoaWRlQWxsU2VjdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLXJhd1wiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1tb2RpZmllZFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1wcm9jZXNzZWQtZGV0YWlsc1wiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1hdC10aW1lXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLWFubm90YXRpb24tZGF0YVwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1ldmVudFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVNlY3Rpb25zKCkge1xuICAgICAgICAgICAgICAgICAgICBoaWRlQWxsU2VjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRWYWx1ZSA9ICQoXCIjc2VsZWN0LWhpc3RvcnktdHlwZVwiKS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxlcnQoXCJ0b2dnbGVTZWN0aW9ucyBcIiArIHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tXCIgKyBzZWxlY3RlZFZhbHVlKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICQoXCIjc2VsZWN0LWhpc3RvcnktdHlwZVwiKS5vbihcImNoYW5nZVwiLCB0b2dnbGVTZWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlU2VjdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXNUZXh0ID0gKGEpID0+IChhLnZhbCgpID09IHVuZGVmaW5lZCA/IFwiXCIgOiBhLnZhbCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVBc051bWJlciA9IChhKSA9PiAoYS52YWwoKSA9PSB1bmRlZmluZWQgPyAwIDogYS52YWwoKSk7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gJChcIiNzZWxlY3QtaGlzdG9yeS10eXBlXCIpLnZhbCgpO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInJhd1wiOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlSZWFkUGFyYW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJhd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtcmF3LXN0YXJ0VGltZVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtcmF3LWVuZFRpbWVcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtVmFsdWVzUGVyTm9kZTogdmFsdWVBc051bWJlcigkKFwiI25vZGUtaW5wdXQtcmF3LW51bVZhbHVlc1Blck5vZGVcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuQm91bmRzOiAkKFwiI25vZGUtaW5wdXQtcmV0dXJuQm91bmRzXCIpLnByb3AoXCJjaGVja2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwibW9kaWZpZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5UmVhZFBhcmFtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJtb2RpZmllZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtbW9kaWZpZWQtc3RhcnRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWU6IHZhbHVlQXNUZXh0KCQoXCIjbm9kZS1pbnB1dC1tb2RpZmllZC1lbmRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bVZhbHVlc1Blck5vZGU6IHZhbHVlQXNOdW1iZXIoJChcIiNub2RlLWlucHV0LW1vZGlmaWVkLW51bVZhbHVlc1Blck5vZGVcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuQm91bmRzOiAkKFwiI25vZGUtaW5wdXQtbW9kaWZpZWQtcmV0dXJuQm91bmRzXCIpLnByb3AoXCJjaGVja2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJvY2Vzc2VkLWRldGFpbHNcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5UmVhZFBhcmFtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJwcm9jZXNzZWQtZGV0YWlsc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB2YWx1ZUFzVGV4dCgkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtc3RhcnRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWU6IHZhbHVlQXNUZXh0KCQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1lbmRUaW1lXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdJbnRlcnZhbDogdmFsdWVBc051bWJlcigkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtcHJvY2Vzc2luZ0ludGVydmFsXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZVR5cGU6IHZhbHVlQXNUZXh0KCQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1hZ2dyZWdhdGVUeXBlXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VTZXJ2ZXJDYXBhYmlsaXRpZXNEZWZhdWx0czogJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHNcIikucHJvcChcImNoZWNrZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlYXRVbmNlcnRhaW5Bc0JhZDogJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdHJlYXRVbmNlcnRhaW5Bc0JhZFwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50RGF0YUJhZDogdmFsdWVBc051bWJlcigkKFwiI25vZGUtaW5wdXQtcHJvY2Vzc2VkLWRldGFpbHMtYWdncmVnYXRlQ29uZmlndXJhdGlvbi1wZXJjZW50RGF0YUJhZFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudERhdGFHb29kOiB2YWx1ZUFzTnVtYmVyKCQoXCIjbm9kZS1pbnB1dC1wcm9jZXNzZWQtZGV0YWlscy1hZ2dyZWdhdGVDb25maWd1cmF0aW9uLXBlcmNlbnREYXRhR29vZFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU2xvcGVkRXh0cmFwb2xhdGlvbjogJChcIiNub2RlLWlucHV0LXByb2Nlc3NlZC1kZXRhaWxzLWFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24tdXNlU2xvcGVkRXh0cmFwb2xhdGlvblwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
9
9
  </script>
10
10
  <script type="text/x-red" data-template-name="OpcUa-Client2-HistoryRead">
11
11
  <style>