dmencu 0.2.3 → 0.2.4
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.
|
@@ -867,6 +867,7 @@ function TextoDespliegue(props:{casillero:Texto, forPk:ForPk}){
|
|
|
867
867
|
// var nuevaForPk={...forPk, formulario:idFormularioDestino};
|
|
868
868
|
// nuevaForPk[nuevoCampoPk] = defBoton.num
|
|
869
869
|
dispatch(dispatchers.CAMBIAR_FORMULARIO({forPk:defBoton.forPk, apilarVuelta:true}));
|
|
870
|
+
dispatchByPass(accion_abrir_formulario,{forPk:defBoton.forPk})
|
|
870
871
|
}
|
|
871
872
|
return <DesplegarCasillero
|
|
872
873
|
id={`${id}-externo`}
|
|
@@ -25,7 +25,6 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
25
25
|
getContextForDump(): Context;
|
|
26
26
|
getClientSetupForSendToFrontEnd(req: Request): {
|
|
27
27
|
idper: string | undefined;
|
|
28
|
-
setup: Record<string, any>;
|
|
29
28
|
procedures: procesamiento.ProcedureDef[];
|
|
30
29
|
};
|
|
31
30
|
createResourcesForCacheJson(parameters: any): {};
|
|
@@ -485,7 +484,6 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
485
484
|
}) => Promise<boolean>) & (<T_4>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
486
485
|
[key: string]: T_4;
|
|
487
486
|
}) => Promise<boolean>);
|
|
488
|
-
inTransactionProcedureContext<T_5>(req: procesamiento.Request | null, coreFunction: (context: procesamiento.ProcedureContext) => Promise<T_5>): Promise<T_5>;
|
|
489
487
|
};
|
|
490
488
|
} & T;
|
|
491
489
|
export declare var AppDmEncu: {
|
|
@@ -508,7 +506,6 @@ export declare var AppDmEncu: {
|
|
|
508
506
|
getContextForDump(): Context;
|
|
509
507
|
getClientSetupForSendToFrontEnd(req: Request): {
|
|
510
508
|
idper: string | undefined;
|
|
511
|
-
setup: Record<string, any>;
|
|
512
509
|
procedures: procesamiento.ProcedureDef[];
|
|
513
510
|
};
|
|
514
511
|
createResourcesForCacheJson(parameters: any): {};
|
|
@@ -968,7 +965,6 @@ export declare var AppDmEncu: {
|
|
|
968
965
|
}) => Promise<boolean>) & (<T_2>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
969
966
|
[key: string]: T_2;
|
|
970
967
|
}) => Promise<boolean>);
|
|
971
|
-
inTransactionProcedureContext<T_4>(req: procesamiento.Request | null, coreFunction: (context: procesamiento.ProcedureContext) => Promise<T_4>): Promise<T_4>;
|
|
972
968
|
};
|
|
973
969
|
} & (new (...args: any[]) => {
|
|
974
970
|
getProcedures(): Promise<procesamiento.ProcedureDef[]>;
|
|
@@ -510,6 +510,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
510
510
|
// var nuevaForPk={...forPk, formulario:idFormularioDestino};
|
|
511
511
|
// nuevaForPk[nuevoCampoPk] = defBoton.num
|
|
512
512
|
dispatch(redux_formulario_1.dispatchers.CAMBIAR_FORMULARIO({ forPk: defBoton.forPk, apilarVuelta: true }));
|
|
513
|
+
(0, bypass_formulario_2.dispatchByPass)(bypass_formulario_1.accion_abrir_formulario, { forPk: defBoton.forPk });
|
|
513
514
|
};
|
|
514
515
|
return React.createElement(DesplegarCasillero, { id: `${id}-externo`, casillero: casillero },
|
|
515
516
|
React.createElement(EncabezadoDespliegue, { casillero: casillero, leer: false, forPk: forPk }),
|
|
@@ -1476,4 +1477,4 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
1476
1477
|
}
|
|
1477
1478
|
const BOOTSTRAP_5_1_3_SRC = 'css/bootstrap.min.css';
|
|
1478
1479
|
});
|
|
1479
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWZvcm11bGFyaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWZvcm11bGFyaW8udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsK0JBQStCO0lBQy9CLHNDQUFzQztJQUN0QyxxREFRMEI7SUFDMUIsbUNBY2lCO0lBQ2pCLDJEQVk0QjtJQUM1Qix5REFJNEI7SUFDNUIsaUNBQTZEO0lBQzdELDZDQUF1RDtJQUN2RCxxQ0FBdUQ7SUFDdkQsK0NBQTZDO0lBQzdDLDJDQUF3QztJQUV4Qyw0Q0FNMkI7SUFJM0IsMkRBYzRCO0lBRTVCLDJDQUFrRDtJQUdsRCxTQUFTLGNBQWMsQ0FBQyxJQUFnQixFQUFFLFdBQTZDO1FBQ25GLElBQUcsT0FBTyxJQUFJLElBQUksUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzdDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFDLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBQyxDQUFDLElBQUksRUFBQyxFQUFFLENBQUEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3pGLElBQUcsQ0FBQyxXQUFXLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3JDOztVQUVFO0lBQ04sQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLHFKQUFxSjtJQUNoTCxnSUFBZ0k7SUFFaEksSUFBSSxVQUFVLEdBQVcsS0FBSyxDQUFDO0lBRS9CLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVB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QUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFFLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUM1QyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsNEJBQTRCLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUMzRCxDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLGFBQWEsQ0FBQyxFQUFTOztRQUM1QixJQUFJLFFBQVEsR0FBSSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFVBQVUsMENBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcclxuaW1wb3J0IHsgIFxyXG4gICAgUmVuZGVyUHJpbmNpcGFsLCBcclxuICAgIGFkYXB0YXJUaXBvVmFyQ2FzaWxsZXJvLFxyXG4gICAgSUNPTixcclxuICAgIGZvY3VzVG9JZCxcclxuICAgIHNjcm9sbFRvVG9wLFxyXG4gICAgc2Nyb2xsVG9Cb3R0b20sXHJcbiAgICBtYXRlcmlhbElvSWNvbnNTdmdQYXRoXHJcbn0gZnJvbSBcIi4vcmVuZGVyLWdlbmVyYWxcIjtcclxuaW1wb3J0IHtCbG9xdWUsIEJvdG9uRm9ybXVsYXJpbywgXHJcbiAgICBDYXNpbGxlcm9CYXNlLCBDYXNvU3RhdGUsIENvbmp1bnRvUHJlZ3VudGFzLCBDb25zaXN0ZW5jaWEsIFxyXG4gICAgRXN0YWRvQ2FyZ2EsIEZpbHRybywgRm9yUGssIEZvclBrUmFpeiwgRm9ybXVsYXJpbywgXHJcbiAgICBJZEZvcm11bGFyaW8sIElkUHJlZ3VudGEsIElkVGFyZWEsIElkVmFyaWFibGUsIEluZm9Gb3JtdWxhcmlvLFxyXG4gICAgSG9qYURlUnV0YSxcclxuICAgIE1vZG9EZXNwbGllZ3VlLFxyXG4gICAgT3BjaW9uLCBPcGNpb25NdWx0aXBsZSwgUGxhaW5Gb3JQaywgXHJcbiAgICBQcmVndW50YSwgUHJlZ3VudGFDb25PcGNpb25lcywgUHJlZ3VudGFTaW1wbGUsIFxyXG4gICAgUmVzcHVlc3RhcywgUmVzcHVlc3Rhc1JhaXosIFZhbG9yLCBURU0sIElkQ2FyZ2EsIENhcmdhLCBJZEZpbiwgSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIE1vZG9BbG1hY2VuYW1pZW50byxcclxuICAgIHRvUGxhaW5Gb3JQayxcclxuICAgIElkQ2FzaWxsZXJvLFxyXG4gICAgUHJlZ3VudGFDb25TaU5vLFxyXG4gICAgVGV4dG8sIEVzdHJ1Y3R1cmEsIEluZm9ybWFjaW9uSGRyLCBEYXRvc0hkclVhUHBhbCwgQ29uZmlndXJhY2lvblNvcnRlb0Zvcm11bGFyaW8sIFJlc3VtZW5Fc3RhZG8sIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzLCBJZE9wZXJhdGl2bywgSWRFbmMsIExpYnJlXHJcbn0gZnJvbSBcIi4vdGlwb3NcIjtcclxuaW1wb3J0eyBcclxuICAgIGFjY2lvbl9hYnJpcl9mb3JtdWxhcmlvLFxyXG4gICAgYWNjaW9uX2JvcnJhcl9mb3JtdWxhcmlvLFxyXG4gICAgY2FsY3VsYXJBY3R1YWxCRixcclxuICAgIGNhbGN1bGFyRGlzYWJsZWRCRixcclxuICAgIGNhbGN1bGFyUGVybWl0ZUJvcnJhckJGLFxyXG4gICAgY2FsY3VsYXJSZXN1bWVuVml2aWVuZGEsXHJcbiAgICBnZXREYXRvc0J5UGFzcyxcclxuICAgIGdldEZvcm11bGFyaW9zRm9ySWRWaXZpZW5kYSxcclxuICAgIGdldE1haW5Gb3JtRm9yVml2aWVuZGEsXHJcbiAgICBpbnRlbnRhckJhY2t1cCxcclxuICAgIHNldENhbGN1bGFyVmFyaWFibGVzXHJcbn0gZnJvbSBcIi4vYnlwYXNzLWZvcm11bGFyaW9cIlxyXG5pbXBvcnQgeyBkbVRyYWVyRGF0b3NGb3JtdWxhcmlvLCBkaXNwYXRjaGVycywgXHJcbiAgICBnb3RvU2luY3Jvbml6YXIsXHJcbiAgICBnZXRDYWNoZVZlcnNpb24sXHJcbiAgICBnb3RvQ29uc2lzdGlyLFxyXG59IGZyb20gXCIuL3JlZHV4LWZvcm11bGFyaW9cIjtcclxuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiOyBcclxuaW1wb3J0IHsgc3RyaWN0IGFzIGxpa2VBciwgYmVpbmdBcnJheSB9IGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCB7c2xlZXAsIGNvYWxlc2NlfSBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCB7IHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEFwcEJhciwgQnV0dG9uR3JvdXAsIENpcmN1bGFyUHJvZ3Jlc3MsIENoZWNrYm94LCBcclxuICAgIERpYWxvZywgRGlhbG9nQWN0aW9ucywgRGlhbG9nQ29udGVudCwgRGlhbG9nQ29udGVudFRleHQsIFxyXG4gICAgRGlhbG9nVGl0bGUsIERpdmlkZXIsIEZhYiwgSWNvbkJ1dHRvbixcclxuICAgIE1lbnUsIE1lbnVJdGVtLCBQYXBlciwgUG9wb3ZlcixcclxuICAgIFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZVJvdywgVG9vbGJhclxyXG59IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZVwiO1xyXG5pbXBvcnQgeyBFc3RhZG9WYXJpYWJsZSwgRm9ybVN0cnVjdHVyZVN0YXRlIH0gZnJvbSBcInJvdy12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMvd2l0aFN0eWxlc1wiO1xyXG5cclxuaW1wb3J0IHsgXHJcbiAgICByZWdpc3RyYXJFbGVtZW50bywgc2V0QXR0ckRpc3RpbnRvLCBzZXRWYWxvckRpc3RpbnRvLCBkaXNwYXRjaEJ5UGFzcywgXHJcbiAgICBnZXREaXJ0eSwgZ2V0SG9qYURlUnV0YSwgZ2V0RmVlZGJhY2tSb3dWYWxpZGF0b3IsXHJcbiAgICBnZXRGdW5jaW9uSGFiaWxpdGFyLCBcclxuICAgIGdldEVzdHJ1Y3R1cmEsIFxyXG4gICAgZGVmT3BlcmF0aXZvLFxyXG4gICAgdm9sY2Fkb0luaWNpYWxFbGVtZW50b3NSZWdpc3RyYWRvcyxcclxuICAgIG51bWJlck9yU3RyaW5nSW5jSWZBcnJheSwgXHJcbiAgICBjYWxjdWxhckVsZW1lbnRvRW5mb2NhZG8sXHJcbiAgICBhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSxcclxuICAgIGFjY2lvbl9pZF9wcmVndW50YSxcclxuICAgIGFjY2lvbl9hZ3JlZ2FyX2Zvcm11bGFyaW8sXHJcbiAgICBOT19DQU1CSUFSX19WRVJJRklDQVJfU0lfRVNfTkVDRVNBUklPLFxyXG4gICAgTk9fQ0FNQklBUl9fU09MT19UUkFFUl9TVEFUVVNcclxufSBmcm9tIFwiLi9ieXBhc3MtZm9ybXVsYXJpb1wiXHJcblxyXG5pbXBvcnQge2FycmFuZ2UsIGh0bWwsIEh0bWxUYWd9IGZyb20gXCJqcy10by1odG1sXCI7XHJcblxyXG5mdW5jdGlvbiBicmVha2VhYmxlVGV4dCh0ZXh0OnN0cmluZ3xudWxsKTpzdHJpbmd8dW5kZWZpbmVkO1xyXG5mdW5jdGlvbiBicmVha2VhYmxlVGV4dCh0ZXh0OnN0cmluZ3xudWxsLCBkaWNjaW9uYXJpbz86e1tjbGF2ZTpzdHJpbmddOlJlYWN0LlJlYWN0Tm9kZX0pe1xyXG4gICAgaWYodHlwZW9mIHRleHQgIT0gXCJzdHJpbmdcIikgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcLy9nLFwiL1xcdTIwNjNcIikucmVwbGFjZSgvXFwvXFx1MjA2MyhcXHcpXFxiL2csJy8kMScpO1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvX19fKi9nLCh0b2RvKT0+YFske3RvZG99XWApLnJlcGxhY2UoL1xcQFxcdytcXEAvZywodG9kbyk9PmBbJHt0b2RvfV1gKTtcclxuICAgIGlmKCFkaWNjaW9uYXJpbyB8fCB0cnVlKSByZXR1cm4gdGV4dDtcclxuICAgIC8qXHJcbiAgICByZXR1cm4gPHNwYW4+e3BhcnRlcy5tYXAoKHBhcnRlOnN0cmluZywgaTpudW1iZXIpID0+IDxzcGFuIHN0eWxlPXtpJTI9PTE/e3RleHREZWNvcmF0aW9uOlwidW5kZXJsaW5lXCJ9Ont9fT4ge3BhcnRlK1wiIFwifSA8L3NwYW4+KX08L3NwYW4+XHJcbiAgICAqL1xyXG59XHJcblxyXG5jb25zdCBWRVJfRE9NSU5JTyA9IGZhbHNlOyAvLyBlbCBlbmN1ZXN0YWRvciBubyBuZWNlc2l0YSB2ZXIgZWwgZG9taW5pbyBlbiBjYWRhIGVuY3Vlc3RhIHBvcnF1ZSBlbCBkb21pbmlvIGRlcGVuZGUgZGVsIMOhcmVhIHkgc2UgZGVkdWNlIGRlbCBwcmltZXIgZMOtZ2l0byBkZWwgbsO6bWVybyBkZSBlbmN1ZXN0YVxyXG4vLyBubyBwb25lciBWRVJfRE9NSU5JTyBlbiB0cnVlLCBjYW1iaWFyIHBvciB1bmEgdmFyaWFibGUgcXVlIHNlIGZpamUgc2kgZWwgRE0gZXN0w6EgZW4gbW9kbyBwcnVlYmEgbyBlbiBtb2RvIFwiZGlzZcOxbyBjb25jZXB0dWFsXCJcclxuXHJcbnZhciBkZWJlU2FsdGFyOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCk9PntcclxuICAgIC8qXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldjpLZXlib2FyZEV2ZW50KT0+e1xyXG4gICAgICAgIGRlYmVTYWx0YXIgPSBldi5rZXkgPT0gJ0VudGVyJyB8fCBldi5rZXlDb2RlID09IDEzO1xyXG4gICAgfSlcclxuICAgICovXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKT0+e1xyXG4gICAgICAgIGRlYmVTYWx0YXIgPSBmYWxzZTtcclxuICAgIH0pXHJcbn0pXHJcblxyXG4vLyAvKlxyXG5cclxudHlwZSBDb21tb25BdHRyaWJ1dGVzID0ge2NsYXNzTmFtZT86c3RyaW5nLHN0eWxlPzpDU1NQcm9wZXJ0aWVzLGlkPzpzdHJpbmcsIHRhYkluZGV4PzpudW1iZXJ9IC8vIENTU1Byb3BlcnRpZXNcclxudHlwZSBDb2xvclZhbHVlcyA9ICdwcmltYXJ5J3wnc2Vjb25kYXJ5J3wnZGVmYXVsdCd8J2luaGVyaXQnXHJcblxyXG5leHBvcnQgdHlwZSBMaWJyZURlc3BsaWVndWVUeXBlID0gKHByb3BzOntcclxuICAgIGtleTpzdHJpbmdcclxuICAgIGNhc2lsbGVybzpMaWJyZVxyXG4gICAgZm9ybXVsYXJpbzpGb3JtdWxhcmlvXHJcbiAgICBmb3JQazpGb3JQa1xyXG59KT0+SlNYLkVsZW1lbnQ7XHJcblxyXG52YXIgTGlicmVEZXNwbGllZ3VlOiBMaWJyZURlc3BsaWVndWVUeXBlXHJcblxyXG5jb25zdCBCdXR0b24gPSAoe3ZhcmlhbnQsIG9uQ2xpY2ssIGRpc2FibGVkLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjb2xvciwgc2l6ZSwgXHJcbiAgICAgICAgZGlzYWJsZUVsZXZhdGlvbiwgZGlzYWJsZUZvY3VzUmlwcGxlLCBkaXNhYmxlUmlwcGxlLCBmdWxsV2lkdGgsIFxyXG4gICAgICAgIC4uLm90aGVyXHJcbiAgICB9OntcclxuICAgIHZhcmlhbnQ/OnN0cmluZyxcclxuICAgIGNvbG9yPzpDb2xvclZhbHVlcyxcclxuICAgIG9uQ2xpY2s/OlJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50PiwgLy8gIChldmVudDpNb3VzZUV2ZW50LyogPEhUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50PiovKT0+dm9pZCxcclxuICAgIGRpc2FibGVkPzpib29sZWFuXHJcbiAgICBjaGlsZHJlbjphbnksXHJcbiAgICBjbGFzc05hbWU/OnN0cmluZyxcclxuICAgIHNpemU/OidzbWFsbCcsXHJcbiAgICBkaXNhYmxlRWxldmF0aW9uPzphbnksIGRpc2FibGVGb2N1c1JpcHBsZT86YW55LCBkaXNhYmxlUmlwcGxlPzphbnksXHJcbn0gJiBDb21tb25BdHRyaWJ1dGVzKT0+PGJ1dHRvbiBcclxuICAgIHsuLi5vdGhlcn1cclxuICAgIGNsYXNzTmFtZT17YGJ0biBidG4ke3ZhcmlhbnQ9PSdjb250YWluZWQnPycnOictJysodmFyaWFudD09J291dGxpbmVkJz8nb3V0bGluZSc6dmFyaWFudCl9LSR7KGNvbG9yPT0nZGVmYXVsdCcgfHwgY29sb3I9PSdpbmhlcml0Jz8nc2Vjb25kYXJ5Jzpjb2xvcj09J3NlY29uZGFyeSc/J2Rhbmdlcic6Y29sb3IpfHwnc2Vjb25kYXJ5J30gJHtjbGFzc05hbWV8fCcnfSAke3NpemU9PSdzbWFsbCc/J2J0bi1zbSc6Jyd9YH1cclxuICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cclxuICAgIG9uQ2xpY2s9e29uQ2xpY2t9XHJcbj57Y2hpbGRyZW59PC9idXR0b24+O1xyXG5cclxuY29uc3QgQnV0dG9uMiA9ICh7dmFyaWFudCwgb25DbGljaywgZGlzYWJsZWQsIGNoaWxkcmVuLCBjbGFzc05hbWUsIGNvbG9yLCBzaXplLCAuLi5vdGhlcn06e1xyXG4gICAgdmFyaWFudD86c3RyaW5nLFxyXG4gICAgY29sb3I/OkNvbG9yVmFsdWVzLFxyXG4gICAgb25DbGljaz86KCk9PnZvaWQsXHJcbiAgICBkaXNhYmxlZD86Ym9vbGVhblxyXG4gICAgY2hpbGRyZW46YW55LFxyXG4gICAgY2xhc3NOYW1lPzpzdHJpbmcsXHJcbiAgICBzaXplPzonc21hbGwnLFxyXG4gICAgJGF0dHJzPzp7fVxyXG59ICYgQ29tbW9uQXR0cmlidXRlcyk9Pmh0bWwuYnV0dG9uKHtcclxuICAgIC4uLm90aGVyLFxyXG4gICAgY2xhc3M6IGBidG4gYnRuJHt2YXJpYW50PT0nY29udGFpbmVkJz8nJzonLScrKHZhcmlhbnQ9PSdvdXRsaW5lZCc/J291dGxpbmUnOnZhcmlhbnQpfS0keyhjb2xvcj09J2RlZmF1bHQnIHx8IGNvbG9yPT0naW5oZXJpdCc/J3NlY29uZGFyeSc6Y29sb3I9PSdzZWNvbmRhcnknPydkYW5nZXInOmNvbG9yKXx8J3NlY29uZGFyeSd9ICR7Y2xhc3NOYW1lfHwnJ30gJHtzaXplPT0nc21hbGwnPydidG4tc20nOicnfWAsXHJcbiAgICBkaXNhYmxlZCxcclxuICAgICRvbjp7Y2xpY2s6b25DbGlja31cclxufSwgY2hpbGRyZW4pO1xyXG5cclxuXHJcbmNvbnN0IFRleHRGaWVsZCA9IChwcm9wczp7XHJcbiAgICBpZDpzdHJpbmcsXHJcbiAgICBkaXNhYmxlZD86Ym9vbGVhbixcclxuICAgIGNsYXNzTmFtZT86c3RyaW5nLFxyXG4gICAgYXV0b0ZvY3VzPzpib29sZWFuLFxyXG4gICAgZnVsbFdpZHRoOmJvb2xlYW5cclxuICAgIGlucHV0UHJvcHM/OmFueSxcclxuICAgIHZhbHVlPzphbnksXHJcbiAgICB0eXBlOmFueSxcclxuICAgIGxhYmVsPzpzdHJpbmcsXHJcbiAgICBlcnJvcj86Ym9vbGVhbixcclxuICAgIGhlbHBlclRleHQ/OnN0cmluZyxcclxuICAgIG11bHRpbGluZT86Ym9vbGVhbixcclxuICAgIG9uQ2hhbmdlPzooZXZlbnQ6YW55KT0+dm9pZCxcclxuICAgIG9uRm9jdXM/OihldmVudDphbnkpPT52b2lkLFxyXG4gICAgb25CbHVyPzooZXZlbnQ6YW55LCB2YWxvcjphbnkpPT52b2lkLFxyXG4gICAgb25LZXlEb3duPzooZXZlbnQ6S2V5Ym9hcmRFdmVudCk9PnZvaWRcclxufSk9PjxpbnB1dFxyXG4gICAgaWQ9e3Byb3BzLmlkfVxyXG4gICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkfVxyXG4gICAgY2xhc3NOYW1lPXtwcm9wcy5jbGFzc05hbWV9XHJcbiAgICBhdXRvRm9jdXM9e3Byb3BzLmF1dG9Gb2N1c31cclxuICAgIHZhbHVlPXtwcm9wcy52YWx1ZX0gXHJcbiAgICB0eXBlPXtwcm9wcy50eXBlfVxyXG4gICAgb25DaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfVxyXG4gICAgb25Gb2N1cz17cHJvcHMub25Gb2N1c31cclxuICAgIG9uQmx1cj17KGV2dCk9PnByb3BzLm9uQmx1cj8uKGV2dCwgZXZ0LnRhcmdldC52YWx1ZSl9XHJcbiAgICBvbktleURvd249e3Byb3BzLm9uS2V5RG93bn1cclxuICAgIHBsYWNlaG9sZGVyPXtwcm9wcy5sYWJlbH1cclxuLz47XHJcblxyXG5jb25zdCBUeXBvZ3JhcGh5ID0gKHtjaGlsZHJlbiwgLi4ub3RoZXJzfTp7XHJcbiAgICBjaGlsZHJlbjphbnksXHJcbiAgICBjb21wb25lbnQ/OnN0cmluZ1xyXG4gICAgdmFyaWFudD86J2g2J1xyXG59JkNvbW1vbkF0dHJpYnV0ZXMpPT5SZWFjdC5jcmVhdGVFbGVtZW50KG90aGVycy52YXJpYW50fHxvdGhlcnMuY29tcG9uZW50fHwnZGl2JyxvdGhlcnMsY2hpbGRyZW4pO1xyXG5cclxuZnVuY3Rpb24gR3JpZChwcm9wczp7XHJcbiAgICBjb250YWluZXI/OmJvb2xlYW4sXHJcbiAgICBzcGFjaW5nPzpudW1iZXIsXHJcbiAgICBpdGVtPzpib29sZWFuLFxyXG4gICAgd3JhcD86J3dyYXAnfCdub3dyYXAnLFxyXG4gICAgZGlyZWN0aW9uPzoncm93J3wnY29sdW1uJ1xyXG4gICAgYWxpZ25JdGVtcz86J3N0cmV0Y2gnIHwgJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdjZW50ZXInIHwgJ2Jhc2VsaW5lJyxcclxuICAgIGNoaWxkcmVuOmFueSxcclxuICAgIHhzPzpudW1iZXIsXHJcbiAgICBzbT86bnVtYmVyLFxyXG59JkNvbW1vbkF0dHJpYnV0ZXMpe1xyXG4gICAgdmFyIHtjb250YWluZXIsIGl0ZW0sIHdyYXAsIGRpcmVjdGlvbiwgYWxpZ25JdGVtcywgY2hpbGRyZW4sIGNsYXNzTmFtZSwgeHMsIHNtLCBzcGFjaW5nLCAuLi5vdGhlcn0gPSBwcm9wcztcclxuICAgIHJldHVybiA8ZGl2XHJcbiAgICB7Li4ub3RoZXJ9XHJcbiAgICBjbGFzc05hbWU9e2Ake2NsYXNzTmFtZXx8Jyd9ICR7eHMhPW51bGw/J2dyaWQteHMtJyt4czonJ30gJHtzbSE9bnVsbD8nZ3JpZC1zbS0nK3NtOicnfWB9XHJcbiAgICBzdHlsZT17Y29udGFpbmVyP3tcclxuICAgICAgICBkaXNwbGF5OidmbGV4JyxcclxuICAgICAgICBmbGV4V3JhcDp3cmFwLFxyXG4gICAgICAgIGZsZXhEaXJlY3Rpb246ZGlyZWN0aW9uLFxyXG4gICAgICAgIGFsaWduSXRlbXM6YWxpZ25JdGVtcyxcclxuICAgICAgICBtYXJnaW46c3BhY2luZyE9bnVsbD9zcGFjaW5nKjgrJ3B4Jzp1bmRlZmluZWRcclxuICAgIH06e1xyXG4gICAgfX1cclxuPntjaGlsZHJlbn08L2Rpdj5cclxufVxyXG5cclxudmFyIHAxMiA9ICdwMTInIGFzIElkVmFyaWFibGU7XHJcbnZhciBzcDIgPSAnc3AyJyBhcyBJZFZhcmlhYmxlO1xyXG52YXIgc3AzID0gJ3NwMycgYXMgSWRWYXJpYWJsZTtcclxudmFyIHNwNCA9ICdzcDQnIGFzIElkVmFyaWFibGU7XHJcbnZhciBzcDUgPSAnc3A1JyBhcyBJZFZhcmlhYmxlO1xyXG5cclxudmFyIGRpY2Npb25hcmlvID0ge31cclxuXHJcbi8qXHJcbi8vIGNvbnN0IHRha2VFbGVtZW50T3JEZWZhdWx0PEssIFQgZXh0ZW5kcyBbSyBpbl0sIEQ+KClcclxuZnVuY3Rpb24gaXNJbjxWLCBUPihrOmtleW9mIFQsIG9iamVjdDpUKTogb2JqZWN0W2tdIGlzIFZ7XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG59XHJcbiovXHJcbmZ1bmN0aW9uIHRha2VFbGVtZW50T3JEZWZhdWx0PFYsSyBleHRlbmRzIHN0cmluZyxLTyBleHRlbmRzIHN0cmluZz4oazpLLCBvYmplY3Q6e1trIGluIEtPXTpWfSwgZGVmYXVsdFZhbHVlOlYpOlZ7XHJcbiAgICByZXR1cm4gayBpbiBvYmplY3QgPyBcclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHBvciBhbGd1bmEgcmF6w7NuIFRTIG5vIHF1aWVyZSBlbnRlbmRlciBxdWUgc2kgayBlc3TDoSBlbiBvYmplY3QsIG9iamVjdFtrXSBleGlzdGVcclxuICAgICAgICBvYmplY3Rba10gXHJcbiAgICA6IGRlZmF1bHRWYWx1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiBEZXNwbGllZ3VlRW5jYWJlemFkbyhwcm9wczp7Y2FzaWxsZXJvOkNhc2lsbGVyb0VuY2FiZXphYmxlLCBsZWVyPzpib29sZWFufSl7XHJcbiAgICBjb25zdCBmb3JQa051bGw9e30gYXMgRm9yUGs7XHJcbiAgICByZXR1cm4gPEVuY2FiZXphZG9EZXNwbGllZ3VlIGNhc2lsbGVybz17cHJvcHMuY2FzaWxsZXJvfSBsZWVyPXtwcm9wcy5sZWVyfSBmb3JQaz17Zm9yUGtOdWxsfS8+O1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdWJpckhhc3RhKGVsZW1lbnRvOkhUTUxFbGVtZW50fG51bGwsIGZ1bjooZWxlbWVudG86SFRNTEVsZW1lbnQpPT5ib29sZWFuKTpIVE1MRWxlbWVudHxudWxse1xyXG4gICAgaWYoZWxlbWVudG8gPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICBpZihmdW4oZWxlbWVudG8pKSByZXR1cm4gZWxlbWVudG87XHJcbiAgICByZXR1cm4gc3ViaXJIYXN0YShlbGVtZW50by5wYXJlbnRFbGVtZW50LCBmdW4pO1xyXG59XHJcblxyXG52YXIgZWxlbWVudG9Db25TZW5uaWFsQm9ycmFyOkhUTUxFbGVtZW50fG51bGwgPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gQm90b25Cb3JyYXIoe2lkLCB2YXJpYWJsZSwgZm9yUGssIHZhbG9yT3BjaW9ufTp7aWQ6c3RyaW5nLCB2YXJpYWJsZTpJZFZhcmlhYmxlLCBmb3JQazpGb3JQaywgdmFsb3JPcGNpb24/OmFueX0pe1xyXG4gICAgdmFyIGhhbmRsZUNsaWNrQm9ycmFyPSgpPT57XHJcbiAgICAgICAgZGlzcGF0Y2hCeVBhc3MoYWNjaW9uX3JlZ2lzdHJhcl9yZXNwdWVzdGEsIHtyZXNwdWVzdGE6bnVsbCwgdmFyaWFibGU6dmFyaWFibGUsIGZvclBrOmZvclBrfSlcclxuICAgIH07XHJcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJib3Rvbi1ib3JyYXJcIj5cclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGlkPXtpZH1cclxuICAgICAgICAgICAgbWktdmFyaWFibGU9e3ZhcmlhYmxlfVxyXG4gICAgICAgICAgICB2YWxvci1vcGNpb249e3ZhbG9yT3BjaW9ufVxyXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJib3Rvbi1vcGNpb24gYm90b24tb3BjaW9uLWJvcnJhclwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrQm9ycmFyfVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPElDT04uRGVsZXRlRm9yZXZlci8+XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICA8L2Rpdj5cclxufVxyXG5cclxuZnVuY3Rpb24gU2FsdG9EZXNwbGllZ3VlKHtjYXNpbGxlcm8scHJlZmlqb306e2Nhc2lsbGVybzpQcmVndW50YXxPcGNpb258RmlsdHJvLCBwcmVmaWpvPzpzdHJpbmd9KXtcclxuICAgIHJldHVybiBjYXNpbGxlcm8uc2FsdG8/XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYXNlXCI+XHJcbiAgICAgICAgICAgIHtwcmVmaWpvPzxzcGFuIGNsYXNzTmFtZT1cInByZWZpam9cIj57cHJlZmlqb30gPC9zcGFuPjpudWxsfVxyXG4gICAgICAgICAgICA8SUNPTi5UcmVuZGluZ0ZsYXQgLz48c3Bhbj57Y2FzaWxsZXJvLnNhbHRvfTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDpudWxsXHJcbn1cclxuXHJcbmZ1bmN0aW9uIE9wY2lvbkRlc3BsaWVndWUocHJvcHM6e2Nhc2lsbGVybzpPcGNpb24sIHZhbG9yT3BjaW9uOm51bWJlciwgdmFyaWFibGU6SWRWYXJpYWJsZSwgZm9yUGs6Rm9yUGssIGxlZXI6Ym9vbGVhbiwgY29uQm90b25Cb3JyYXI6Ym9vbGVhbn0pe1xyXG4gICAgY29uc3Qge2Nhc2lsbGVyb30gPSBwcm9wcztcclxuICAgIHZhciBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB2YXIgc2FsdG9BdXRvbWF0aWNvID0gdXNlU2VsZWN0b3IoKHN0YXRlOkNhc29TdGF0ZSk9PnN0YXRlLm9wY2lvbmVzLnNhbHRvQXV0b21hdGljbyk7XHJcbiAgICB2YXIgaGFuZGxlQ2xpY2s6UmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEJ1dHRvbkVsZW1lbnQ+ID0gYXN5bmMgKGV2ZW50KT0+e1xyXG4gICAgICAgIHZhciBjb250YWluZXIgPSBzdWJpckhhc3RhKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgZWxlbWVudG89PmVsZW1lbnRvLmNsYXNzTGlzdC5jb250YWlucygncHJlZ3VudGEnKSB8fCBlbGVtZW50by5jbGFzc0xpc3QuY29udGFpbnMoJ211bHRpcGxlJykpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgICAgICB2YXIgdGllbmUgPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCdlc3RveS1ib3JyYW5kbycpO1xyXG4gICAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2VzdG95LWJvcnJhbmRvJywnTk8nKTtcclxuICAgICAgICBpZihlbGVtZW50b0NvblNlbm5pYWxCb3JyYXIpe1xyXG4gICAgICAgICAgICBlbGVtZW50b0NvblNlbm5pYWxCb3JyYXIuc2V0QXR0cmlidXRlKCdlc3RveS1ib3JyYW5kbycsJ05PJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnRvQ29uU2VubmlhbEJvcnJhciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB7cmVjZW50TW9kaWZpZWQsIHNpZ3VpZW50ZVZhcmlhYmxlfSA9IGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9yZWdpc3RyYXJfcmVzcHVlc3RhLCB7cmVzcHVlc3RhOnByb3BzLnZhbG9yT3BjaW9uLCB2YXJpYWJsZTpwcm9wcy52YXJpYWJsZSwgZm9yUGs6cHJvcHMuZm9yUGt9KTtcclxuICAgICAgICBpZighcmVjZW50TW9kaWZpZWQpe1xyXG4gICAgICAgICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdlc3RveS1ib3JyYW5kbycsdGllbmU9PSdTSSc/J05PJzonU0knKTtcclxuICAgICAgICAgICAgaWYodGllbmUhPSdTSScpe1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudG9Db25TZW5uaWFsQm9ycmFyPWNvbnRhaW5lcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihzaWd1aWVudGVWYXJpYWJsZSAmJiBzYWx0b0F1dG9tYXRpY28pe1xyXG4gICAgICAgICAgICAgICAgdmFyIGJvdG9uU3R5bGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uc3R5bGU7XHJcbiAgICAgICAgICAgICAgICBpZihib3RvblN0eWxlKSBib3RvblN0eWxlLmNvbG9yID0gJ2dyZWVuJztcclxuICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7XHJcbiAgICAgICAgICAgICAgICBpZihib3RvblN0eWxlKSBib3RvblN0eWxlLmNvbG9yID0gJ2JsdWUnO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgc2xlZXAoMTAwKTtcclxuICAgICAgICAgICAgICAgIGlmKGJvdG9uU3R5bGUpIGJvdG9uU3R5bGUuY29sb3IgPSAnZ3JlZW4nO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgc2xlZXAoMTAwKTtcclxuICAgICAgICAgICAgICAgIGlmKGJvdG9uU3R5bGUpIGJvdG9uU3R5bGUuY29sb3IgPSAnJztcclxuICAgICAgICAgICAgICAgIGVuZm9jYXJFbGVtZW50b0RlVmFyaWFibGUoc2lndWllbnRlVmFyaWFibGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiA8R3JpZCBjbGFzc05hbWU9XCJvcGNpb25cIj4gXHJcbiAgICAgICAge3Byb3BzLmNvbkJvdG9uQm9ycmFyPzxCb3RvbkJvcnJhclxyXG4gICAgICAgICAgICBpZD17YG9wY2lvbi12YXItJHtwcm9wcy52YXJpYWJsZX0tJHtwcm9wcy52YWxvck9wY2lvbn0tYm9ycmFyYH1cclxuICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfVxyXG4gICAgICAgICAgICB2YXJpYWJsZT17cHJvcHMudmFyaWFibGV9XHJcbiAgICAgICAgICAgIHZhbG9yT3BjaW9uPXtwcm9wcy52YWxvck9wY2lvbn1cclxuICAgICAgICAgICAgLz46bnVsbH1cclxuICAgICAgICA8QnV0dG9uIFxyXG4gICAgICAgICAgICBpZD17YG9wY2lvbi12YXItJHtwcm9wcy52YXJpYWJsZX0tJHtwcm9wcy52YWxvck9wY2lvbn1gfVxyXG4gICAgICAgICAgICBtaS12YXJpYWJsZT17cHJvcHMudmFyaWFibGV9XHJcbiAgICAgICAgICAgIHZhbG9yLW9wY2lvbj17cHJvcHMudmFsb3JPcGNpb259XHJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvdG9uLW9wY2lvbiBib3Rvbi1vcGNpb24tc2VsZWNjaW9uXCJcclxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XHJcbiAgICAgICAgICAgIHRhYkluZGV4PXstMX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciB3cmFwPVwibm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9XCJpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtjYXNpbGxlcm8udmVyX2lkIHx8IGNhc2lsbGVyby5jYXNpbGxlcm99XHJcbiAgICAgICAgICAgICAgICA8L0dyaWQ+XHJcbiAgICAgICAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9XCJvcGNpb24tdGV4dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBkZWJlLWxlZXI9e2Nhc2lsbGVyby5sZWVyPydTSSc6Y2FzaWxsZXJvLmxlZXI9PT1mYWxzZT8nTk8nOnByb3BzLmxlZXI/J1NJJzonTk8nfT57YnJlYWtlYWJsZVRleHQoY2FzaWxsZXJvLm5vbWJyZSl9PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgICAgIHtjYXNpbGxlcm8uYWNsYXJhY2lvbj9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPSdhY2xhcmFjaW9uJz57YnJlYWtlYWJsZVRleHQoY2FzaWxsZXJvLmFjbGFyYWNpb24pfTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgICAgICA6bnVsbH1cclxuICAgICAgICAgICAgICAgIDwvR3JpZD5cclxuICAgICAgICAgICAgPC9HcmlkPlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDxTYWx0b0Rlc3BsaWVndWUgY2FzaWxsZXJvPXtjYXNpbGxlcm99Lz5cclxuICAgIDwvR3JpZD5cclxufVxyXG5pbnRlcmZhY2UgSWNhc2lsbGVyb0Nvbk9wY2lvbmVze1xyXG4gICAgdmFyX25hbWU6SWRWYXJpYWJsZSxcclxuICAgIGRlc3BsaWVndWVDb250ZW5pZG86J3ZlcnRpY2FsJ3wnaG9yaXpvbnRhbCd8bnVsbCxcclxuICAgIGNhc2lsbGVyb3M6T3BjaW9uW11cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIFNpTm9EZXNwbGllZ3VlKHByb3BzOntjYXNpbGxlcm9Db25PcGNpb25lczpJY2FzaWxsZXJvQ29uT3BjaW9uZXMsIGZvclBrOkZvclBrLCBkZXNwbGllZ3VlQ29udGVuaWRvOid2ZXJ0aWNhbCd8J2hvcml6b250YWwnfSl7XHJcbiAgICByZXR1cm4gPE9wY2lvbmVzRGVzcGxpZWd1ZSBcclxuICAgICAgICBjYXNpbGxlcm9Db25PcGNpb25lcz17cHJvcHMuY2FzaWxsZXJvQ29uT3BjaW9uZXN9IFxyXG4gICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa30gXHJcbiAgICAgICAgbGVlcj17ZmFsc2V9XHJcbiAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbz17cHJvcHMuZGVzcGxpZWd1ZUNvbnRlbmlkb31cclxuICAgIC8+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlZ2lzdHJhZG9yRGVWYXJpYWJsZShwcmVndW50YTpQcmVndW50YXxPcGNpb25NdWx0aXBsZXxDb25qdW50b1ByZWd1bnRhcyl7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIHJlc3B1ZXN0YXM6UmVzcHVlc3RhcywgZmVlZGJhY2tGb3JtOiBGb3JtU3RydWN0dXJlU3RhdGU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPiwgZWxlbWVudG86SFRNTERpdkVsZW1lbnRcclxuICAgICk9PntcclxuICAgICAgICB2YXIgdmFsb3JBY3R1YWwgPSBwcmVndW50YS52YXJfbmFtZSA9PSBudWxsID8gbnVsbCA6IHJlc3B1ZXN0YXNbcHJlZ3VudGEudmFyX25hbWVdO1xyXG4gICAgICAgIHZhciBmZWVkYmFja1JvdyA9IGZlZWRiYWNrRm9ybS5mZWVkYmFjaztcclxuICAgICAgICB2YXIgZmVlZGJhY2tWYXIgPSBwcmVndW50YS52YXJfbmFtZSA9PSBudWxsID8gbnVsbCA6IGZlZWRiYWNrUm93W3ByZWd1bnRhLnZhcl9uYW1lXTtcclxuICAgICAgICB2YXIgdGllbmVWYWxvcj12YWxvckFjdHVhbCE9bnVsbCAmJiBmZWVkYmFja1ZhciE9bnVsbD8oZmVlZGJhY2tWYXIuY29uUHJvYmxlbWE/J2ludmFsaWRvJzondmFsaWRvJyk6J05PJztcclxuICAgICAgICB2YXIgZXN0YWRvOkVzdGFkb1ZhcmlhYmxlOyBcclxuICAgICAgICBpZihwcmVndW50YS50aXBvdmFyKXtcclxuICAgICAgICAgICAgZXN0YWRvPWZlZWRiYWNrVmFyPy5lc3RhZG8hO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB2YXIgZmVlZGJhY2tNdWx0aSA9IHByZWd1bnRhLmNhc2lsbGVyb3MuZmlsdGVyKGM9PmMudmFyX25hbWUhPW51bGwpLnJlZHVjZSgocHYsIG9tKT0+e1xyXG4gICAgICAgICAgICAgICAgdmFyIGZiPWZlZWRiYWNrUm93Py5bb20udmFyX25hbWUhXSFcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGllbmVBY3R1YWw6IHB2LnRpZW5lQWN0dWFsIHx8IGZiLmVzdGFkbz09J2FjdHVhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0YVNhbHRlYWRhOiBwdi5lc3RhU2FsdGVhZGEgJiYgKGZiLmVzdGFkbz09J3NhbHRlYWRhJyB8fCBmYi5lc3RhZG89PSdmdWVyYV9kZV9mbHVqb19wb3Jfc2FsdG8nKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCB7dGllbmVBY3R1YWw6ZmFsc2UsIGVzdGFTYWx0ZWFkYTp0cnVlfSk7XHJcbiAgICAgICAgICAgIGVzdGFkbz1mZWVkYmFja011bHRpLnRpZW5lQWN0dWFsPydhY3R1YWwnOmZlZWRiYWNrTXVsdGkuZXN0YVNhbHRlYWRhPydzYWx0ZWFkYSc6J3RvZGF2aWFfbm8nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldEF0dHJEaXN0aW50byhlbGVtZW50bywgJ251ZXN0cm8tdmFsaWRhdG9yJywgZXN0YWRvKTtcclxuICAgICAgICBzZXRBdHRyRGlzdGludG8oZWxlbWVudG8sICd0aWVuZS12YWxvcicsIHRpZW5lVmFsb3IpO1xyXG4gICAgICAgIHNldEF0dHJEaXN0aW50byhlbGVtZW50bywgJ2VzdGEtaW5oYWJpbGl0YWRhJywgZmVlZGJhY2tWYXI/LmluaGFiaWxpdGFkYT8nU0knOidOTycpO1xyXG4gICAgICAgIGlmKHByZWd1bnRhLnZhcl9uYW1lKXtcclxuICAgICAgICAgICAgdmFyIG9wY2lvbmVzOkhUTUxCdXR0b25FbGVtZW50W10gPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlbGVtZW50by5xdWVyeVNlbGVjdG9yQWxsKGAuYm90b24tb3BjaW9uW21pLXZhcmlhYmxlPVwiJHtwcmVndW50YS52YXJfbmFtZX1cIl1gKSwwKTtcclxuICAgICAgICAgICAgdmFyIGVsZW1lbnRvT3BjaW9uOkhUTUxCdXR0b25FbGVtZW50O1xyXG4gICAgICAgICAgICBmb3IoZWxlbWVudG9PcGNpb24gb2Ygb3BjaW9uZXMpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHZhbG9yT3BjaW9uID0gZWxlbWVudG9PcGNpb24uZ2V0QXR0cmlidXRlKCd2YWxvci1vcGNpb24nKTtcclxuICAgICAgICAgICAgICAgIHNldEF0dHJEaXN0aW50byhlbGVtZW50b09wY2lvbiwgJ29wY2lvbi1zZWxlY2Npb25hZGEnLCB2YWxvck9wY2lvbiA9PSB2YWxvckFjdHVhbCA/IFwiU0lcIjogXCJOT1wiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50b3NJbnB1dDpIVE1MSW5wdXRFbGVtZW50W10gPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlbGVtZW50by5xdWVyeVNlbGVjdG9yQWxsKCcudmFyaWFibGUnKSk7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50b0lucHV0OkhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGZvcihlbGVtZW50b0lucHV0IG9mIGVsZW1lbnRvc0lucHV0KXtcclxuICAgICAgICAgICAgICAgIHNldFZhbG9yRGlzdGludG8oZWxlbWVudG9JbnB1dCwgJ3ZhbHVlJywgdmFsb3JBY3R1YWwgPT0gbnVsbCA/ICcnIDogdmFsb3JBY3R1YWwudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGJvdG9uTnNOYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibnNuYy1wcmVndW50YS1cIitwcmVndW50YS52YXJfbmFtZSkhO1xyXG4gICAgICAgICAgICBzZXRBdHRyRGlzdGludG8oYm90b25Oc05jLCAnb3BjaW9uLXNlbGVjY2lvbmFkYScsIHZhbG9yQWN0dWFsID09IChwcmVndW50YS52YWxvcl9uc19uYyA/PyAtOSkgPyBcIlNJXCIgOiBcIk5PXCIpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBPcGNpb25NdWx0aXBsZURlc3BsaWVndWUocHJvcHM6e29wY2lvbk06T3BjaW9uTXVsdGlwbGUsIGZvclBrOkZvclBrfSl7XHJcbiAgICBjb25zdCB7b3BjaW9uTX0gPSBwcm9wcztcclxuICAgIHZhciBpZCA9IGBvcGNpb25NLSR7b3BjaW9uTS5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZCwgXHJcbiAgICAgICAgZGlyZWN0OnRydWUsIFxyXG4gICAgICAgIGZ1bjogcmVnaXN0cmFkb3JEZVZhcmlhYmxlKG9wY2lvbk0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIDxEZXNwbGVnYXJDYXNpbGxlcm8gXHJcbiAgICAgICAgaWQ9e2lkfVxyXG4gICAgICAgIGNhc2lsbGVybz17b3BjaW9uTX1cclxuICAgICAgICBkZXNwbGllZ3VlRW5jYWJlemFkbz0nbGF0ZXJhbCdcclxuICAgID5cclxuICAgICAgICA8RW5jYWJlemFkb0Rlc3BsaWVndWUgXHJcbiAgICAgICAgICAgIGNhc2lsbGVybz17b3BjaW9uTX0gXHJcbiAgICAgICAgICAgIHZlcklkR3Vpb249e3RydWV9IFxyXG4gICAgICAgICAgICBsZWVyPXtvcGNpb25NLmxlZXIhPT1mYWxzZX0gXHJcbiAgICAgICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa31cclxuICAgICAgICAvPlxyXG4gICAgICAgIDxTaU5vRGVzcGxpZWd1ZSBcclxuICAgICAgICAgICAgY2FzaWxsZXJvQ29uT3BjaW9uZXM9e29wY2lvbk19IFxyXG4gICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9XHJcbiAgICAgICAgICAgIGRlc3BsaWVndWVDb250ZW5pZG89e3Byb3BzLm9wY2lvbk0uZGVzcGxpZWd1ZUNvbnRlbmlkbz8/J2hvcml6b250YWwnfVxyXG4gICAgICAgIC8+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz5cclxufVxyXG5cclxudHlwZSBDYXNpbGxlcm9FbmNhYmV6YWJsZSA9IEZvcm11bGFyaW98QmxvcXVlfEZpbHRyb3xDb25qdW50b1ByZWd1bnRhc3xQcmVndW50YXxPcGNpb25NdWx0aXBsZXxQcmVndW50YVNpbXBsZXxDb25zaXN0ZW5jaWF8VGV4dG9cclxuXHJcbmZ1bmN0aW9uIEVuY2FiZXphZG9EZXNwbGllZ3VlKHByb3BzOntjYXNpbGxlcm86Q2FzaWxsZXJvRW5jYWJlemFibGUsIHZlcklkR3Vpb24/OmJvb2xlYW4sIGxlZXI/OmJvb2xlYW4sIGZvclBrOkZvclBrfSl7XHJcbiAgICB2YXIge2Nhc2lsbGVybywgZm9yUGt9ID0gcHJvcHM7XHJcbiAgICB2YXIgY29uQ2FtcG9PcGNpb25lcyA9IHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT5zdGF0ZS5vcGNpb25lcy5jb25DYW1wb09wY2lvbmVzKVxyXG4gICAgdmFyIGhhbmRsZUNsaWNrQm9ycmFyPSgpPT57XHJcbiAgICAgICAgZGlzcGF0Y2hCeVBhc3MoYWNjaW9uX3JlZ2lzdHJhcl9yZXNwdWVzdGEsIHtyZXNwdWVzdGE6bnVsbCwgdmFyaWFibGU6Y2FzaWxsZXJvLnZhcl9uYW1lIGFzIElkVmFyaWFibGUsIGZvclBrOmZvclBrfSlcclxuICAgIH07XHJcbiAgICB2YXIgdmVyX2lkID0gY2FzaWxsZXJvLnZlcl9pZCA/PyBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgLy8gQHRzLWlnbm9yZSBubyBlc3TDoSBlbiB0b2RvcyBsb3MgY2FzaWxsZXJvcyBwZXJvIGFjw6EgcGFyYSBlbCBkZXNwbGllZ3VlIGRlIG1ldGFkYXRvcyBubyBpbXBvcnRhXHJcbiAgICB2YXIgY2FsY3VsYWRhID0gY2FzaWxsZXJvLmNhbGN1bGFkYTtcclxuICAgIHZhciBpZCA9IGBpZC1kaXYtJHtjYXNpbGxlcm8udmFyX25hbWV8fGNhc2lsbGVyby5jYXNpbGxlcm99YDtcclxuICAgIHZhciBpZEFjY2lvbmVzID0gXCJhY2Npb25lcy1cIitpZDtcclxuICAgIHJldHVybiA8ZGl2IFxyXG4gICAgICAgIGNsYXNzTmFtZT1cImVuY2FiZXphZG9cIiBcclxuICAgICAgICBkZWJlLWxlZXI9e3Byb3BzLmxlZXI/J1NJJzonTk8nfSBcclxuICAgID5cclxuICAgICAgICA8ZGl2IGlkPXtpZH0gY2xhc3NOYW1lPVwiaWQtZGl2XCIgdGl0bGU9e2Ake2Nhc2lsbGVyby5jYXNpbGxlcm99IC0gJHtjYXNpbGxlcm8udmFyX25hbWV9YH1cclxuICAgICAgICAgICAgb25DbGljaz17KCk9PntcclxuICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZEFjY2lvbmVzKTtcclxuICAgICAgICAgICAgICAgIGRpdiEuc2V0QXR0cmlidXRlKFwiYWNjaW9uLXZpc2libGVcIiwgKDEtTnVtYmVyKGRpdiEuZ2V0QXR0cmlidXRlKFwiYWNjaW9uLXZpc2libGVcIikpKS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE8uIFZlciBxdcOpIGhhY2Vtb3MgY3VhbmRvIHNlIHRvY2EgZWwgSUQgZGUgbGEgcHJlZ3V0bmFcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9pZF9wcmVndW50YSwge3ByZWd1bnRhOiBjYXNpbGxlcm8uY2FzaWxsZXJvIGFzIElkUHJlZ3VudGEsIGZvclBrfSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlkXCI+XHJcbiAgICAgICAgICAgICAgICB7dmVyX2lkfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgeyhjYXNpbGxlcm8udGlwb3Zhcj09XCJzaV9ub1wifHxjYXNpbGxlcm8udGlwb3Zhcj09XCJvcGNpb25lc1wiKT88Q2FtcG8gZGlzYWJsZWQ9e2ZhbHNlfSBwcmVndW50YT17Y2FzaWxsZXJvfSBmb3JQaz17Zm9yUGt9IG1pbmk9e3RydWV9IGhpZGRlbj17IWNvbkNhbXBvT3BjaW9uZXMgJiYgJ3F1aXRhcid9Lz46bnVsbH1cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhY2Npb25lcy1wcmVndW50YVwiIGlkPXtpZEFjY2lvbmVzfSBhY2Npb24tdmlzaWJsZT1cIjBcIj5cclxuICAgICAgICAgICAgICAgIHtjYXNpbGxlcm8udmFyX25hbWU/PGRpdj48QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9e1wiYm9ycmFyLXByZWd1bnRhLVwiK2Nhc2lsbGVyby52YXJfbmFtZX1cclxuICAgICAgICAgICAgICAgICAgICBtaS12YXJpYWJsZT17Y2FzaWxsZXJvLnZhcl9uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm90b24tcHJlZ3VudGEtYm9ycmFyXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja0JvcnJhcn1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8SUNPTi5EZWxldGVGb3JldmVyLz5cclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPjwvZGl2PjpudWxsfVxyXG4gICAgICAgICAgICAgICAge2Nhc2lsbGVyby52YXJfbmFtZT88ZGl2PjxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICBpZD17XCJuc25jLXByZWd1bnRhLVwiK2Nhc2lsbGVyby52YXJfbmFtZX1cclxuICAgICAgICAgICAgICAgICAgICBtaS12YXJpYWJsZT17Y2FzaWxsZXJvLnZhcl9uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm90b24tcHJlZ3VudGEtbnNuY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hCeVBhc3MoYWNjaW9uX3JlZ2lzdHJhcl9yZXNwdWVzdGEsIHtyZXNwdWVzdGE6Y2FzaWxsZXJvLnZhbG9yX25zX25jPz8tOSwgdmFyaWFibGU6Y2FzaWxsZXJvLnZhcl9uYW1lIGFzIElkVmFyaWFibGUsIGZvclBrOmZvclBrfSlcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIE5TL05DXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj48L2Rpdj46bnVsbH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub21icmUtZGl2XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9tYnJlXCI+e2JyZWFrZWFibGVUZXh0KGNhc2lsbGVyby5ub21icmUpfTwvZGl2PlxyXG4gICAgICAgICAgICB7Y2FzaWxsZXJvLmFjbGFyYWNpb24/XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFjbGFyYWNpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICB7Y2FzaWxsZXJvLnNhbHRvICYmIGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTyc/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTYWx0b0Rlc3BsaWVndWUgY2FzaWxsZXJvPXtjYXNpbGxlcm99IHByZWZpam89e2JyZWFrZWFibGVUZXh0KGNhc2lsbGVyby5hY2xhcmFjaW9uKX0vPlxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtlYWJsZVRleHQoY2FzaWxsZXJvLmFjbGFyYWNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgOm51bGx9XHJcbiAgICAgICAgICAgIDxkaXYgbG9zLW1ldGFkYXRvcz1cInNpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBlbC1tZXRhZGF0bz1cInZhcmlhYmxlXCI+e2Nhc2lsbGVyby52YXJfbmFtZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7Y2FzaWxsZXJvLnRpcG92YXIgJiYgY2FzaWxsZXJvLnRpcG92YXIhPSdvcGNpb25lcycgJiYgY2FzaWxsZXJvLnRpcG92YXIhPSdzaV9ubyc/XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZWwtbWV0YWRhdG89XCJ0aXBvdmFyXCI+e2Nhc2lsbGVyby50aXBvdmFyfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDpudWxsfVxyXG4gICAgICAgICAgICAgICAgeyAgIC8vQHRzLWlnbm9yZSB1bmEgb3BjacOzbiBtw7psdGlwbGUgbnVuY2EgbG8gYSBhIHNlciwgbm8gdGllbmUgZWwgY2FtcG8sIG5vIGltcG9ydGFcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8ub3B0YXRpdm8/PHNwYW4gZWwtbWV0YWRhdG89XCJvcHRhdGl2YVwiPm9wdGF0aXZhPC9zcGFuPjpudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB7Y2FsY3VsYWRhPzxzcGFuIGVsLW1ldGFkYXRvPVwiY2FsY3VsYWRhXCI+Y2FsY3VsYWRhPC9zcGFuPjpudWxsfVxyXG4gICAgICAgICAgICAgICAge2Nhc2lsbGVyby5kZXNwbGllZ3VlT2N1bHRhPzxzcGFuIGVsLW1ldGFkYXRvPVwib2N1bHRhXCI+b2N1bHRhPC9zcGFuPjpudWxsfVxyXG4gICAgICAgICAgICAgICAge2Nhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyPzxzcGFuIGVsLW1ldGFkYXRvPVwiZXhwcmVzaW9uX2hhYmlsaXRhclwiPmhhYmlsaXRhOiB7Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJ9PC9zcGFuPjpudWxsfVxyXG4gICAgICAgICAgICAgICAgeyAgIC8vQHRzLWlnbm9yZSBhbHR1bm9zIGNhc2lsbGVyb3Mgbm8gdGllbmVuIGVzcGVjaWFsLCBubyBpbXBvcnRhLCBlcyBzb2xvIHBhcmEgcG9uZXIgbG9zIG1ldGFkYXRvc1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyby5lc3BlY2lhbD8uYXV0b2luZz88c3BhbiBlbC1tZXRhZGF0bz1cImV4cHJlc2lvbl9hdXRvaW5nXCI+YXV0b2luZzoge2Nhc2lsbGVyby5lc3BlY2lhbD8uYXV0b2luZ308L3NwYW4+Om51bGxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxufVxyXG5cclxuZnVuY3Rpb24gRGVzcGxlZ2FyQ29uZmlybWFyQm9ycmFyUmVzcHVlc3RhKHByb3BzOntmb3JQazpGb3JQaywgdmFyaWFibGVCb3JyYXI6SWRWYXJpYWJsZX0pe1xyXG4gICAgdmFyIFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKCEhcHJvcHMudmFyaWFibGVCb3JyYXIpXHJcbiAgICB2YXIgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgZGlzcGF0Y2goZGlzcGF0Y2hlcnMuQ09ORklSTUFSX0JPUlJBUl9SRVNQVUVTVEEoe2ZvclBrOnByb3BzLmZvclBrLCB2YXJpYWJsZTpudWxsfSkpO1xyXG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDxQb3BvdmVyXHJcbiAgICAgICAgICAgIGlkPXtcInBvcG92ZXItY29uZmlybWFyXCJ9XHJcbiAgICAgICAgICAgIG9wZW49e29wZW59XHJcbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlfVxyXG4gICAgICAgICAgICBhbmNob3JPcmlnaW49e3tcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW49e3tcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAndG9wJyxcclxuICAgICAgICAgICAgICAgIGhvcml6b250YWw6ICdsZWZ0JyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICA+ICAgXHJcbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5PkxhIHByZWd1bnRhIHRpZW5lIHJlZ2lzdHJhZGEgdW5hIHJlc3B1ZXN0YSBxdWUgbm8gZnVlIGRldGVjdGFkYSBjb21vIGVycsOzbmVhPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbmZpcm1hLWJvdG9uZXNcIj5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24gY29sb3I9XCJzZWNvbmRhcnlcIiB2YXJpYW50PVwib3V0bGluZWRcIiBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHByb3BzLnZhcmlhYmxlQm9ycmFyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hCeVBhc3MoYWNjaW9uX3JlZ2lzdHJhcl9yZXNwdWVzdGEsIHtmb3JQazpwcm9wcy5mb3JQaywgdmFyaWFibGU6cHJvcHMudmFyaWFibGVCb3JyYXIsIHJlc3B1ZXN0YTpudWxsfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIH19PmJvcnJhciByZXNwdWVzdGE8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdmFyaWFudD1cIm91dGxpbmVkXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9PnZvbHZlciBzaW4gYm9ycmFyPC9CdXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvUG9wb3Zlcj47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGN1bGFyTnVlc3RyYUxvbmdpdHVkKGxvbmdpdHVkOnN0cmluZyB8bnVsbCl7XHJcbiAgICByZXR1cm4gbG9uZ2l0dWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZm9jYXJFbGVtZW50b0RlVmFyaWFibGUoc2lndWllbnRlVmFyaWFibGU6SWRWYXJpYWJsZXxJZEZpbil7XHJcbiAgICBkZWJlU2FsdGFyID0gZmFsc2U7XHJcbiAgICB2YXIge3RvcCwgZW5mb2NhZG8sIGVsZW1lbnRvSW5wdXRWYXJpYWJsZX0gPSBjYWxjdWxhckVsZW1lbnRvRW5mb2NhZG8oc2lndWllbnRlVmFyaWFibGUpO1xyXG4gICAgaWYodG9wICE9IG51bGwgJiYgdG9wPjAgJiYgIWVuZm9jYWRvKXtcclxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oe3RvcCwgbGVmdDowLCBiZWhhdmlvcjonc21vb3RoJ30pO1xyXG4gICAgfVxyXG4gICAgZWxlbWVudG9JbnB1dFZhcmlhYmxlPy5mb2N1cygpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBDYW1wbyhwcm9wczp7ZGlzYWJsZWQ6Ym9vbGVhbiwgcHJlZ3VudGE6UHJlZ3VudGFTaW1wbGV8UHJlZ3VudGFDb25PcGNpb25lc3xQcmVndW50YUNvblNpTm98T3BjaW9uTXVsdGlwbGUsIGZvclBrOkZvclBrLCBtaW5pPzpib29sZWFuLCBoaWRkZW4/OmJvb2xlYW58J3F1aXRhcid9KXtcclxuICAgIHZhciB7cHJlZ3VudGEsIGRpc2FibGVkLCBtaW5pIH0gPSBwcm9wcztcclxuICAgIHZhciB7c2FsdG9BdXRvbWF0aWNvLCBjb25DYW1wb09wY2lvbmVzfSA9IHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT5zdGF0ZS5vcGNpb25lcyk7XHJcbiAgICBjb25zdCBsb25naXR1ZCA9IG1pbmkgPyBwcmVndW50YS5jYXNpbGxlcm9zLnJlZHVjZSgoYWN1bSwgbyk9Pk1hdGgubWF4KG8uY2FzaWxsZXJvLnRvU3RyaW5nKCkubGVuZ3RoLCBhY3VtKSwgMCkgOiBcclxuICAgICAgICAvLyBAdHMtaWdub3JlIG1pbmkgZXMgcGFyYSBsb3Mgb3Ryb3NcclxuICAgICAgICBwcmVndW50YS5sb25naXR1ZDtcclxuICAgIC8vIHZhciBbdmFsb3IsIHNldFZhbG9yXSA9IHVzZVN0YXRlKHByb3BzLnZhbG9yKTtcclxuICAgIHZhciBbZWRpdGFuZG8sIHNldEVkaXRhbmRvXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIC8vIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAvLyAgICAgc2V0VmFsb3IocHJvcHMudmFsb3IpXHJcbiAgICAvLyB9LCBbcHJvcHMudmFsb3JdKTtcclxuICAgIGNvbnN0IGlucHV0UHJvcHMgPSB7XHJcbiAgICAgICAgbWF4TGVuZ3RoOiBsb25naXR1ZCxcclxuICAgIH07XHJcbiAgICBjb25zdCBvbkNoYW5nZT0obnVldm9WYWxvcjpWYWxvcnx0eXBlb2YgTk9fQ0FNQklBUl9fVkVSSUZJQ0FSX1NJX0VTX05FQ0VTQVJJTyk9PntcclxuICAgICAgICB2YXIge3NpZ3VpZW50ZVZhcmlhYmxlfSA9IGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9yZWdpc3RyYXJfcmVzcHVlc3RhLCB7Zm9yUGs6cHJvcHMuZm9yUGssIHZhcmlhYmxlOnByZWd1bnRhLnZhcl9uYW1lLCByZXNwdWVzdGE6bnVldm9WYWxvcn0pO1xyXG4gICAgICAgIGlmKHNpZ3VpZW50ZVZhcmlhYmxlICYmIGRlYmVTYWx0YXIpe1xyXG4gICAgICAgICAgICBlbmZvY2FyRWxlbWVudG9EZVZhcmlhYmxlKHNpZ3VpZW50ZVZhcmlhYmxlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdmFyIG51ZXN0cmFMb25naXR1ZCA9IGNhbGN1bGFyTnVlc3RyYUxvbmdpdHVkKGxvbmdpdHVkKVxyXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiY2FtcG9cIiBudWVzdHJhLWxvbmdpdHVkPXtudWVzdHJhTG9uZ2l0dWR9IHN0eWxlPXtwcm9wcy5oaWRkZW49PSdxdWl0YXInP3tkaXNwbGF5Oidub25lJ306cHJvcHMuaGlkZGVuP3t2aXNpYmlsaXR5OidoaWRkZW4nfTp1bmRlZmluZWR9PlxyXG4gICAgICAgIHttaW5pP251bGw6PEJvdG9uQm9ycmFyXHJcbiAgICAgICAgICAgIGlkPXtgYm9ycmFyLWFiaWVydGEtJHtwcmVndW50YS52YXJfbmFtZX1gfVxyXG4gICAgICAgICAgICB2YXJpYWJsZT17cHJlZ3VudGEudmFyX25hbWV9XHJcbiAgICAgICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa31cclxuICAgICAgICAvPn1cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlucHV0LWNhbXBvXCI+XHJcbiAgICAgICAgICAgIDxUZXh0RmllbGQgXHJcbiAgICAgICAgICAgICAgICBpZD17YHZhci0ke3ByZWd1bnRhLnZhcl9uYW1lfWB9XHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ2YXJpYWJsZVwiIFxyXG4gICAgICAgICAgICAgICAgLy92YXItbGVuZ3RoPXtwcmVndW50YS5sb25naXR1ZH0gXHJcbiAgICAgICAgICAgICAgICBmdWxsV2lkdGg9e3RydWV9XHJcbiAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXtpbnB1dFByb3BzfVxyXG4gICAgICAgICAgICAgICAgdHlwZT17cHJlZ3VudGEuZGVzcGxpZWd1ZVRpcG9JbnB1dD8/YWRhcHRhclRpcG9WYXJDYXNpbGxlcm8ocHJlZ3VudGEudGlwb3Zhcil9XHJcbiAgICAgICAgICAgICAgICBvbktleURvd249eyhldmVudDpLZXlib2FyZEV2ZW50KT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlc0VudGVyID0gKGV2ZW50LmtleSA9PSAnRW50ZXInIHx8IGV2ZW50LmtleUNvZGUgPT0gMTMpXHJcbiAgICAgICAgICAgICAgICAgICAgZGViZVNhbHRhciA9IGVzRW50ZXIgJiYgKHNhbHRvQXV0b21hdGljbyB8fCBjb25DYW1wb09wY2lvbmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihlc0VudGVyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LmJsdXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBvbkZvY3VzPXsoX2V2ZW50KT0+c2V0RWRpdGFuZG8odHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICBvbkJsdXI9eyhldmVudCwgdmFsb3IpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQ/LmdldEF0dHJpYnV0ZSgnYm90b24tY29uZmlybWFyJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJlU2FsdGFyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UodmFsb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldEVkaXRhbmRvKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7ZGlzYWJsZWQgfHwgbWluaT9udWxsOlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvdG9uLWNvbmZpcm1hci1jYW1wb1wiPlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PXtlZGl0YW5kbz9cImNvbnRhaW5lZFwiOidvdXRsaW5lZCd9IHNpemU9XCJzbWFsbFwiIGNvbG9yPXtlZGl0YW5kbz8ncHJpbWFyeSc6J2RlZmF1bHQnfVxyXG4gICAgICAgICAgICAgICAgICAgIGJvdG9uLWNvbmZpcm1hcj17cHJlZ3VudGEudmFyX25hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKE5PX0NBTUJJQVJfX1ZFUklGSUNBUl9TSV9FU19ORUNFU0FSSU8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0YW5kbyhmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPjxJQ09OLkNoZWNrLz48L0J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbn1cclxuXHJcbmludGVyZmFjZSBJY2FzaWxsZXJvQ29uT3BjaW9uZXN7XHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlLFxyXG4gICAgY2FzaWxsZXJvczpPcGNpb25bXVxyXG59XHJcblxyXG5mdW5jdGlvbiBPcGNpb25lc0Rlc3BsaWVndWUoXHJcbiAgICB7Y2FzaWxsZXJvQ29uT3BjaW9uZXMsIGZvclBrLCAgbGVlciwgZGVzcGxpZWd1ZUNvbnRlbmlkb306XHJcbiAgICB7Y2FzaWxsZXJvQ29uT3BjaW9uZXM6SWNhc2lsbGVyb0Nvbk9wY2lvbmVzLCBmb3JQazpGb3JQaywgbGVlcjpib29sZWFuLCBkZXNwbGllZ3VlQ29udGVuaWRvOid2ZXJ0aWNhbCd8J2hvcml6b250YWwnfVxyXG4pe1xyXG4gICAgY29uc3QgZGVzcGxlZ2FyT3Ryb3MgPSAob3BjaW9uOk9wY2lvbiwgc29sb1BhcmFEZXNwbGllZ3VlOid2ZXJ0aWNhbCd8J2hvcml6b250YWwnfG51bGwpID0+IG9wY2lvbi5jYXNpbGxlcm9zLm1hcCgoc3ViUHJlZ3VudGE6UHJlZ3VudGEpPT4oXHJcbiAgICAgICAgc29sb1BhcmFEZXNwbGllZ3VlID09IG51bGwgfHwgc29sb1BhcmFEZXNwbGllZ3VlID09IHN1YlByZWd1bnRhLmRlc3BsaWVndWVDb250ZW5pZG8gP1xyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3Ryb3MtZXNwZWNpZmljYXJcIiBrZXk9e3N1YlByZWd1bnRhLmlkX2Nhc2lsbGVyb30+XHJcbiAgICAgICAgICAgIDxQcmVndW50YURlc3BsaWVndWUgXHJcbiAgICAgICAgICAgICAgICBwcmVndW50YT17c3ViUHJlZ3VudGF9IFxyXG4gICAgICAgICAgICAgICAgZm9yUGs9e2ZvclBrfSBcclxuICAgICAgICAgICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvPSdzdXBlcmlvcidcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj46bnVsbFxyXG4gICAgKSlcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbmlkb1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm9wY2lvbmVzXCIgZGVzcGxpZWd1ZS1jb250ZW5pZG89e2Rlc3BsaWVndWVDb250ZW5pZG8/Pyd2ZXJ0aWNhbCd9PlxyXG4gICAgICAgICAgICB7Y2FzaWxsZXJvQ29uT3BjaW9uZXMuY2FzaWxsZXJvcy5tYXAoKG9wY2lvbjpPcGNpb24sIGk6bnVtYmVyKT0+XHJcbiAgICAgICAgICAgICAgICA8R3JpZCBrZXk9e29wY2lvbi5pZF9jYXNpbGxlcm99IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBvY3VsdGFyLXNhbHRlYWRhPXtvcGNpb24uZGVzcGxpZWd1ZU9jdWx0YT8ob3BjaW9uLmV4cHJlc2lvbl9oYWJpbGl0YXJfanM/J0lOSEFCSUxJVEFSJzonU0knKTonTk8nfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxPcGNpb25EZXNwbGllZ3VlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm89e29wY2lvbn0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlPXtjYXNpbGxlcm9Db25PcGNpb25lcy52YXJfbmFtZX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbG9yT3BjaW9uPXtvcGNpb24uY2FzaWxsZXJvfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JQaz17Zm9yUGt9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWVyPXtsZWVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25Cb3RvbkJvcnJhcj17aT09MCB8fCBkZXNwbGllZ3VlQ29udGVuaWRvIT0naG9yaXpvbnRhbCd9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICB7ZGVzcGxpZWd1ZUNvbnRlbmlkbz09J2hvcml6b250YWwnP251bGw6ZGVzcGxlZ2FyT3Ryb3Mob3BjaW9uLG51bGwpfVxyXG4gICAgICAgICAgICAgICAgPC9HcmlkPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtkZXNwbGllZ3VlQ29udGVuaWRvPT0naG9yaXpvbnRhbCc/Y2FzaWxsZXJvQ29uT3BjaW9uZXMuY2FzaWxsZXJvcy5tYXAoKG9wY2lvbjpPcGNpb24pPT5cclxuICAgICAgICAgICAgZGVzcGxlZ2FyT3Ryb3Mob3BjaW9uLG51bGwpXHJcbiAgICAgICAgKTpudWxsfVxyXG4gICAgPC9kaXY+XHJcbn1cclxuXHJcbmNvbnN0IG5vbWJyZUNhc2lsbGVybz17XHJcbiAgICBGOiAnZm9ybXVsYXJpbycsXHJcbiAgICBCOiAnYmxvcXVlJyxcclxuICAgIFA6ICdwcmVndW50YScsXHJcbiAgICBDUDogJ2Nvbmp1bnRvcHJlZ3VudGFzJyxcclxuICAgIE86ICdvcGNpb24nLFxyXG4gICAgT006ICdtdWx0aXBsZScsXHJcbiAgICBGSUxUUk86ICdmaWx0cm8nLFxyXG4gICAgQ09OUzogJ2NvbnNpc3RlbmNpYScsXHJcbiAgICBCRjogJ2JvdG9uZm9ybXVsYXJpbycsXHJcbiAgICBURVhUTzogJ2FjbGFyYWNpb25zdXBlcmlvcicsXHJcbn1cclxuXHJcbmZ1bmN0aW9uIERlc3BsZWdhckNhc2lsbGVybyhwcm9wczp7XHJcbiAgICBjYXNpbGxlcm86UHJlZ3VudGF8QmxvcXVlfEZpbHRyb3xDb25qdW50b1ByZWd1bnRhc3xCb3RvbkZvcm11bGFyaW98Q29uc2lzdGVuY2lhfE9wY2lvbk11bHRpcGxlfFRleHRvLFxyXG4gICAgaWQ/OnN0cmluZyxcclxuICAgIHN0eWxlPzpSZWFjdC5DU1NQcm9wZXJ0aWVzLFxyXG4gICAgZGVzcGxpZWd1ZUVuY2FiZXphZG8/OidsYXRlcmFsJ3wnc3VwZXJpb3InXHJcbiAgICBjaGlsZHJlbjpSZWFjdC5SZWFjdE5vZGV8RWxlbWVudFtdLFxyXG4gICAgXCJvY3VsdGFyLXNhbHRlYWRhXCI/OmJvb2xlYW5cclxufSl7XHJcbiAgICByZXR1cm4gPGRpdiBcclxuICAgICAgICBrZXk9e2Ake3Byb3BzLmNhc2lsbGVyby50aXBvY30tJHtwcm9wcy5pZHx8cHJvcHMuY2FzaWxsZXJvLmlkX2Nhc2lsbGVyb31gfVxyXG4gICAgICAgIGNsYXNzTmFtZT17YGNhc2lsbGVybyAke25vbWJyZUNhc2lsbGVyb1twcm9wcy5jYXNpbGxlcm8udGlwb2NdfWB9XHJcbiAgICAgICAgaWQ9e3Byb3BzLmlkfVxyXG4gICAgICAgIHN0eWxlPXtwcm9wcy5zdHlsZX1cclxuICAgICAgICBkZXNwbGllZ3VlLWVuY2FiZXphZG89e3Byb3BzLmNhc2lsbGVyby5kZXNwbGllZ3VlRW5jYWJlemFkbz8/cHJvcHMuZGVzcGxpZWd1ZUVuY2FiZXphZG8/PydzdXBlcmlvcid9XHJcbiAgICAgICAgb2N1bHRhci1zYWx0ZWFkYT17cHJvcHNbXCJvY3VsdGFyLXNhbHRlYWRhXCJdfVxyXG4gICAgPntwcm9wcy5jaGlsZHJlbn08L2Rpdj5cclxufVxyXG5cclxuZnVuY3Rpb24gUHJlZ3VudGFEZXNwbGllZ3VlKHByb3BzOntcclxuICAgIHByZWd1bnRhOlByZWd1bnRhLCBcclxuICAgIGZvclBrOkZvclBrLCBcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOidsYXRlcmFsJ3wnc3VwZXJpb3InXHJcbn0pe1xyXG4gICAgdmFyIHtwcmVndW50YX0gPSBwcm9wcztcclxuICAgIHZhciBkaXNwYXRjaD11c2VEaXNwYXRjaCgpO1xyXG4gICAgdmFyIGVzdGFkbzpFc3RhZG9WYXJpYWJsZTtcclxuICAgIHZhciBpZCA9IGBwcmVndW50YS0ke3ByZWd1bnRhLmlkX2Nhc2lsbGVyb31gXHJcbiAgICByZWdpc3RyYXJFbGVtZW50byh7XHJcbiAgICAgICAgaWQsIFxyXG4gICAgICAgIGRpcmVjdDp0cnVlLCBcclxuICAgICAgICBmdW46IHJlZ2lzdHJhZG9yRGVWYXJpYWJsZShwcmVndW50YSlcclxuICAgIH0pXHJcbiAgICByZXR1cm4gPERlc3BsZWdhckNhc2lsbGVyb1xyXG4gICAgICAgIGlkPXtpZH1cclxuICAgICAgICBjYXNpbGxlcm89e3ByZWd1bnRhfVxyXG4gICAgICAgIG51ZXN0cm8tdGlwb3Zhcj17cHJlZ3VudGEudGlwb3Zhcnx8XCJtdWx0aXBsZVwifSBcclxuICAgICAgICBvY3VsdGFyLXNhbHRlYWRhPXtwcmVndW50YS5kZXNwbGllZ3VlT2N1bHRhPyhwcmVndW50YS5leHByZXNpb25faGFiaWxpdGFyX2pzPydJTkhBQklMSVRBUic6J1NJJyk6J05PJ31cclxuICAgICAgICBkZXNwbGllZ3VlRW5jYWJlemFkbz17cHJvcHMuZGVzcGxpZWd1ZUVuY2FiZXphZG99XHJcbiAgICA+XHJcbiAgICAgICAgPEVuY2FiZXphZG9EZXNwbGllZ3VlIFxyXG4gICAgICAgICAgICBjYXNpbGxlcm89e3ByZWd1bnRhfSBcclxuICAgICAgICAgICAgbGVlcj17cHJlZ3VudGEubGVlciE9PWZhbHNlfSAgXHJcbiAgICAgICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa31cclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVuaWRvXCI+e1xyXG4gICAgICAgICAgICBwcmVndW50YS50aXBvdmFyPT1cInNpX25vXCI/PEdyaWQgY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPFNpTm9EZXNwbGllZ3VlIFxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb0Nvbk9wY2lvbmVzPXtwcmVndW50YX0gXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfSBcclxuICAgICAgICAgICAgICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvPXtwcm9wcy5wcmVndW50YS5kZXNwbGllZ3VlQ29udGVuaWRvPz8ndmVydGljYWwnfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9HcmlkPjpcclxuICAgICAgICAgICAgcHJlZ3VudGEudGlwb3Zhcj09XCJvcGNpb25lc1wiID9cclxuICAgICAgICAgICAgICAgIDxPcGNpb25lc0Rlc3BsaWVndWUgXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvQ29uT3BjaW9uZXM9e3ByZWd1bnRhfSBcclxuICAgICAgICAgICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9IFxyXG4gICAgICAgICAgICAgICAgICAgIGxlZXI9eyEhcHJlZ3VudGEubGVlcn1cclxuICAgICAgICAgICAgICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvPXtwcmVndW50YS5kZXNwbGllZ3VlQ29udGVuaWRvPz8ndmVydGljYWwnfVxyXG4gICAgICAgICAgICAgICAgLz46XHJcbiAgICAgICAgICAgIHByZWd1bnRhLnRpcG92YXI9PW51bGw/XHJcbiAgICAgICAgICAgICAgICAocHJlZ3VudGEuY2FzaWxsZXJvcyBhcyAoT3BjaW9uTXVsdGlwbGV8Q29uc2lzdGVuY2lhKVtdKS5tYXAoKG9wY2lvbk11bHRpcGxlKT0+XHJcbiAgICAgICAgICAgICAgICAgICAgb3BjaW9uTXVsdGlwbGUudGlwb2M9PSdPTSc/ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8T3BjaW9uTXVsdGlwbGVEZXNwbGllZ3VlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wY2lvbk11bHRpcGxlLmlkX2Nhc2lsbGVyb30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNpb25NPXtvcGNpb25NdWx0aXBsZX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDogLy9sYXMgY29uc2lzdGVuY2lhcyBwdWVkZW4gc2VyIGhlcm1hbmFzIGRlIE9NXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb25zaXN0ZW5jaWFEZXNwbGllZ3VlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wY2lvbk11bHRpcGxlLmlkX2Nhc2lsbGVyb31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2lsbGVybz17b3BjaW9uTXVsdGlwbGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+ICAgIFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICgocHJlZ3VudGFTaW1wbGU6UHJlZ3VudGFTaW1wbGUpPT5cclxuICAgICAgICAgICAgICAgIDxDYW1wb1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcmVndW50YVNpbXBsZS5jYWxjdWxhZGE/dHJ1ZTpmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICBwcmVndW50YT17cHJlZ3VudGFTaW1wbGV9XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKShwcmVndW50YSlcclxuICAgICAgICB9PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwaWUtcHJlZ3VudGFcIj5cclxuICAgICAgICAgICAgPFNhbHRvRGVzcGxpZWd1ZSBcclxuICAgICAgICAgICAgICAgIGNhc2lsbGVybz17cHJlZ3VudGF9XHJcbiAgICAgICAgICAgICAgICBwcmVmaWpvPXtwcmVndW50YS50aXBvdmFyPT1cIm9wY2lvbmVzXCI/KFxyXG4gICAgICAgICAgICAgICAgICAgIHByZWd1bnRhLmNhc2lsbGVyb3Muc29tZShvcGNpb249Pm9wY2lvbi5zYWx0byk/XCJyZXN0byBkZSBsYXMgb3BjaW9uZXNcIjpcInRvZGFzIGxhcyBvcGNpb25lc1wiXHJcbiAgICAgICAgICAgICAgICApOlwiXCJ9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz5cclxufVxyXG5cclxudmFyIGNhbGN1bGFyRGlzYWJsZWRCRkFncmVnYXJMaXN0byA9IChjb25maWdTb3J0ZW9Gb3JtdWxhcmlvOkNvbmZpZ3VyYWNpb25Tb3J0ZW9Gb3JtdWxhcmlvfG51bGwsIGZvcm11bGFyaW86SWRGb3JtdWxhcmlvKT0+XHJcbiAgICAhIShjb25maWdTb3J0ZW9Gb3JtdWxhcmlvICYmIGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8uaWRfZm9ybXVsYXJpb19pbmRpdmlkdWFsID09IGZvcm11bGFyaW8pXHJcblxyXG5mdW5jdGlvbiBib3RvbmVzRGVsRm9ybXVsYXJpbyhyOlJlc3B1ZXN0YXMsIHVuaWRhZF9hbmFsaXNpczpJZFVuaWRhZEFuYWxpc2lzLCBlc3RydWN0dXJhOkVzdHJ1Y3R1cmEsIGZvclBrUGFkcmU6Rm9yUGssIGZlZWRiYWNrQWxsOntbZm9ybXVsYXJpbyBpbiBQbGFpbkZvclBrXTpGb3JtU3RydWN0dXJlU3RhdGU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPn0pOkh0bWxUYWc8SFRNTERpdkVsZW1lbnQ+e1xyXG4gICAgdmFyIGZvcm1zVml2aWVuZGEgPSBnZXRGb3JtdWxhcmlvc0ZvcklkVml2aWVuZGEoZm9yUGtQYWRyZS52aXZpZW5kYSEpO1xyXG4gICAgdmFyIHVhRGVmID0gZXN0cnVjdHVyYS51bmlkYWRlc19hbmFsaXNpc1t1bmlkYWRfYW5hbGlzaXNdO1xyXG4gICAgdmFyIGFycmF5RXN0cnVjdHVyYUZvcm11bGFyaW9zID0gKGxpa2VBcihlc3RydWN0dXJhLmZvcm11bGFyaW9zKSkuYXJyYXkoKTtcclxuICAgIHZhciB4ID0gbGlrZUFyKHVhRGVmLmhpamFzKS5maWx0ZXIodWFIaWphPT5cclxuICAgICAgICAgICAgZm9ybXNWaXZpZW5kYS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgIGFycmF5RXN0cnVjdHVyYUZvcm11bGFyaW9zLmZpbmQoKGluZm9Gb3JtdWxhcmlvKT0+XHJcbiAgICAgICAgICAgICAgICAgICAgaW5mb0Zvcm11bGFyaW8uY2FzaWxsZXJvcy51bmlkYWRfYW5hbGlzaXMgPT0gdWFIaWphPy51bmlkYWRfYW5hbGlzaXMpXHJcbiAgICAgICAgICAgICAgICA/LmNhc2lsbGVyb3MuaWRfY2FzaWxsZXJvIGFzIElkRm9ybXVsYXJpb1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKS5tYXAodWFIaWphPT4oXHJcbiAgICAgICAgdWFIaWphID09IG51bGwgPyBudWxsIDpcclxuICAgICAgICBodG1sLmRpdih7Y2xhc3M6J3VhLWhpamFzJ30sW1xyXG4gICAgICAgICAgICBodG1sLmRpdih1YUhpamEudW5pZGFkX2FuYWxpc2lzKSxcclxuICAgICAgICAgICAgaHRtbC5kaXYoXHJcbiAgICAgICAgICAgICAgICBsaWtlQXIoclt1YUhpamEudW5pZGFkX2FuYWxpc2lzXXx8W10pLm1hcCgocmVzcHVlc3Rhc0hpamEsIGkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG51bSA9IE51bWJlcihpKSsxXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvclBrSGlqYVBhcmNpYWwgPSB7Li4uZm9yUGtQYWRyZSwgW3VhSGlqYS5wa19hZ3JlZ2FkYV06IG51bX07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8gPSBlc3RydWN0dXJhLmNvbmZpZ1NvcnRlbz9lc3RydWN0dXJhLmNvbmZpZ1NvcnRlb1tnZXRNYWluRm9ybUZvclZpdmllbmRhKGZvclBrUGFkcmUudml2aWVuZGEhKV06bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBodG1sLmRpdih7Y2xhc3M6J251bWVyYWRvci11YSd9LCBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonYm90b25lcy11YSd9LFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonbnVtZXJvLXVhJ30sbnVtLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGlrZUFyKGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZvcm1EZWY9PmZvcm1EZWYuY2FzaWxsZXJvcy51bmlkYWRfYW5hbGlzaXMgPT0gdWFIaWphLnVuaWRhZF9hbmFsaXNpcyApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChfZm9ybURlZiwgZm9ybXVsYXJpbyk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9yUGsgPSB7Li4uZm9yUGtIaWphUGFyY2lhbCwgZm9ybXVsYXJpb307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWRiYWNrRm9ybSA9IGZlZWRiYWNrQWxsW3RvUGxhaW5Gb3JQayhmb3JQayldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZWVkYmFja0Zvcm0gPyBodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0bWwuYnV0dG9uKCh1YUhpamEhKS5wa19hZ3JlZ2FkYStcIiBvazogXCIrKE51bWJlcihpKSsxKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uRm9ybXVsYXJpb0NvblJlc3VtZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yUGssIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiB0cnVlIHx8IGNhbGN1bGFyQWN0dWFsQkYoY29uZmlnU29ydGVvRm9ybXVsYXJpbywgbnVtLCBudWxsLCBmb3JtdWxhcmlvLCByKSwgLy9SRVZJU0FSIHRydWUgcGFyYSBxdWUgbm8gc2UgZ3Jpc2VuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOmZhbHNlLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8sIG51bSwgZm9ybXVsYXJpbywgcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkYmFja0Zvcm0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXNwbGllZ3VlT2N1bHRhOmZhbHNlLCBleHByZXNpb25faGFiaWxpdGFyX2pzOicnLCBub21icmU6Zm9ybXVsYXJpbywgYWNsYXJhY2lvbjpudWxsLCBzYWx0bzpmb3JtdWxhcmlvfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvclBrUGFkcmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJvdG9uLWlyLXJlc3VtZW4tZm9ybXVsYXJpb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1tmb3JtdWxhcmlvXS5jYXNpbGxlcm9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmFycmF5KCkubWFwKHg9PnggPT0gbnVsbCA/IG51bGwgOiB4KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLGJvdG9uZXNEZWxGb3JtdWxhcmlvKHJlc3B1ZXN0YXNIaWphLCB1YUhpamEudW5pZGFkX2FuYWxpc2lzLCBlc3RydWN0dXJhLCBmb3JQa0hpamFQYXJjaWFsLCBmZWVkYmFja0FsbClcclxuICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgfSkuYXJyYXkoKS5tYXAoeD0+eCA9PSBudWxsID8gbnVsbCA6IHgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgKSkuYXJyYXkoKS5tYXAoeD0+eCA9PSBudWxsID8gbnVsbCA6IHgpO1xyXG4gICAgcmV0dXJuIGh0bWwuZGl2KC8qe3N0eWxlOidkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdyd9LCoveCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFRleHRvRGVzcGxpZWd1ZShwcm9wczp7Y2FzaWxsZXJvOlRleHRvLCBmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIHtjYXNpbGxlcm8sIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIHZhciBoYWJpbGl0YWRvciA9IGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzP2dldEZ1bmNpb25IYWJpbGl0YXIoY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMpOigpPT50cnVlO1xyXG4gICAgdmFyIHttb2RvRGVzcGxpZWd1ZX0gPSB1c2VTZWxlY3RvclZpdmllbmRhKGZvclBrKTtcclxuICAgIHZhciBpZCA9IGB0ZXh0by0ke2Nhc2lsbGVyby5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtpZCwgc3R5bGU6J2Rpc3BsYXknLCBmdW46KHI6UmVzcHVlc3Rhcyk9PmhhYmlsaXRhZG9yKHIpIHx8IG1vZG9EZXNwbGllZ3VlPT0nbWV0YWRhdG9zJz8nYmxvY2snOidub25lJ30pXHJcbiAgICB2YXIgZXNSZXN1bWVuRm9ybXVsYXJpbyA9IGNhc2lsbGVyby5jYXNpbGxlcm89PSdSZXNGb3InIGFzIElkQ2FzaWxsZXJvOyAvLyBUT0RPOiBDYW1iaWEgZXN0byBxdWUgZXN0w6EgamFyY29kZWFkby5cclxuICAgIGlmKGVzUmVzdW1lbkZvcm11bGFyaW8pe1xyXG4gICAgICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtpZCwgZGlyZWN0OnRydWUsIFxyXG4gICAgICAgICAgICBmdW46KFxyXG4gICAgICAgICAgICAgICAgcjpSZXNwdWVzdGFzLCBcclxuICAgICAgICAgICAgICAgIF9mZWVkYmFja0Zvcm06IEZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+LCBcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRvOkhUTUxEaXZFbGVtZW50LCBcclxuICAgICAgICAgICAgICAgIGZlZWRiYWNrQWxsOntbZm9ybXVsYXJpbyBpbiBQbGFpbkZvclBrXTpGb3JtU3RydWN0dXJlU3RhdGU8SWRWYXJpYWJsZSxWYWxvciwgSWRGaW4+fSwgXHJcbiAgICAgICAgICAgICAgICBlc3RydWN0dXJhOkVzdHJ1Y3R1cmFcclxuICAgICAgICAgICAgKT0+e1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudG8uc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBsYXMgcmVzcHVlc3RhcyBzb24gcmVzcHVlc3Rhc1JhaXogcG9ycXVlIFJlc0ZvciBlc3TDoSBlbiBlbCBmb3JtIHBwYWxcclxuICAgICAgICAgICAgICAgIGlmKHJbJ3Jlc3VtZW5Fc3RhZG8nXSBhcyBSZXN1bWVuRXN0YWRvID09ICd2YWNpbycpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvLnRleHRDb250ZW50ID0gXCJyZWxldmFtaWVudG8gc2luIGVtcGV6YXJcIjtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvLnRleHRDb250ZW50ID0gXCJyZWxldmFtaWVudG8gZW1wZXphZG9cIjtcclxuICAgICAgICAgICAgICAgICAgICB2YXIge3VuaWRhZF9hbmFsaXNpc30gPSBlc3RydWN0dXJhLmZvcm11bGFyaW9zW2ZvclBrLmZvcm11bGFyaW9dLmNhc2lsbGVyb3M7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG8uaW5uZXJIVE1MPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG8uYXBwZW5kQ2hpbGQoYm90b25lc0RlbEZvcm11bGFyaW8ociwgdW5pZGFkX2FuYWxpc2lzLCBlc3RydWN0dXJhLCBmb3JQaywgZmVlZGJhY2tBbGwpLmNyZWF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB2YXIgaXIgPSAoZGVmQm90b246RGVmaW5pY2lvbkZvcm11bGFyaW9BYnJpcik9PntcclxuICAgICAgICAvLyB2YXIgbnVldmFGb3JQaz17Li4uZm9yUGssIGZvcm11bGFyaW86aWRGb3JtdWxhcmlvRGVzdGlub307XHJcbiAgICAgICAgLy8gbnVldmFGb3JQa1tudWV2b0NhbXBvUGtdID0gZGVmQm90b24ubnVtXHJcbiAgICAgICAgZGlzcGF0Y2goZGlzcGF0Y2hlcnMuQ0FNQklBUl9GT1JNVUxBUklPKHtmb3JQazpkZWZCb3Rvbi5mb3JQaywgYXBpbGFyVnVlbHRhOnRydWV9KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gPERlc3BsZWdhckNhc2lsbGVybyBcclxuICAgICAgICBpZD17YCR7aWR9LWV4dGVybm9gfVxyXG4gICAgICAgIGNhc2lsbGVybz17Y2FzaWxsZXJvfVxyXG4gICAgPlxyXG4gICAgICAgIDxFbmNhYmV6YWRvRGVzcGxpZWd1ZSBjYXNpbGxlcm89e2Nhc2lsbGVyb30gbGVlcj17ZmFsc2V9IGZvclBrPXtmb3JQa30vPlxyXG4gICAgICAgIDxkaXYgaWQ9e2lkfSBzdHlsZT17e2Rpc3BsYXk6J25vbmUnfX0+PC9kaXY+XHJcbiAgICAgICAge2VzUmVzdW1lbkZvcm11bGFyaW8/XHJcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJzcGVjaWFsLWJ1dHRvblwiIGlkPVwiYm90b24taXItcmVzdW1lbi1mb3JtdWxhcmlvXCIgc3R5bGU9e3tkaXNwbGF5Oidub25lJ319XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhldmVudCk9PntcclxuICAgICAgICAgICAgICAgIGlyKEpTT04ucGFyc2UoKGV2ZW50LnRhcmdldCEgYXMgdW5rbm93biBhcyBIVE1MQnV0dG9uRWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkZWYtYnV0dG9uJykhKSlcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICA+aXIgKGludGVybm8pPC9CdXR0b24+XHJcbiAgICAgICAgOm51bGx9XHJcblxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIEZpbHRyb0Rlc3BsaWVndWUocHJvcHM6e2ZpbHRybzpGaWx0cm8sIGZvclBrOkZvclBrfSl7XHJcbiAgICB2YXIge2ZpbHRyb30gPSBwcm9wcztcclxuICAgIHJldHVybiA8RGVzcGxlZ2FyQ2FzaWxsZXJvIGNhc2lsbGVybz17ZmlsdHJvfT5cclxuICAgICAgICA8RGVzcGxpZWd1ZUVuY2FiZXphZG8gY2FzaWxsZXJvPXtmaWx0cm99Lz5cclxuICAgIDwvRGVzcGxlZ2FyQ2FzaWxsZXJvPlxyXG59XHJcblxyXG5mdW5jdGlvbiBDb25zaXN0ZW5jaWFEZXNwbGllZ3VlKHByb3BzOntjYXNpbGxlcm86Q29uc2lzdGVuY2lhLCBmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIHtjYXNpbGxlcm8sIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGhhYmlsaXRhZG9yID0gY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanM/Z2V0RnVuY2lvbkhhYmlsaXRhcihjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhcl9qcyk6KCk9PnRydWU7XHJcbiAgICB2YXIge21vZG9EZXNwbGllZ3VlfSA9IHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGspO1xyXG4gICAgdmFyIGlkID0gYGNvbnNpc3RlbmNpYS0ke2Nhc2lsbGVyby5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtpZCwgc3R5bGU6J2Rpc3BsYXknLCBmdW46KHI6UmVzcHVlc3Rhcyk9PmhhYmlsaXRhZG9yKHIpIHx8IG1vZG9EZXNwbGllZ3VlPT0nbWV0YWRhdG9zJz8nYmxvY2snOidub25lJ30pXHJcbiAgICByZXR1cm4gPERlc3BsZWdhckNhc2lsbGVybyBcclxuICAgICAgICBpZD17aWR9XHJcbiAgICAgICAgY2FzaWxsZXJvPXtjYXNpbGxlcm99XHJcbiAgICAgICAgc3R5bGU9e3tkaXNwbGF5Oidub25lJ319XHJcbiAgICA+XHJcbiAgICAgICAgPEVuY2FiZXphZG9EZXNwbGllZ3VlIGNhc2lsbGVybz17Y2FzaWxsZXJvfSBsZWVyPXtmYWxzZX0gZm9yUGs9e2ZvclBrfS8+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz5cclxufVxyXG5cclxudHlwZSBEZWZpbmljaW9uRm9ybXVsYXJpb0FicmlyPVxyXG4oe2ZvclBrOkZvclBrLCBudW06bnVtYmVyLCBhY3R1YWw6Ym9vbGVhbiwgcHJldmlvOmJvb2xlYW59IHwgXHJcbntmb3JQazpGb3JQaywgbnVtOm51bWJlciwgYWN0dWFsOmJvb2xlYW4sIHByZXZpbzpmYWxzZSwgZXNBZ3JlZ2FyOnRydWV9IHwgXHJcbntmb3JQazpGb3JQaywgbnVtOm51bWJlciwgYWN0dWFsOmJvb2xlYW4sIHByZXZpbzpmYWxzZSwgZXNDb25maXJtYXI6dHJ1ZX0gfFxyXG57Zm9yUGs6Rm9yUGssIG51bTpudW1iZXIsIGFjdHVhbDpib29sZWFuLCBwcmV2aW86ZmFsc2UsIHBlcm1pdGVCb3JyYXI6Ym9vbGVhbn0gfFxyXG57Zm9yUGs6Rm9yUGssIG51bTpmYWxzZSwgYWN0dWFsOmJvb2xlYW4sIHByZXZpbzp0cnVlLCB1bmljbzp0cnVlfSlcclxuJiB7ZXNDb25maXJtYXI/OnRydWUsIGVzQWdyZWdhcj86dHJ1ZSwgcGVybWl0ZUJvcnJhcj86Ym9vbGVhbiwgZGlzYWJsZWQ/OmJvb2xlYW58dW5kZWZpbmVkfTtcclxuXHJcblxyXG52YXIgYm90b25Gb3JtdWxhcmlvQ29uUmVzdW1lbiA9IChcclxuICAgIGRlZkJvdG9uOkRlZmluaWNpb25Gb3JtdWxhcmlvQWJyaXIsIFxyXG4gICAgZmVlZGJhY2tGb3JtOkZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+LCBcclxuICAgIHJlc3B1ZXN0YXNBdW1lbnRhZGFzOlJlc3B1ZXN0YXMsXHJcbiAgICBjYXNpbGxlcm86e2Rlc3BsaWVndWVPY3VsdGE/OmJvb2xlYW58bnVsbCwgZXhwcmVzaW9uX2hhYmlsaXRhcl9qcz86c3RyaW5nLCBhY2xhcmFjaW9uOnN0cmluZ3xudWxsLCBleHByZXNpb25faGFiaWxpdGFyPzpzdHJpbmcsIG5vbWJyZT86c3RyaW5nLCBzYWx0bzpzdHJpbmd8bnVsbCwgZXNwZWNpYWw/OmFueX0sXHJcbiAgICBmb3JQa1BhZHJlOiBGb3JQayxcclxuICAgIGlkQnV0dG9uOnN0cmluZyxcclxuICAgIGZvcm11bGFyaW9BQWJyaXI6Rm9ybXVsYXJpb1xyXG4pPT57XHJcbiAgICB2YXIgZm9yUGs6Rm9yUGsgPSBkZWZCb3Rvbi5mb3JQaztcclxuICAgIHZhciBzdWZpam9JZEVsZW1lbnRvID0gdG9QbGFpbkZvclBrKGZvclBrKSsoZGVmQm90b24uZXNDb25maXJtYXI/Jy1saXN0byc6JycpO1xyXG4gICAgdmFyIGlkID0gYGRpdi1ib3Rvbi1mb3JtdWxhcmlvLSR7c3VmaWpvSWRFbGVtZW50b31gO1xyXG4gICAgdmFyIGVzdGFkbyA9IGZlZWRiYWNrRm9ybS5yZXN1bWVuO1xyXG4gICAgcmV0dXJuIGh0bWwuZGl2KHtcclxuICAgICAgICBpZCwgXHJcbiAgICAgICAgY2xhc3M6XCJzZWNjaW9uLWJvdG9uLWZvcm11bGFyaW9cIiAsIFxyXG4gICAgICAgICRhdHRyczp7XHJcbiAgICAgICAgICAgIFwibnVlc3Ryby12YWxpZGF0b3JcIjpkZWZCb3Rvbi5hY3R1YWw/J2FjdHVhbCc6ZGVmQm90b24ucHJldmlvPyd2YWxpZGEnOid0b2RhdmlhX25vJyxcclxuICAgICAgICAgICAgXCJvY3VsdGFyLXNhbHRlYWRhXCI6Y2FzaWxsZXJvLmRlc3BsaWVndWVPY3VsdGE/KGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzPydJTkhBQklMSVRBUic6J1NJJyk6J05PJyxcclxuICAgICAgICAgICAgXCJ0aWVuZS12YWxvclwiOlwiTk9cIixcclxuICAgICAgICAgICAgXCJkZWYtYnV0dG9uXCI6SlNPTi5zdHJpbmdpZnkoZGVmQm90b24pXHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGNhc2lsbGVyby5hY2xhcmFjaW9uIHx8IGh0bWwuZGl2KHtjbGFzczpcImFjbGFyYWNpb25cIn0sIFticmVha2VhYmxlVGV4dChjYXNpbGxlcm8uYWNsYXJhY2lvbik/P251bGxdKSxcclxuICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgIEJ1dHRvbjIoe1xyXG4gICAgICAgICAgICAgICAgLy8gaWQ6YHZhci0ke2lkVmFyaWFibGV9YCxcclxuICAgICAgICAgICAgICAgIGlkOmBib3Rvbi1mb3JtdWxhcmlvLSR7c3VmaWpvSWRFbGVtZW50b31gLCBcclxuICAgICAgICAgICAgICAgIHZhcmlhbnQ6XCJvdXRsaW5lZFwiLFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGRlZkJvdG9uLmRpc2FibGVkLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6XCJpbmhlcml0XCIsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrOigpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGVmQm90b24uZXNDb25maXJtYXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkZWZCb3Rvbi5udW0gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSx7Zm9yUGs6Zm9yUGtQYWRyZSwgdmFyaWFibGU6Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXIgYXMgSWRWYXJpYWJsZSwgcmVzcHVlc3RhOmRlZkJvdG9uLm51bSBhcyBWYWxvcn0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZEJ1dHRvbikhIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdkZWYtYnV0dG9uJywgSlNPTi5zdHJpbmdpZnkoZGVmQm90b24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICRhdHRyczp7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZXN1bWVuLWVzdGFkb1wiOmVzdGFkbyE9J3ZhY2lvJz9lc3RhZG86IGRlZkJvdG9uLmFjdHVhbD8nYWN0dWFsJzpkZWZCb3Rvbi5wcmV2aW8/ZXN0YWRvOid0b2RhdmlhX25vJyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICwgY2hpbGRyZW46W1xyXG4gICAgICAgICAgICAgICAgICAgIChkZWZCb3Rvbi5lc0FncmVnYXI/J2FncmVnYXInOmRlZkJvdG9uLmVzQ29uZmlybWFyPydMaXN0byc6Y2FzaWxsZXJvLm5vbWJyZSArICcgJyArIChkZWZCb3Rvbi5udW18fCcnKSksXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5zdmcoe2NsYXNzOlwiTXVpU3ZnSWNvbi1yb290XCIsIGZvY3VzYWJsZTpmYWxzZSwgdmlld2JveDpcIjAgMCAyNCAyNFwiLCBcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5wYXRoKHtkOihkZWZCb3Rvbi5lc0FncmVnYXI/bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5BZGQ6ZGVmQm90b24uZXNDb25maXJtYXI/bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5DaGVjazpjYXNpbGxlcm8uc2FsdG8/bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5Gb3J3YXJkOm1hdGVyaWFsSW9JY29uc1N2Z1BhdGguRXhpdFRvQXBwKX0pXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIChkZWZCb3Rvbi5wZXJtaXRlQm9ycmFyP1xyXG4gICAgICAgICAgICAgICAgQnV0dG9uMih7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOlwiYm90b24tYm9ycmFyLXVhLXZhY2lhXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6XCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudDpcIm91dGxpbmVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuc3ZnKHtjbGFzczpcIk11aVN2Z0ljb24tcm9vdFwiLCBmb2N1c2FibGU6ZmFsc2UsIHZpZXdib3g6XCIwIDAgMjQgMjRcIiwgXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLnBhdGgoe2Q6bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5EZWxldGVGb3JldmVyfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSksIFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6KCk9PmFjY2lvbl9ib3JyYXJfZm9ybXVsYXJpbyh7Zm9yUGssIGZvclBrUGFkcmV9KX0pXHJcbiAgICAgICAgICAgIDpudWxsKSxcclxuICAgICAgICAgICAgKGRlZkJvdG9uLm51bSAhPT0gZmFsc2UgJiYgIWRlZkJvdG9uLmVzQWdyZWdhciAmJiAhZGVmQm90b24uZXNDb25maXJtYXI/XHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oKGNhc2lsbGVyby5lc3BlY2lhbD8uY2FtcG9zUmVzdW1lbj8/W2RlZkJvdG9uLm51bS50b1N0cmluZygpXSkubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChjYW1wbzpzdHJpbmcpPT5yZXNwdWVzdGFzQXVtZW50YWRhc1tmb3JtdWxhcmlvQUFicmlyLnVuaWRhZF9hbmFsaXNpc11bZGVmQm90b24ubnVtLTFdW2NhbXBvIGFzIElkVmFyaWFibGVdXHJcbiAgICAgICAgICAgICAgICApLmpvaW4oJywgJykgKVxyXG4gICAgICAgICAgICA6bnVsbClcclxuICAgICAgICAgICAgLy8gaHRtbC5kaXYoe2NsYXNzOidpbmxpbmUtZGlhbG9nJywgJGF0dHJzOntcImlubGluZS1kaWFsb2ctb3BlblwiOiBjb25maXJtYXJGb3J6YXJJciA9PSBkZWZCb3Rvbi5udW0/J3Zpc2libGUnOidoaWRkZW4nfX0sWyAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgIF0pXHJcbiAgICAgICAgLypcclxuICAgICAgICAgICAge2RlZkJvdG9uLmVzQWdyZWdhcj88PiA8c3Bhbj4gIDwvc3Bhbj4gPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwiaW5oZXJpdFwiXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPjxJQ09OLkNoZWNrLz48L0J1dHRvbj48Lz46bnVsbH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAqL1xyXG4gICAgXSkuY3JlYXRlKClcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIEJvdG9uRm9ybXVsYXJpb0Rlc3BsaWVndWUocHJvcHM6e2Nhc2lsbGVybzpCb3RvbkZvcm11bGFyaW8sIGZvcm11bGFyaW86Rm9ybXVsYXJpbywgZm9yUGs6Rm9yUGt9KXtcclxuICAgIHZhciB7Y2FzaWxsZXJvLCBmb3JQa30gPSBwcm9wcztcclxuICAgIHZhciBoYWJpbGl0YWRvciA9IGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzP2dldEZ1bmNpb25IYWJpbGl0YXIoY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMpOigpPT50cnVlO1xyXG4gICAgdmFyIHtvcGNpb25lc30gPSB1c2VTZWxlY3RvclZpdmllbmRhKGZvclBrKTtcclxuICAgIC8vdmFyIGlkRm9ybXVsYXJpb0Rlc3Rpbm8gPSAnRjonK2Nhc2lsbGVyby5zYWx0byEgYXMgSWRGb3JtdWxhcmlvOyAgIC8vb3JpZ2luYWxcclxuICAgIHZhciBhcm1vTm9tU2FsdG89Y2FzaWxsZXJvLnNhbHRvIS5zdWJzdHIoMCwyKT09J0Y6Jz9jYXNpbGxlcm8uc2FsdG8uc2xpY2UoMik6Y2FzaWxsZXJvLnNhbHRvO1xyXG4gICAgLy9jb25zb2xlLmxvZygnQm90b25Gb3JtdWxhcmlvRGVzcGxpZWd1ZSBhcm1vTm9tU2FsdG8gJyArYXJtb05vbVNhbHRvKTtcclxuICAgIHZhciBpZEZvcm11bGFyaW9EZXN0aW5vID0gJ0Y6Jythcm1vTm9tU2FsdG8hIGFzIElkRm9ybXVsYXJpbztcclxuICAgIHZhciBlc3RydWN0dXJhID0gZ2V0RXN0cnVjdHVyYSgpO1xyXG4gICAgdmFyIHtmb3JtdWxhcmlvQUFicmlyfSA9IHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT4oe1xyXG4gICAgICAgIGZvcm11bGFyaW9BQWJyaXI6ZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1tpZEZvcm11bGFyaW9EZXN0aW5vXS5jYXNpbGxlcm9zLFxyXG4gICAgfSkpO1xyXG4gICAgdmFyIHN1Zmlqb0lkRWxlbWVudG8gPSB0b1BsYWluRm9yUGsoZm9yUGspO1xyXG4gICAgLypcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZDpgZGl2LWJvdG9uLWZvcm11bGFyaW8tJHtzdWZpam9JZEVsZW1lbnRvfWAsIFxyXG4gICAgICAgIGF0dHI6J2VzdGEtaW5oYWJpbGl0YWRhJywgXHJcbiAgICAgICAgLy8gZnVuOiAocjpSZXNwdWVzdGFzKT0+aGFiaWxpdGFkb3Iocik/J1NJJzonTk8nXHJcbiAgICAgICAgZnVuOiAoX3I6UmVzcHVlc3Rhcyk9PidOTydcclxuICAgIH0pO1xyXG4gICAgcmVnaXN0cmFyRWxlbWVudG88SFRNTEJ1dHRvbkVsZW1lbnQ+KHtcclxuICAgICAgICBpZDpgYm90b24tZm9ybXVsYXJpby0ke3N1Zmlqb0lkRWxlbWVudG99YCwgXHJcbiAgICAgICAgcHJvcDonZGlzYWJsZWQnLCBcclxuICAgICAgICAvLyBmdW46IChyOlJlc3B1ZXN0YXMpPT4haGFiaWxpdGFkb3IocilcclxuICAgICAgICBmdW46IChfcjpSZXNwdWVzdGFzKT0+ZmFsc2VcclxuICAgIH0pO1xyXG4gICAgKi9cclxuICAgIHZhciBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB2YXIgW2NvbmZpcm1hckZvcnphcklyLCBzZXRDb25maXJtYXJGb3J6YXJJcl0gPSB1c2VTdGF0ZTxEZWZpbmljaW9uRm9ybXVsYXJpb0FicmlyfGZhbHNlfG51bGw+KG51bGwpO1xyXG4gICAgdmFyIG11bHRpcGxlRm9ybXVsYXJpb3M9Zm9ybXVsYXJpb0FBYnJpci51bmlkYWRfYW5hbGlzaXMgIT0gcHJvcHMuZm9ybXVsYXJpby51bmlkYWRfYW5hbGlzaXM7XHJcbiAgICB2YXIgbnVldm9DYW1wb1BrID0gZGVmT3BlcmF0aXZvLmRlZlVBW2Zvcm11bGFyaW9BQWJyaXIudW5pZGFkX2FuYWxpc2lzXS5waztcclxuICAgLy8gdmFyIHZhcl9uYW1lPSckQi4nK2Nhc2lsbGVyby5zYWx0bzsgLy9vcmlnaW5hbFxyXG4gICAgdmFyIHZhcl9uYW1lPSckQi5GOicrYXJtb05vbVNhbHRvO1xyXG4gICAgdmFyIGlkU2VjY2lvbj1gc2VjY2lvbi1ib3Rvbi1mb3JtdWxhcmlvLSR7dmFyX25hbWV9YDtcclxuICAgIHZhciBpZEJ1dHRvbj1gc3BlY2lhbC1idXR0b24tJHtpZFNlY2Npb259YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvPEhUTUxEaXZFbGVtZW50Pih7XHJcbiAgICAgICAgaWQ6aWRTZWNjaW9uLCBcclxuICAgICAgICBkaXJlY3Q6dHJ1ZSxcclxuICAgICAgICBmdW46IChyZXNwdWVzdGFzQXVtZW50YWRhczpSZXNwdWVzdGFzLCBmZWVkYmFja1JvdzogRm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj4sIGRpdjpIVE1MRGl2RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGZlZWRiYWNrQWxsOntcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybXVsYXJpbyBpbiBQbGFpbkZvclBrXTpGb3JtU3RydWN0dXJlU3RhdGU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPiAvLyByZXN1bHRhZG8gZGVsIHJvd1ZhbGlkYXRvciBwYXJhIGVzdGFkby5mb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApPT57XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIHZhciBsaXN0YURlQm90b25lc0FicmlyOkRlZmluaWNpb25Gb3JtdWxhcmlvQWJyaXJbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAvLyB2YXIgZXNWYXJBY3R1YWwgPSBmZWVkYmFja1Jvdy5hY3R1YWwgPT0gJyRCLkY6JytjYXNpbGxlcm8uc2FsdG87ICAvL29yaWdpbmFsXHJcbiAgICAgICAgICAgICAgICB2YXIgZXNWYXJBY3R1YWwgPSBmZWVkYmFja1Jvdy5hY3R1YWwgID09ICckQi5GOicrYXJtb05vbVNhbHRvO1xyXG4gICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQm90b25Gb3JtdWxhcmlvRGVzcGxpZWd1ZSBlc1ZhckFjdHVhbCAnICtlc1ZhckFjdHVhbCAgKTtcclxuICAgICAgICAgICAgICAgIGlmKG11bHRpcGxlRm9ybXVsYXJpb3MgJiYgY2FzaWxsZXJvLnNhbHRvIT1udWxsKXtcclxuICAgICAgICAgICAgICAgICAgLy8gIGxldCBkZWZGb3JtdWxhcmlvOkluZm9Gb3JtdWxhcmlvID0gZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1snRjonK2Nhc2lsbGVyby5zYWx0byBhcyBJZEZvcm11bGFyaW9dOyAgICAgIC8vb3JpZ2luYWxcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVmRm9ybXVsYXJpbzpJbmZvRm9ybXVsYXJpbyA9IGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3NbJ0Y6Jythcm1vTm9tU2FsdG8gYXMgSWRGb3JtdWxhcmlvXTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVmVUEgPSBlc3RydWN0dXJhLnVuaWRhZGVzX2FuYWxpc2lzW2RlZkZvcm11bGFyaW8uY2FzaWxsZXJvcy51bmlkYWRfYW5hbGlzaXMhXTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29uanVudG8gPSByZXNwdWVzdGFzQXVtZW50YWRhc1tkZWZGb3JtdWxhcmlvLmNhc2lsbGVyb3MudW5pZGFkX2FuYWxpc2lzIV07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhbnRpZGFkRXNwZXJhZGEgPSByZXNwdWVzdGFzQXVtZW50YWRhc1tjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhciBhcyBJZFZhcmlhYmxlXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbnVtQWN0dWFsOm51bWJlcnxudWxsID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgLy8gIHZhciBlc3RhZG9EZWxCb3RvbiA9IGZlZWRiYWNrUm93LmZlZWRiYWNrWyckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGVdLmVzdGFkbyAgIC8vb3JpZ2luYWxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBlc3RhZG9EZWxCb3RvbiA9IGZlZWRiYWNrUm93LmZlZWRiYWNrWyckQi5GOicrYXJtb05vbVNhbHRvIGFzIElkVmFyaWFibGVdLmVzdGFkb1xyXG4gICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0JvdG9uRm9ybXVsYXJpb0Rlc3BsaWVndWUgZXN0YWRvRGVsQm90b24gJyArZXN0YWRvRGVsQm90b24gICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8gPSBlc3RydWN0dXJhLmNvbmZpZ1NvcnRlbz9lc3RydWN0dXJhLmNvbmZpZ1NvcnRlb1tnZXRNYWluRm9ybUZvclZpdmllbmRhKGZvclBrLnZpdmllbmRhISldOm51bGxcclxuICAgICAgICAgICAgICAgICAgICBsaXN0YURlQm90b25lc0FicmlyID0gbGlrZUFyKGNvbmp1bnRvKS5tYXAoKF8sIGkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW06bnVtYmVyID0gbnVtYmVyT3JTdHJpbmdJbmNJZkFycmF5KGksIGNvbmp1bnRvKSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3JQaz17Li4ucHJvcHMuZm9yUGssIGZvcm11bGFyaW86aWRGb3JtdWxhcmlvRGVzdGlubywgW251ZXZvQ2FtcG9Qa106bnVtfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWRiYWNrID0gZmVlZGJhY2tBbGxbdG9QbGFpbkZvclBrKGZvclBrKV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG51bUFjdHVhbCA9PSBudWxsICYmIGZlZWRiYWNrLnJlc3VtZW4gPT0gXCJ2YWNpb1wiICYmIGVzdGFkb0RlbEJvdG9uID09J3ZhbGlkYScpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtQWN0dWFsID0gbnVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQaywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVuOm51bGwsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogY2FsY3VsYXJBY3R1YWxCRihjb25maWdTb3J0ZW9Gb3JtdWxhcmlvLCBudW0sIG51bUFjdHVhbCwgaWRGb3JtdWxhcmlvRGVzdGlubywgcmVzcHVlc3Rhc0F1bWVudGFkYXMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOiBudW1BY3R1YWwgPT0gbnVsbCwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXRlQm9ycmFyOiBsaWtlQXIoY29uanVudG8pLmFycmF5KCkubGVuZ3RoID09IE51bWJlcihpKSArIDEgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2sucmVzdW1lbiA9PSAndmFjaW8nICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGFyUGVybWl0ZUJvcnJhckJGKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8saWRGb3JtdWxhcmlvRGVzdGlubyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8sIG51bSwgaWRGb3JtdWxhcmlvRGVzdGlubywgcmVzcHVlc3Rhc0F1bWVudGFkYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KS5hcnJheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKFwicHVlZGUgYWdyZWdhciAvL1RPRE8gVkVSIEVTVE9cIiAmJiAoY29uanVudG8gaW5zdGFuY2VvZiBBcnJheSB8fCBjb25qdW50byA9PSBudWxsKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudWV2b1ZhbG9yUGs9KGNvbmp1bnRvPT1udWxsID8gMCA6IGNvbmp1bnRvLmxlbmd0aCkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9yUGs9ey4uLnByb3BzLmZvclBrLCBmb3JtdWxhcmlvOmlkRm9ybXVsYXJpb0Rlc3Rpbm8sIFtudWV2b0NhbXBvUGtdOm51ZXZvVmFsb3JQa307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZWJlQWdyZWdhck9saXN0byA9IG51bUFjdHVhbCA9PSBudWxsICYmIChjYW50aWRhZEVzcGVyYWRhID09IG51bGwgfHwgY2FudGlkYWRFc3BlcmFkYSAhPSAoY29uanVudG8gIT1udWxsICYmIGNvbmp1bnRvLmxlbmd0aCkpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGVzdGFkb0RlbEJvdG9uID09J3ZhbGlkYScgfHwgZXNWYXJBY3R1YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0YURlQm90b25lc0FicmlyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yUGssIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOm51ZXZvVmFsb3JQaywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc0FncmVnYXI6dHJ1ZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6ZGViZUFncmVnYXJPbGlzdG8sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGQWdyZWdhckxpc3RvKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8saWRGb3JtdWxhcmlvRGVzdGlubylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RhRGVCb3RvbmVzQWJyaXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQaywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW06bnVldm9WYWxvclBrIC0gMSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc0NvbmZpcm1hcjp0cnVlLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDpkZWJlQWdyZWdhck9saXN0byAmJiAoIWNhc2lsbGVyby5sb25naXR1ZCB8fCBudWV2b1ZhbG9yUGsgPiBOdW1iZXIoY2FzaWxsZXJvLmxvbmdpdHVkKSksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGQWdyZWdhckxpc3RvKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8saWRGb3JtdWxhcmlvRGVzdGlubylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvclBrPXsuLi5wcm9wcy5mb3JQaywgZm9ybXVsYXJpbzppZEZvcm11bGFyaW9EZXN0aW5vfTtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0YURlQm90b25lc0FicmlyID0gW3tmb3JQaywgbnVtOmZhbHNlLCB1bmljbzp0cnVlLCBhY3R1YWw6ZXNWYXJBY3R1YWwsIHByZXZpbzp0cnVlfV1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciB0b2Rvc0xvc0JvdG9uZXMgPSBsaXN0YURlQm90b25lc0FicmlyLm1hcChkZWZCb3Rvbj0+XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b25Gb3JtdWxhcmlvQ29uUmVzdW1lbihkZWZCb3RvbiwgZmVlZGJhY2tBbGxbdG9QbGFpbkZvclBrKGRlZkJvdG9uLmZvclBrKV0/P3tyZXN1bWVuOid2YWNpbyd9LCByZXNwdWVzdGFzQXVtZW50YWRhcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLCBwcm9wcy5mb3JQaywgaWRCdXR0b24sIGZvcm11bGFyaW9BQWJyaXJcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB2YXIgaHRtbFNlY2Npb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRTZWNjaW9uKSE7XHJcbiAgICAgICAgICAgICAgICBodG1sU2VjY2lvbi5pbm5lckhUTUw9XCJcIjtcclxuICAgICAgICAgICAgICAgIGh0bWxTZWNjaW9uLmFwcGVuZENoaWxkKGh0bWwuZGl2KHRvZG9zTG9zQm90b25lcykuY3JlYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgLy9hcnJhbmdlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkU2VjY2lvbikhLCB0b2Rvc0xvc0JvdG9uZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IHVuZXhwZWN0ZWQoZXJyKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZW50cmEgYWwgY2F0Y2hcIilcclxuICAgICAgICAgICAgICAgIGRpdi50ZXh0Q29udGVudD0nZXN0bywgRkFMTMOJICcrZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgaXIgPSAoZGVmQm90b246RGVmaW5pY2lvbkZvcm11bGFyaW9BYnJpcik9PntcclxuICAgICAgICBpZighY2FzaWxsZXJvLnNhbHRvKXtcclxuICAgICAgICAgICAgb3BjaW9uZXMubW9kb0RpcmVjdG8/XHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLlZPTFZFUl9IRFIoe30pKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdmFyIG51ZXZhRm9yUGs9ey4uLmZvclBrLCBmb3JtdWxhcmlvOmlkRm9ybXVsYXJpb0Rlc3Rpbm99O1xyXG4gICAgICAgICAgICBpZihtdWx0aXBsZUZvcm11bGFyaW9zKXtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgZm9yUGsgeSBzdXMgY29tcG9uZW50ZXNcclxuICAgICAgICAgICAgICAgIG51ZXZhRm9yUGtbbnVldm9DYW1wb1BrXSA9IGRlZkJvdG9uLm51bVxyXG4gICAgICAgICAgICAgICAgaWYoZGVmQm90b24uZXNBZ3JlZ2FyKXtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fYWdyZWdhcl9mb3JtdWxhcmlvLHtmb3JQazpudWV2YUZvclBrfSk7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fYWJyaXJfZm9ybXVsYXJpbyx7Zm9yUGs6bnVldmFGb3JQa30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLkNBTUJJQVJfRk9STVVMQVJJTyh7Zm9yUGs6bnVldmFGb3JQaywgYXBpbGFyVnVlbHRhOnRydWV9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvbmZpcm1hckZvcnphcklyKXtzZXRDb25maXJtYXJGb3J6YXJJcihmYWxzZSl9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIDxEZXNwbGVnYXJDYXNpbGxlcm8gY2FzaWxsZXJvPXtjYXNpbGxlcm99PlxyXG4gICAgICAgIDxkaXYgaWQ9e2lkU2VjY2lvbn0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJzcGVjaWFsLWJ1dHRvblwiIGlkPXtpZEJ1dHRvbn1cclxuICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KT0+e1xyXG4gICAgICAgICAgICAgICAgaXIoSlNPTi5wYXJzZSgoZXZlbnQudGFyZ2V0ISBhcyB1bmtub3duIGFzIEhUTUxCdXR0b25FbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RlZi1idXR0b24nKSEpKVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgID5pciAoaW50ZXJubyk8L0J1dHRvbj5cclxuICAgICAgICA8RGlhbG9nIFxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJudWVzdHJvLWRpYWxvZ29cIlxyXG4gICAgICAgICAgICBvcGVuPXshIWNvbmZpcm1hckZvcnphcklyfVxyXG4gICAgICAgICAgICBvbkNsb3NlPXsoKT0+c2V0Q29uZmlybWFyRm9yemFySXIobnVsbCl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm51ZXN0cm8tZGlhbG9nb1wiPlxyXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+Tm8gc2UgcHVlZGUgYXZhbnphciBhbCBzaWd1aWVudGUgZm9ybXVsYXJpby48L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5RdWl6w6FzIG5vIHRlcm1pbsOzIGRlIGNvbnRlc3RhciBsYXMgcHJlZ3VudGFzIGNvcnJlc3BvbmRpZW50ZXM8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5RdWl6w6FzIG5vIGNvcnJlc3BvbmRlIGVuIGJhc2UgYSBsYXMgcmVzcHVlc3RhcyBvYnRlbmlkYXM8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8QnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgb25DbGljaz17KCk9PmNvbmZpcm1hckZvcnphcklyICYmIGlyKGNvbmZpcm1hckZvcnphcklyKX0+Zm9yemFyPC9CdXR0b24+XHJcbiAgICAgICAgICAgIDxCdXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdmFyaWFudD1cImNvbnRhaW5lZFwiIG9uQ2xpY2s9eygpPT5zZXRDb25maXJtYXJGb3J6YXJJcihudWxsKX0+RW50ZW5kaWRvPC9CdXR0b24+XHJcbiAgICAgICAgPC9EaWFsb2c+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz5cclxufVxyXG5cclxuZnVuY3Rpb24gQ2FzaWxsZXJvRGVzY29ub2NpZG8ocHJvcHM6e2Nhc2lsbGVybzpDYXNpbGxlcm9CYXNlLCBmb3JQazpGb3JQa30pe1xyXG4gICAgcmV0dXJuIDxEZXNwbGVnYXJDYXNpbGxlcm8gXHJcbiAgICAgICAgaWQ9e2BjYXNpbGxlcm9kZXNjb25vY2lkby0ke3Byb3BzLmNhc2lsbGVyby5pZF9jYXNpbGxlcm99YH1cclxuICAgICAgICBjYXNpbGxlcm89e3Byb3BzLmNhc2lsbGVybyBhcyBCbG9xdWV9XHJcbiAgICAgICAgc3R5bGU9e3tkaXNwbGF5Oidub25lJ319XHJcbiAgICA+XHJcbiAgICAgICAgPFR5cG9ncmFwaHk+VGlwbyBkZSBjYXNpbGxlcm8gbm8gaW1wbGVtZW50YWRvOiBcIntwcm9wcy5jYXNpbGxlcm8udGlwb2N9XCIgcGFyYSBcIntwcm9wcy5jYXNpbGxlcm8uY2FzaWxsZXJvfVwiPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDxFbmNhYmV6YWRvRGVzcGxpZWd1ZSBjYXNpbGxlcm89e3Byb3BzLmNhc2lsbGVybyBhcyBDYXNpbGxlcm9FbmNhYmV6YWJsZX0gbGVlcj17ZmFsc2V9IGZvclBrPXtwcm9wcy5mb3JQa30vPlxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGs6Rm9yUGspe1xyXG4gICAgcmV0dXJuIHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT57XHJcbiAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZm9ybXVsYXJpbzogZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1tmb3JQay5mb3JtdWxhcmlvXS5jYXNpbGxlcm9zLFxyXG4gICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTogdHJ1ZSB8fCBzdGF0ZS5tb2RvLmRlbW8/c3RhdGUub3BjaW9uZXMubW9kb0Rlc3BsaWVndWU6J3JlbGV2YW1pZW50bycsXHJcbiAgICAgICAgICAgIG1vZG86IHN0YXRlLm1vZG8sXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOiBzdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBDb25qdW50b1ByZWd1bnRhc0Rlc3BsaWVndWUocHJvcHM6e2Nhc2lsbGVybzpDb25qdW50b1ByZWd1bnRhcywgZm9ybXVsYXJpbzpGb3JtdWxhcmlvLCBmb3JQazpGb3JQa30pe1xyXG4gICAgbGV0IHtjYXNpbGxlcm8sIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGlkID0gYGNvbmp1bnRvLXByZWd1bnRhcy0ke2Nhc2lsbGVyby5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZCwgXHJcbiAgICAgICAgZGlyZWN0OnRydWUsIFxyXG4gICAgICAgIGZ1bjogcmVnaXN0cmFkb3JEZVZhcmlhYmxlKGNhc2lsbGVybylcclxuICAgIH0pXHJcbiAgICBsZXQgbW9kb0Rlc3BsaWVndWUgPSBcIm5vcm1hbFwiO1xyXG4gICAgbGV0IGhhYmlsaXRhZG8gPSB0cnVlO1xyXG4gICAgcmV0dXJuIGhhYmlsaXRhZG8gfHwgbW9kb0Rlc3BsaWVndWU9PSdtZXRhZGF0b3MnPzxEZXNwbGVnYXJDYXNpbGxlcm8gaWQ9e2lkfSBjYXNpbGxlcm89e2Nhc2lsbGVyb30+XHJcbiAgICAgICAgPEVuY2FiZXphZG9EZXNwbGllZ3VlIGNhc2lsbGVybz17Y2FzaWxsZXJvfSBmb3JQaz17Zm9yUGt9IGxlZXI9e2Nhc2lsbGVyby5sZWVyIT09ZmFsc2V9Lz5cclxuICAgICAgICA8RGVzcGxlZ2FyQ29udGVuaWRvSW50ZXJub0Jsb3F1ZU9Gb3JtdWxhcmlvIGJsb3F1ZU9Gb3JtdWxhcmlvPXtjYXNpbGxlcm99IGZvcm11bGFyaW89e3Byb3BzLmZvcm11bGFyaW99IGZvclBrPXtmb3JQa30gbXVsdGlwbGU9e2ZhbHNlfS8+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz46bnVsbDtcclxufVxyXG5cclxuZnVuY3Rpb24gRGVzcGxlZ2FyQ29udGVuaWRvSW50ZXJub0Jsb3F1ZU9Gb3JtdWxhcmlvKHByb3BzOntibG9xdWVPRm9ybXVsYXJpbzpCbG9xdWV8Rm9ybXVsYXJpb3xDb25qdW50b1ByZWd1bnRhcywgZm9ybXVsYXJpbzpGb3JtdWxhcmlvLCBmb3JQazpGb3JQaywgbXVsdGlwbGU6Ym9vbGVhbn0pe1xyXG4gICAgdmFyIHBhcmNpYWxpemFibGUgPSBwcm9wcy5ibG9xdWVPRm9ybXVsYXJpby50aXBvYz09J0YnO1xyXG4gICAgY29uc3QgW3ZlclRvZG8sIHNldFZlclRvZG9dID0gdXNlU3RhdGUoIXBhcmNpYWxpemFibGUpO1xyXG4gICAgY29uc3QgW2ZvclBrQWN0dWFsLCBzZXRGb3JQa0FjdHVhbF0gPSB1c2VTdGF0ZTxJZENhc2lsbGVyb3xudWxsPihudWxsKTtcclxuICAgIGlmKHBhcmNpYWxpemFibGUpe1xyXG4gICAgICAgIGlmKGZvclBrQWN0dWFsICE9IHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLmNhc2lsbGVybyl7XHJcbiAgICAgICAgICAgIHNldFZlclRvZG8oZmFsc2UpXHJcbiAgICAgICAgICAgIHNldEZvclBrQWN0dWFsKHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLmNhc2lsbGVybylcclxuICAgICAgICB9XHJcbiAgICAgICAgdXNlRWZmZWN0KCgpPT57XHJcbiAgICAgICAgICAgIHZhciB0aW1lcjpOb2RlSlMuVGltZW91dHxudWxsID0gc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgc2V0VmVyVG9kbyh0cnVlKTtcclxuICAgICAgICAgICAgfSwyNTApXHJcbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xyXG4gICAgICAgICAgICAgICAgaWYodGltZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgY29uc3QgbGltaXRlTm9WZXJUb2RvID0gMztcclxuICAgIHVzZUVmZmVjdCgoKT0+e1xyXG4gICAgICAgIGlmKHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLnRpcG9jPT0nRicpe1xyXG4gICAgICAgICAgICB2b2xjYWRvSW5pY2lhbEVsZW1lbnRvc1JlZ2lzdHJhZG9zKHByb3BzLmZvclBrKTtcclxuICAgICAgICB9XHJcbiAgICB9LFt0b1BsYWluRm9yUGsocHJvcHMuZm9yUGspLHZlclRvZG9dKVxyXG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZihwcm9wcy5ibG9xdWVPRm9ybXVsYXJpby50aXBvYz09J0YnICYmIHZlclRvZG8pe1xyXG4gICAgICAgICAgICB2YXIge3NpZ3VpZW50ZVZhcmlhYmxlLCB2YXJpYWJsZUFjdHVhbH0gPSBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSwge3Jlc3B1ZXN0YTpudWxsLCB2YXJpYWJsZTpOT19DQU1CSUFSX19TT0xPX1RSQUVSX1NUQVRVUywgZm9yUGs6cHJvcHMuZm9yUGt9KTtcclxuICAgICAgICAgICAgaWYodmFyaWFibGVBY3R1YWwgfHwgc2lndWllbnRlVmFyaWFibGUpe1xyXG4gICAgICAgICAgICAgICAgZW5mb2NhckVsZW1lbnRvRGVWYXJpYWJsZShjb2FsZXNjZSh2YXJpYWJsZUFjdHVhbCBhcyBzdHJpbmd8bnVsbCxzaWd1aWVudGVWYXJpYWJsZSBhcyBzdHJpbmd8bnVsbCkgYXMgSWRWYXJpYWJsZSlcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB2YXIgZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSBnZXRGZWVkYmFja1Jvd1ZhbGlkYXRvcigpXHJcbiAgICAgICAgICAgICAgICBpZihmZWVkYmFja1Jvd1ZhbGlkYXRvclt0b1BsYWluRm9yUGsocHJvcHMuZm9yUGspXS5yZXN1bWVuPT0nb2snKXtcclxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb1RvcCgpXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb1RvcCgpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbmlkb1wiPlxyXG4gICAgICAgIHt2ZXJUb2RvP251bGw6PGRpdiBzdHlsZT17e2hlaWdodDpcIjUwMHB4XCIsIHRleHRBbGlnbjonY2VudGVyJywgdmVydGljYWxBbGlnbjonbWlkZGxlJywgd2lkdGg6JzEwMCUnLCBwb3NpdGlvbjpcImZpeGVkXCIsIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMTAwLDEwMCwxMDAsMC4zKScsIGZvbnRTaXplOicyMDAlJ319ID5jYXJnYW5kby4uLjwvZGl2Pn1cclxuICAgICAgICB7cHJvcHMuYmxvcXVlT0Zvcm11bGFyaW8uY2FzaWxsZXJvcy5tYXAoKGNhc2lsbGVybywgaSk9PntcclxuICAgICAgICAgICAgdmFyIGtleSA9IGNhc2lsbGVyby50aXBvYysnLScrY2FzaWxsZXJvLmlkX2Nhc2lsbGVybysnLScraTtcclxuICAgICAgICAgICAgcmV0dXJuICh2ZXJUb2RvIHx8IGkgPCBsaW1pdGVOb1ZlclRvZG8/XHJcbiAgICAgICAgICAgICAgICAoXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiUFwiPzxQcmVndW50YURlc3BsaWVndWUga2V5PXtrZXl9IHByZWd1bnRhPXtjYXNpbGxlcm99IGZvclBrPXtwcm9wcy5mb3JQa30gZGVzcGxpZWd1ZUVuY2FiZXphZG89e2Nhc2lsbGVyby5kZXNwbGllZ3VlRW5jYWJlemFkbz8/KHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLnRpcG9jPT0nQ1AnPydsYXRlcmFsJzonc3VwZXJpb3InKX0vPjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8udGlwb2MgPT0gXCJCXCI/PEJsb3F1ZURlc3BsaWVndWUga2V5PXtrZXl9IGJsb3F1ZT17Y2FzaWxsZXJvfSBmb3JtdWxhcmlvPXtwcm9wcy5mb3JtdWxhcmlvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiRklMVFJPXCI/PEZpbHRyb0Rlc3BsaWVndWUga2V5PXtrZXl9IGZpbHRybz17Y2FzaWxsZXJvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiQkZcIj88Qm90b25Gb3JtdWxhcmlvRGVzcGxpZWd1ZSBrZXk9e2tleX0gY2FzaWxsZXJvPXtjYXNpbGxlcm99IGZvcm11bGFyaW89e3Byb3BzLmZvcm11bGFyaW99IGZvclBrPXtwcm9wcy5mb3JQa30vPjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8udGlwb2MgPT0gXCJDT05TXCI/PENvbnNpc3RlbmNpYURlc3BsaWVndWUga2V5PXtrZXl9IGNhc2lsbGVybz17Y2FzaWxsZXJvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiQ1BcIj88Q29uanVudG9QcmVndW50YXNEZXNwbGllZ3VlIGtleT17a2V5fSBjYXNpbGxlcm89e2Nhc2lsbGVyb30gZm9ybXVsYXJpbz17cHJvcHMuZm9ybXVsYXJpb30gZm9yUGs9e3Byb3BzLmZvclBrfS8+OlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyby50aXBvYyA9PSBcIlRFWFRPXCI/PFRleHRvRGVzcGxpZWd1ZSBrZXk9e2tleX0gY2FzaWxsZXJvPXtjYXNpbGxlcm99IGZvclBrPXtwcm9wcy5mb3JQa30vPjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8udGlwb2MgPT0gXCJMSUJSRVwiPzxMaWJyZURlc3BsaWVndWUga2V5PXtrZXl9IGNhc2lsbGVybz17Y2FzaWxsZXJvfSBmb3JtdWxhcmlvPXtwcm9wcy5mb3JtdWxhcmlvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgPENhc2lsbGVyb0Rlc2Nvbm9jaWRvIGtleT17a2V5fSBjYXNpbGxlcm89e2Nhc2lsbGVyb30gZm9yUGs9e3Byb3BzLmZvclBrfS8+XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDppPT1saW1pdGVOb1ZlclRvZG8/XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT0nJHNwaW5uZXInIGNsYXNzTmFtZT1cInNwaW5uZXItYm9yZGVyXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPmNhcmdhbmRvIGJsb3F1ZS4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA6bnVsbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgIH08L2Rpdj5cclxufVxyXG5cclxuZnVuY3Rpb24gQmxvcXVlRGVzcGxpZWd1ZShwcm9wczp7YmxvcXVlOkJsb3F1ZSwgZm9ybXVsYXJpbzpGb3JtdWxhcmlvLCBmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIHtibG9xdWUsIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGtleT1ibG9xdWUudmVyX2lkIT0nLScgJiYgYmxvcXVlLnZlcl9pZCB8fCBibG9xdWUuY2FzaWxsZXJvO1xyXG4gICAgdmFyIGFjdGl2ZVN0ZXA9MDtcclxuICAgIHZhciBtdWx0aXBsZSA9ICEhYmxvcXVlLnVuaWRhZF9hbmFsaXNpcztcclxuICAgIHZhciBsaXN0YSA9IFt7Zm9yUGssIGtleTowLCBtdWx0aXBsZTpmYWxzZX1dO1xyXG4gICAgdmFyIGhhYmlsaXRhZG9yID0gYmxvcXVlLmV4cHJlc2lvbl9oYWJpbGl0YXJfanM/Z2V0RnVuY2lvbkhhYmlsaXRhcihibG9xdWUuZXhwcmVzaW9uX2hhYmlsaXRhcl9qcyk6KCk9PnRydWU7XHJcbiAgICB2YXIge21vZG9EZXNwbGllZ3VlfSA9IHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGspO1xyXG4gICAgaWYobXVsdGlwbGUpe1xyXG4gICAgICAgIC8vIFRPRE86IEdFTkVSQUxJWkFSXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBcclxuICAgICAgICAvLyBsaXN0YT1yZXNwdWVzdGFzLnBlcnNvbmFzLm1hcCgoX3BlcnNvbmEsIGkpPT4oXHJcbiAgICAgICAgLy8gICAgIHtmb3JQazp7Li4uZm9yUGssIHBlcnNvbmE6aSsxfSwga2V5OmkrMSwgbXVsdGlwbGU6dHJ1ZX1cclxuICAgICAgICAvLyApKVxyXG4gICAgfVxyXG4gICAgdmFyIGlkID0gYGJsb3F1ZS0ke2Jsb3F1ZS5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBzdHlsZTonZGlzcGxheScsXHJcbiAgICAgICAgZnVuOiAocmVzcHVlc3RhczpSZXNwdWVzdGFzKT0+IGhhYmlsaXRhZG9yKHJlc3B1ZXN0YXMpIHx8IG1vZG9EZXNwbGllZ3VlPT0nbWV0YWRhdG9zJz8ndW5zZXQnOidub25lJ1xyXG4gICAgfSlcclxuICAgIHJldHVybiA8RGVzcGxlZ2FyQ2FzaWxsZXJvIGNhc2lsbGVybz17YmxvcXVlfSBudWVzdHJvLWJsb3F1ZT17YmxvcXVlLmlkX2Nhc2lsbGVyb30gZXMtbXVsdGlwbGU9e211bHRpcGxlPydTSSc6J05PJ30gaWQ9e2lkfT5cclxuICAgICAgICA8RW5jYWJlemFkb0Rlc3BsaWVndWUgY2FzaWxsZXJvPXtibG9xdWV9IGZvclBrPXtmb3JQa30vPlxyXG4gICAgICAgIHtsaXN0YS5tYXAoKHtrZXksIGZvclBrLCBtdWx0aXBsZX0pPT5cclxuICAgICAgICAgICAgPERlc3BsZWdhckNvbnRlbmlkb0ludGVybm9CbG9xdWVPRm9ybXVsYXJpbyBrZXk9e2tleX0gYmxvcXVlT0Zvcm11bGFyaW89e2Jsb3F1ZX0gZm9ybXVsYXJpbz17cHJvcHMuZm9ybXVsYXJpb30gZm9yUGs9e2ZvclBrfSBtdWx0aXBsZT17bXVsdGlwbGV9Lz5cclxuICAgICAgICApfVxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+O1xyXG59XHJcblxyXG5jb25zdCBGb3JtdWxhcmlvRW5jYWJlemFkbyA9IERlc3BsaWVndWVFbmNhYmV6YWRvO1xyXG5cclxuZnVuY3Rpb24gTWVudUxldHJhKHByb3BzOnt0YW1hbm5pbzpudW1iZXIsIGRlbm9taW5hY2lvbjpzdHJpbmd9KXtcclxuICAgIGNvbnN0IGNhbWJpYXJMZXRyYSA9ICh0YW1hbm5pbzpudW1iZXIpPT57XHJcbiAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICAgICAgcm9vdC5zdHlsZS5mb250U2l6ZT10YW1hbm5pbytcInB4XCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gPE1lbnVJdGVtXHJcbiAgICAgICAgb25DbGljaz17KCk9PmNhbWJpYXJMZXRyYShwcm9wcy50YW1hbm5pbyl9IHN0eWxlPXt7Zm9udFNpemU6cHJvcHMudGFtYW5uaW8rJ3B4J319XHJcbiAgICA+bGV0cmEge3Byb3BzLmRlbm9taW5hY2lvbn08L01lbnVJdGVtPlxyXG59XHJcblxyXG5mdW5jdGlvbiBGYXN0U2V0dHVwKCl7XHJcbiAgICBjb25zdCBbYW5jaG9yRWwsIHNldEFuY2hvckVsXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgc2V0QW5jaG9yRWwoZXZlbnQuY3VycmVudFRhcmdldCk7XHJcbiAgICAgICAgc2V0T3BlbigocHJldikgPT4gIXByZXYpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGNhbWJpYXIgPSAobW9kb0Rlc3BsaWVndWU6TW9kb0Rlc3BsaWVndWUpPT57XHJcbiAgICAgICAgZGlzcGF0Y2goZGlzcGF0Y2hlcnMuTU9ET19ERVNQTElFR1VFKHttb2RvRGVzcGxpZWd1ZX0pKTtcclxuICAgICAgICBzZXRPcGVuKGZhbHNlKVxyXG4gICAgfVxyXG4gICAgY29uc3Qgb3BjaW9uZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+c3RhdGUub3BjaW9uZXMpXHJcbiAgICByZXR1cm4gPD5cclxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfT5cclxuICAgICAgICAgICAgPElDT04uU2V0dGluZ3MvPlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDxNZW51IG9wZW49e29wZW59IGFuY2hvckVsPXthbmNob3JFbH0gb25DbG9zZT17KCk9PnNldE9wZW4oZmFsc2UpfT5cclxuICAgICAgICAgICAgPE1lbnVJdGVtIG9uQ2xpY2s9eygpPT5jYW1iaWFyKFwicmVsZXZhbWllbnRvXCIpfT5ub3JtYWw8L01lbnVJdGVtPlxyXG4gICAgICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17KCk9PmNhbWJpYXIoXCJQREZcIiAgICAgICAgICl9PlBERiBwYXJhIHJlbGV2YW1pZW50bzwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbSBvbkNsaWNrPXsoKT0+Y2FtYmlhcihcIm1ldGFkYXRvc1wiICAgKX0+cmV2aXNhciBtZXRhZGF0b3M8L01lbnVJdGVtPlxyXG4gICAgICAgICAgICA8RGl2aWRlci8+XHJcbiAgICAgICAgICAgIDxNZW51TGV0cmEgdGFtYW5uaW89ezEyfSBkZW5vbWluYWNpb24gPSBcIm11eSBjaGljYVwiLz5cclxuICAgICAgICAgICAgPE1lbnVMZXRyYSB0YW1hbm5pbz17MTR9IGRlbm9taW5hY2lvbiA9IFwiY2hpY2FcIi8+XHJcbiAgICAgICAgICAgIDxNZW51TGV0cmEgdGFtYW5uaW89ezE2fSBkZW5vbWluYWNpb24gPSBcIm5vcm1hbFwiLz5cclxuICAgICAgICAgICAgPE1lbnVMZXRyYSB0YW1hbm5pbz17MTl9IGRlbm9taW5hY2lvbiA9IFwiZ3JhbmRlXCIvPlxyXG4gICAgICAgICAgICA8TWVudUxldHJhIHRhbWFubmlvPXsyMn0gZGVub21pbmFjaW9uID0gXCJlbm9ybWVcIi8+XHJcbiAgICAgICAgICAgIDxEaXZpZGVyLz5cclxuICAgICAgICAgICAgPE1lbnVJdGVtPjxsYWJlbD48Q2hlY2tib3ggY2hlY2tlZD17b3BjaW9uZXMuY29uQ2FtcG9PcGNpb25lc30gb25DaGFuZ2U9e1xyXG4gICAgICAgICAgICAgICAgKCk9PmRpc3BhdGNoKGRpc3BhdGNoZXJzLlNFVF9PUENJT04oe29wY2lvbjonY29uQ2FtcG9PcGNpb25lcycsIHZhbG9yOiFvcGNpb25lcy5jb25DYW1wb09wY2lvbmVzfSkpXHJcbiAgICAgICAgICAgIH0gaW5wdXRQcm9wcz17eyAnYXJpYS1sYWJlbCc6ICdwcmltYXJ5IGNoZWNrYm94JyB9fS8+Y2FtcG8gb3BjaW9uZXM8L2xhYmVsPjwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbT48bGFiZWw+PENoZWNrYm94IGNoZWNrZWQ9e29wY2lvbmVzLnNhbHRvQXV0b21hdGljb30gb25DaGFuZ2U9e1xyXG4gICAgICAgICAgICAgICAgKCk9PmRpc3BhdGNoKGRpc3BhdGNoZXJzLlNFVF9PUENJT04oe29wY2lvbjonc2FsdG9BdXRvbWF0aWNvJywgdmFsb3I6IW9wY2lvbmVzLnNhbHRvQXV0b21hdGljb30pKVxyXG4gICAgICAgICAgICB9IGlucHV0UHJvcHM9e3sgJ2FyaWEtbGFiZWwnOiAncHJpbWFyeSBjaGVja2JveCcgfX0vPnNhbHRvIGF1dG9tw6F0aWNvPC9sYWJlbD48L01lbnVJdGVtPlxyXG4gICAgICAgIDwvTWVudT5cclxuICAgIDwvPjtcclxufVxyXG5cclxuZnVuY3Rpb24gQmFycmFEZU5hdmVnYWNpb24ocHJvcHM6e2ZvclBrOkZvclBrLCBzb2xvTGVjdHVyYTpib29sZWFuLCBtb2RvRGlyZWN0bzpib29sZWFufSl7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICBjb25zdCBmb3JQayA9IHByb3BzLmZvclBrO1xyXG4gICAgY29uc3Qge29wY2lvbmVzfSA9IHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGspO1xyXG4gICAgY29uc3QgW2NvbmZpcm1hQ2VycmFyLCBzZXRDb25maXJtYUNlcnJhcl0gPSB1c2VTdGF0ZTxib29sZWFufG51bGw+KGZhbHNlKTtcclxuICAgIHZhciBkb21pbmlvID0gZ2V0RGF0b3NCeVBhc3MoKS5pbmZvcm1hY2lvbkhkcltmb3JQay52aXZpZW5kYSFdLnRlbS5kb21pbmlvO1xyXG4gICAgdmFyIGNlcnJhckRpcmVjdG8gPSBhc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgIHJlbW92ZUNTU0J5SWQoQk9PVFNUUkFQXzVfMV8zX1NSQyk7XHJcbiAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgZ290b0NvbnNpc3RpcihcclxuICAgICAgICAgICAgZXN0cnVjdHVyYS5vcGVyYXRpdm8gYXMgSWRPcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIGdldERhdG9zQnlQYXNzKCkuaW5mb3JtYWNpb25IZHJbZm9yUGsudml2aWVuZGEhXS50YXJlYS50YXJlYSxcclxuICAgICAgICAgICAgZm9yUGsudml2aWVuZGE/LnRvU3RyaW5nKCkgYXMgSWRFbmNcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vdmFyIGhhc2g9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5oYXNoPy5yZXBsYWNlKC9eXFwjLywnJykuc3BsaXQoJyZhdXRvcHJvY2VkJylbMF0pO1xyXG4gICAgICAgIC8vLy9oYXNoLmRlbGV0ZSgnYXV0b3Byb2NlZCcpXHJcbiAgICAgICAgLy9jbG9zZSgpO1xyXG4gICAgICAgIC8vbG9jYXRpb24uaGFzaD1oYXNoLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB2YXIgYm90b25lc0Zvcm11bGFyaW89W107XHJcbiAgICBpZighb3BjaW9uZXMubW9kb0RpcmVjdG8pe1xyXG4gICAgICAgIGJvdG9uZXNGb3JtdWxhcmlvLnB1c2goe3F1ZTogJ2hkcicgICAgLCBhYnI6J0hkUicsIGxhYmVsOidob2phIGRlIHJ1dGEnLCByZXRyb2Nlc286MH0pXHJcbiAgICB9XHJcbiAgICBvcGNpb25lcy5waWxhRm9yUGsuZm9yRWFjaCgoZm9yUGssaSk9PlxyXG4gICAgICAgIGJvdG9uZXNGb3JtdWxhcmlvLnB1c2goe3F1ZTondm9sdmVyJywgYWJyOmZvclBrLmZvcm11bGFyaW8ucmVwbGFjZSgvXkY6LywnJyksIGxhYmVsOmZvclBrLmZvcm11bGFyaW8sIHJldHJvY2VzbzpvcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLWl9KVxyXG4gICAgKVxyXG4gICAgYm90b25lc0Zvcm11bGFyaW8ucHVzaCh7cXVlOicnLCBhYnI6Zm9yUGsuZm9ybXVsYXJpby5yZXBsYWNlKC9eRjovLCcnKSwgbGFiZWw6Zm9yUGsuZm9ybXVsYXJpbywgcmV0cm9jZXNvOjB9KTtcclxuICAgIHJldHVybiA8PlxyXG4gICAgICAgIDxCdXR0b25Hcm91cCBrZXk9XCJmb3JtdWxhcmlvc1wiIGNsYXNzTmFtZT1cImJhcnJhLW5hdmVnYWNpb25cIiBzb2xvLWxlY3R1cmE9e3Byb3BzLnNvbG9MZWN0dXJhPydzaSc6J25vJ30gPlxyXG4gICAgICAgICAgICB7Ym90b25lc0Zvcm11bGFyaW8ubWFwKChiLGkpPT5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24gY29sb3I9e2IucXVlPT1mb3JQay5mb3JtdWxhcmlvP1wicHJpbWFyeVwiOlwiaW5oZXJpdFwifSB2YXJpYW50PVwib3V0bGluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGtleT17YCR7aX0tJHtiLnF1ZX0tJHtiLnJldHJvY2Vzb31gfVxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshYi5xdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIucXVlPT0naGRyJz9kaXNwYXRjaGVycy5WT0xWRVJfSERSKHt9KTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXJzLlZPTFZFUl9ERV9GT1JNVUxBUklPKHttYWduaXR1ZFJldHJvY2VzbzpiLnJldHJvY2Vzb30pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJyXCI+e2IuYWJyfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsYWJlbFwiPntiLmxhYmVsfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvQnV0dG9uR3JvdXA+XHJcbiAgICAgICAge3Byb3BzLnNvbG9MZWN0dXJhPzxUeXBvZ3JhcGh5IGNvbXBvbmVudD1cInNwYW5cIiBzdHlsZT17e21hcmdpbjonMCAxMHB4J319PiAoU29sbyBMZWN0dXJhKSA8L1R5cG9ncmFwaHk+Om51bGx9XHJcbiAgICAgICAge3Byb3BzLm1vZG9EaXJlY3RvP1xyXG4gICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvbkdyb3VwIGtleT1cInZvbHZlcl95X2dyYWJhclwiIHN0eWxlPXt7bWFyZ2luOicwIDAgMCAzMHB4J319PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHByb3BzLnNvbG9MZWN0dXJhIHx8ICFnZXREaXJ0eSgpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJyYXJEaXJlY3RvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25maXJtYUNlcnJhcih0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPElDT04uRXhpdFRvQXBwLz5cclxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW49eyEhY29uZmlybWFDZXJyYXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaGFjZSBxdWUgbm8gc2UgY2llcnJlIGVsIG1lbnNhamVcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCk9PnNldENvbmZpcm1hQ2VycmFyKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj5Db25maXJtZSBjaWVycmUgZGUgZW5jdWVzdGE8L0RpYWxvZ1RpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdMOhIHBvciBzYWxpciBkZSBsYSBlbmN1ZXN0YSwgc2UgcGVyZGVyw6FuIGxvcyBjYW1iaW9zIG5vIGd1YXJkYWRvcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPERpYWxvZ0FjdGlvbnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnJhckRpcmVjdG8oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjYXJ0YXIgY2FtYmlvcyB5IGNlcnJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbmZpcm1hQ2VycmFyKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhciBlZGl0YW5kbyBlbmN1ZXN0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EaWFsb2dBY3Rpb25zPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5zb2xvTGVjdHVyYT9udWxsOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17XCJzYXZlLWJ1dHRvblwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2FzeW5jICgpPT50cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SUNPTi5TYXZlLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9CdXR0b25Hcm91cD5cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgOm51bGx9XHJcbiAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPVwibW9zdHJhci1mb3JQa1wiIGNvbXBvbmVudD1cInNwYW5cIiBzdHlsZT17e21hcmdpbjonMCAxMHB4J319PiBcclxuICAgICAgICAgICAge1ZFUl9ET01JTklPPzxkaXYga2V5PXtkb21pbmlvfT48c3Bhbj5kb21pbmlvPC9zcGFuPjxzcGFuPntkb21pbmlvfTwvc3Bhbj48L2Rpdj46Jyd9XHJcbiAgICAgICAgICAgIHtsaWtlQXIocHJvcHMuZm9yUGspLmZpbHRlcigoXyxrKT0+ayE9J2Zvcm11bGFyaW8nKS5tYXAoKHYsayk9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2t9PjxzcGFuPntrfTwvc3Bhbj48c3Bhbj57dn08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICkuYXJyYXkoKX0gXHJcbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDxGYXN0U2V0dHVwLz5cclxuICAgIDwvPlxyXG59XHJcblxyXG5mdW5jdGlvbiBCb3RvblZvbHZlckVuRGl2KHtpZH06e2lkOnN0cmluZ30pe1xyXG4gICAgdmFyIHtvcGNpb25lc30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHtvcGNpb25lczpzdGF0ZS5vcGNpb25lc30pKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImRpdi1ib3Rvbi12b2x2ZXJcIj5cclxuICAgICAgICB7b3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aD4wP1xyXG4gICAgICAgIDxCdXR0b24gaWQ9e2lkfSBjbGFzc05hbWU9XCJib3Rvbi12b2x2ZXJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuVk9MVkVSX0RFX0ZPUk1VTEFSSU8oe21hZ25pdHVkUmV0cm9jZXNvOjF9KSl9XHJcbiAgICAgICAgPiA8SUNPTi5DaGV2cm9uTGVmdC8+IFZvbHZlcjwvQnV0dG9uPlxyXG4gICAgICAgIDpudWxsfVxyXG4gICAgPC9kaXY+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIEZvcm11bGFyaW9EZXNwbGllZ3VlKHByb3BzOntmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIGZvclBrID0gcHJvcHMuZm9yUGs7XHJcbiAgICB2YXIge2Zvcm11bGFyaW8sIG1vZG9EZXNwbGllZ3VlLCBtb2RvLCBvcGNpb25lc30gXHJcbiAgICAgICAgPSB1c2VTZWxlY3RvclZpdmllbmRhKHByb3BzLmZvclBrKTtcclxuICAgIHZhciBzb2xvTGVjdHVyYSA9IGdldERhdG9zQnlQYXNzKCkuc29sb0xlY3R1cmE7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB1c2VFZmZlY3QoKCk9PntcclxuICAgICAgICB2YXIgY29udHJvbFNjcm9sbD0oKT0+e1xyXG4gICAgICAgICAgICB2YXIgYXJyaWJhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhYi1hY3Rpdm8tYXJyaWJhJyk7XHJcbiAgICAgICAgICAgIGlmKGFycmliYSl7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWxvckRpc3RpbnRvKGFycmliYS5zdHlsZSwgJ3Zpc2liaWxpdHknLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICBhcnJpYmEuZWxUb3BWaXNpYmlsaXphciAhPW51bGwgJiYgYXJyaWJhLmVsVG9wVmlzaWJpbGl6YXIgKyAxMCBcclxuICAgICAgICAgICAgICAgICAgICA8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgYWJham8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFiLWFjdGl2by1hYmFqbycpO1xyXG4gICAgICAgICAgICBpZihhYmFqbyl7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWxvckRpc3RpbnRvKGFiYWpvLnN0eWxlLCAndmlzaWJpbGl0eScsIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICBhYmFqby5lbEJvdHRvbVZpc2liaWxpemFyICE9IG51bGwgJiYgYWJham8uZWxCb3R0b21WaXNpYmlsaXphciAtIDIwXHJcbiAgICAgICAgICAgICAgICAgICAgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wICsgd2luZG93LmlubmVySGVpZ2h0ICogMC43ID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNvbnRyb2xTY3JvbGwpO1xyXG4gICAgICAgIGNvbnRyb2xTY3JvbGwoKTtcclxuICAgICAgICByZXR1cm4gKCk9PntcclxuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNvbnRyb2xTY3JvbGwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyBUT0RPIFZvbHZlciBhIHBvbmVyIGVsIG1vdmltaWVudG8gYSBsYSBhY3R1YWxcclxuICAgIHZhciBhY3R1YWw6YW55XHJcbiAgICB2YXIgY29tcGxldG86YW55XHJcbiAgICB2YXIgb25DbGlja1NhbHRhckFjdHVhbCA9ICgpPT57XHJcbiAgICAgICAgdmFyIHt2YXJpYWJsZUFjdHVhbH0gPSBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSwge3Jlc3B1ZXN0YTpudWxsLCB2YXJpYWJsZTpOT19DQU1CSUFSX19TT0xPX1RSQUVSX1NUQVRVUywgZm9yUGs6cHJvcHMuZm9yUGt9KTtcclxuICAgICAgICBpZih2YXJpYWJsZUFjdHVhbCl7XHJcbiAgICAgICAgICAgIGVuZm9jYXJFbGVtZW50b0RlVmFyaWFibGUodmFyaWFibGVBY3R1YWwpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFyIGxpc3RhTW9kb3M6TW9kb0Rlc3BsaWVndWVbXT1bJ21ldGFkYXRvcycsJ3JlbGV2YW1pZW50bycsJ1BERiddO1xyXG4gICAgWydib3Rvbi12b2x2ZXItMScsICdib3Rvbi12b2x2ZXItMiddLmZvckVhY2goaWQ9PntcclxuICAgICAgICByZWdpc3RyYXJFbGVtZW50byh7aWQsIGF0dHI6J3Jlc3VtZW4tZXN0YWRvJywgZnVuOihfOlJlc3B1ZXN0YXMsIGZlZWRiYWNrRm9ybTogRm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj4pPT4oXHJcbiAgICAgICAgICAgIGZlZWRiYWNrRm9ybS5yZXN1bWVuXHJcbiAgICAgICAgKX0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8QXBwQmFyIHBvc2l0aW9uPVwiZml4ZWRcIiBjb2xvcj17c29sb0xlY3R1cmE/J3NlY29uZGFyeSc6J3ByaW1hcnknfT5cclxuICAgICAgICAgICAgICAgIDxUb29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCYXJyYURlTmF2ZWdhY2lvbiBmb3JQaz17Zm9yUGt9IHNvbG9MZWN0dXJhPXtzb2xvTGVjdHVyYSB8fCBmYWxzZX0gbW9kb0RpcmVjdG89e29wY2lvbmVzLm1vZG9EaXJlY3RvfS8+XHJcbiAgICAgICAgICAgICAgICA8L1Rvb2xiYXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWluaS1jb25zb2xlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvQXBwQmFyPlxyXG4gICAgICAgICAgICA8bWFpbj5cclxuICAgICAgICAgICAgICAgIDxQYXBlciBjbGFzc05hbWU9XCJmb3JtdWxhcmlvXCIgbW9kby1kZXNwbGllZ3VlPXttb2RvRGVzcGxpZWd1ZX0gdmVyLW51bS1vcGNpb25lcz17b3BjaW9uZXMuY29uQ2FtcG9PcGNpb25lcz8nU0knOidOTyd9PlxyXG4gICAgICAgICAgICAgICAgICAgIHttb2RvLmRlbW8/PGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgY29tcG9uZW50PVwic3BhblwiPk1vZG8gZGUgZGVzcGxpZWd1ZTo8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25Hcm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2xpc3RhTW9kb3MubWFwKG1vZG89PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBrZXk9e21vZG99IHZhcmlhbnQ9e21vZG89PW1vZG9EZXNwbGllZ3VlP1wiY29udGFpbmVkXCI6XCJvdXRsaW5lZFwifSBvbkNsaWNrPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuTU9ET19ERVNQTElFR1VFKHttb2RvRGVzcGxpZWd1ZTptb2RvfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Pnttb2RvfTwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbkdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PjpudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgIDxCb3RvblZvbHZlckVuRGl2IGlkPVwiYm90b24tdm9sdmVyLTFcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZvcm11bGFyaW9FbmNhYmV6YWRvIGNhc2lsbGVybz17Zm9ybXVsYXJpb30vPlxyXG4gICAgICAgICAgICAgICAgICAgIDxEZXNwbGVnYXJDb250ZW5pZG9JbnRlcm5vQmxvcXVlT0Zvcm11bGFyaW8gYmxvcXVlT0Zvcm11bGFyaW89e2Zvcm11bGFyaW99IGZvcm11bGFyaW89e2Zvcm11bGFyaW99IGZvclBrPXtmb3JQa30gbXVsdGlwbGU9e2ZhbHNlfS8+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJvdG9uVm9sdmVyRW5EaXYgaWQ9XCJib3Rvbi12b2x2ZXItMlwiLz5cclxuICAgICAgICAgICAgICAgIDwvUGFwZXI+XHJcbiAgICAgICAgICAgICAgICA8RmFiIGlkPSdmYWItYWN0aXZvLWFycmliYScgY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1sYWJlbD1cImFkZFwiIG9uQ2xpY2s9e29uQ2xpY2tTYWx0YXJBY3R1YWx9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxJQ09OLktleWJvYXJkQXJyb3dVcCAvPlxyXG4gICAgICAgICAgICAgICAgPC9GYWI+XHJcbiAgICAgICAgICAgICAgICA8RmFiIGlkPSdmYWItYWN0aXZvLWFiYWpvJyBjb2xvcj1cInByaW1hcnlcIiBhcmlhLWxhYmVsPVwiYWRkXCIgb25DbGljaz17b25DbGlja1NhbHRhckFjdHVhbH0+XHJcbiAgICAgICAgICAgICAgICAgICAgPElDT04uS2V5Ym9hcmRBcnJvd0Rvd24gLz5cclxuICAgICAgICAgICAgICAgIDwvRmFiPlxyXG4gICAgICAgICAgICAgICAgPEZhYiBpZD0nZmFiLWVycm9yLWFycmliYScgdmFyaWFudD1cImV4dGVuZGVkXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBhcmlhLWxhYmVsPVwiZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxJQ09OLk5hdmlnYXRpb24gLz5cclxuICAgICAgICAgICAgICAgICAgICBFcnJvclxyXG4gICAgICAgICAgICAgICAgPC9GYWI+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPEZhYiBpZD0nZmFiLWVycm9yLWFiYWpvJyB2YXJpYW50PVwiZXh0ZW5kZWRcIiBjb2xvcj1cInNlY29uZGFyeVwiIGFyaWEtbGFiZWw9XCJlZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPElDT04uTmF2aWdhdGlvbkRvd24gLz5cclxuICAgICAgICAgICAgICAgICAgICBFcnJvclxyXG4gICAgICAgICAgICAgICAgPC9GYWI+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2VzcGFjaW8tZmluYWwtZm9ybXVsYXJpbyc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7b3BjaW9uZXMubW9kb0JvcnJhclJlc3B1ZXN0YSAmJiBvcGNpb25lcy5mb3JQaz88RGVzcGxlZ2FyQ29uZmlybWFyQm9ycmFyUmVzcHVlc3RhIGZvclBrPXtvcGNpb25lcy5mb3JQa30gdmFyaWFibGVCb3JyYXI9e29wY2lvbmVzLm1vZG9Cb3JyYXJSZXNwdWVzdGF9Lz46bnVsbH1cclxuICAgICAgICAgICAgPC9tYWluPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEF0cmlidXRvKHByb3BzOntub21icmU6c3RyaW5nLCB2YWxvcjphbnl9KXtcclxuICAgIHJldHVybiBwcm9wcy52YWxvciE9bnVsbCAmJiBwcm9wcy52YWxvciE9Jyc/PHNwYW4gY2xhc3NOYW1lPVwiYXRyaWJ1dG8tcGFyXCI+XHJcbiAgICAgICAge3Byb3BzLm5vbWJyZT88c3BhbiBjbGFzc05hbWU9XCJhdHJpYnV0by1ub21icmVcIj57cHJvcHMubm9tYnJlfTwvc3Bhbj46bnVsbH1cclxuICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYXRyaWJ1dG8tdmFsb3JcIj57cHJvcHMudmFsb3IudG9TdHJpbmcoKX08L3NwYW4+XHJcbiAgICA8L3NwYW4+Om51bGxcclxufVxyXG5cclxuY29uc3QgbGlzdGFFc3RhZG9zQ2FyZ2E6RXN0YWRvQ2FyZ2FbXT1bJ3Jlc3VtZW4nLCdyZWxldmFtaWVudG8nLCdyZWNpYm8nXTtcclxudmFyIHJlc3VtaWRvcmVzID0gW1xyXG4gICAge25vbWJyZTonUkVBJyAgICAgICAgICwgZjoocnI6UmVzcHVlc3Rhc1JhaXopPT5yci5yZXN1bWVuRXN0YWRvPT1cIm9rXCIgICAgICAgICAgfSxcclxuICAgIHtub21icmU6J0NpdGEgcGFjdGFkYScsIGY6KHJyOlJlc3B1ZXN0YXNSYWl6KT0+cnIucmVzdW1lbkVzdGFkbz09XCJjaXRhIHBhY3RhZGFcIn0sXHJcbiAgICB7bm9tYnJlOidQZW5kaWVudGVzJyAgLCBmOihycjpSZXNwdWVzdGFzUmFpeik9PnJyLnJlc3VtZW5Fc3RhZG89PVwidmFjaW9cIiAgICAgICB9LFxyXG5dO1xyXG5cclxucmVzdW1pZG9yZXMucHVzaChcclxuICAgIHtub21icmU6J090cm9zJywgZjpyZXN1bWlkb3Jlcy5yZWR1Y2UoKGcscik9Pihycj0+IXIuZihycikgJiYgZyhycikgKSwoXzpSZXNwdWVzdGFzUmFpeik9PnRydWUpIH1cclxuKVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3BsZWdhckxpbmVhUmVzdW1lblVBUHJpbmNpcGFsKHByb3BzOntcclxuICAgIG51bVZpdmllbmRhOm51bWJlcixcclxuICAgIGZvcm1QcmluY2lwYWw6SWRGb3JtdWxhcmlvLFxyXG4gICAgdGFyZWE6IHN0cmluZyxcclxuICAgIHJlc3B1ZXN0YXM6UmVzcHVlc3Rhc1JhaXosXHJcbn0pe1xyXG4gICAgY29uc3Qge251bVZpdmllbmRhLCByZXNwdWVzdGFzLCBmb3JtUHJpbmNpcGFsLCB0YXJlYX0gPSBwcm9wcztcclxuICAgIGNvbnN0IGlkPSd2aXYtJytudW1WaXZpZW5kYTtcclxuICAgIGNvbnN0IGZvclBrOkZvclBrPXtmb3JtdWxhcmlvOmZvcm1QcmluY2lwYWwsIHZpdmllbmRhOk51bWJlcihudW1WaXZpZW5kYSl9O1xyXG4gICAgdmFyIHRlbSA9IGdldERhdG9zQnlQYXNzKCkuaW5mb3JtYWNpb25IZHJbbnVtVml2aWVuZGFdLnRlbTtcclxuICAgIHZhciBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB1c2VFZmZlY3QoKCk9PntcclxuICAgICAgICB2b2xjYWRvSW5pY2lhbEVsZW1lbnRvc1JlZ2lzdHJhZG9zKGZvclBrKTtcclxuICAgICAgICBpbnRlbnRhckJhY2t1cChmb3JQaylcclxuICAgIH0pXHJcbiAgICByZWdpc3RyYXJFbGVtZW50byh7aWQsIGRpcmVjdDp0cnVlLFxyXG4gICAgICAgIGZ1bjooXHJcbiAgICAgICAgICAgIHI6UmVzcHVlc3RhcywgXHJcbiAgICAgICAgICAgIF9mZWVkYmFja0Zvcm06IEZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+LCBcclxuICAgICAgICAgICAgZWxlbWVudG86SFRNTERpdkVsZW1lbnQsIFxyXG4gICAgICAgICAgICBmZWVkYmFja0FsbDp7W2Zvcm11bGFyaW8gaW4gUGxhaW5Gb3JQa106Rm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj59LCBcclxuICAgICAgICAgICAgX2VzdHJ1Y3R1cmE6RXN0cnVjdHVyYVxyXG4gICAgICAgICk9PntcclxuICAgICAgICAgICAgLy9wcmVndW50byBzaSBlcyBsYSBtaXNtYSB2aXZpZW5kYSBwb3JxdWUgbGEgZnVuY2lvbiBzZSBkaXNwYXJhIFxyXG4gICAgICAgICAgICAvL2NvbiB0b2RhcyBsYXMgY29tYmluYWNpb25lcyBkZSByZXNwdWVzdGFzIHBhcmEgY2FkYSBmb3JQa1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgdml2aWVuZGEgZXhpc3RlXHJcbiAgICAgICAgICAgIGlmKHIudml2aWVuZGEgPT0gZm9yUGsudml2aWVuZGEpe1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudG8uc2V0QXR0cmlidXRlKCdyZXN1bWVuLWVzdGFkbycsY2FsY3VsYXJSZXN1bWVuVml2aWVuZGEoZm9yUGssIGZlZWRiYWNrQWxsLCByKS5yZXN1bWVuRXN0YWRvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIDxUYWJsZVJvdyBrZXk9e251bVZpdmllbmRhfT5cclxuICAgICAgICA8VGFibGVDZWxsPlxyXG4gICAgICAgICAgICB7dGVtP1xyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICA8RGVzcGxlZ2FyVGVtIHRlbT17dGVtfS8+XHJcbiAgICAgICAgICAgICAgICAgICAge3Jlc3B1ZXN0YXNbJ3Jlc3VtZW5Fc3RhZG8nIGFzIElkVmFyaWFibGVdPT1cImNpdGEgcGFjdGFkYVwiP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVzcGxlZ2FyQ2l0YVBhY3RhZGEgcmVzcHVlc3Rhcz17cmVzcHVlc3Rhc30vPlxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERlc3BsZWdhckNpdGFQYWN0YWRhWVNlbGVjY2lvbmFkb0FudGVyaW9yVGVtIHRlbT17dGVtfS8+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgIDpudWxsfVxyXG4gICAgICAgIDwvVGFibGVDZWxsPlxyXG4gICAgICAgIDxUYWJsZUNlbGw+XHJcbiAgICAgICAgICAgIHt0YXJlYX1cclxuICAgICAgICA8L1RhYmxlQ2VsbD5cclxuICAgICAgICA8VGFibGVDZWxsPlxyXG4gICAgICAgICAgICA8QnV0dG9uIGlkPXtpZH0gb25DbGljaz17KCk9PiBcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLkNBTUJJQVJfRk9STVVMQVJJTyh7Zm9yUGssIGFwaWxhclZ1ZWx0YTpmYWxzZX0pKVxyXG4gICAgICAgICAgICB9PlxyXG4gICAgICAgICAgICAgICAge251bVZpdmllbmRhLnRvU3RyaW5nKCl9XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDwvVGFibGVDZWxsPlxyXG4gICAgPC9UYWJsZVJvdz5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3BsZWdhckNhcmdhKHByb3BzOntcclxuICAgIGNhcmdhOkNhcmdhLCBcclxuICAgIGlkQ2FyZ2E6SWRDYXJnYSwgXHJcbiAgICBwb3NpY2lvbjpudW1iZXIsXHJcbiAgICBpbmZvcm1hY2lvbkhkcjpJbmZvcm1hY2lvbkhkciwgXHJcbiAgICByZXNwdWVzdGFzOiBSZXNwdWVzdGFzLFxyXG4gICAgZmVlZGJhY2tSb3dWYWxpZGF0b3I6e1xyXG4gICAgICAgIFtmb3JtdWxhcmlvIGluIFBsYWluRm9yUGtdOkZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+IFxyXG4gICAgfVxyXG59KXtcclxuICAgIGNvbnN0IHtjYXJnYSwgaWRDYXJnYSwgaW5mb3JtYWNpb25IZHIsIHJlc3B1ZXN0YXN9ID0gcHJvcHM7XHJcbiAgICByZXR1cm4gPFBhcGVyIGNsYXNzTmFtZT1cImNhcmdhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmZvcm1hY2lvbi1jYXJnYVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmdhXCI+w4FyZWE6IHtpZENhcmdhfTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm9ic2VydmFjaW9uZXNcIj57Y2FyZ2Eub2JzZXJ2YWNpb25lc308L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImluZm9ybWFjaW9uLWNhcmdhXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmVjaGFcIj57Y2FyZ2EuZmVjaGF9PC9kaXY+XHJcbiAgICAgICAgICAgIHsvKlxyXG4gICAgICAgICAgICA8QnV0dG9uR3JvdXA+XHJcbiAgICAgICAgICAgIHtsaXN0YUVzdGFkb3NDYXJnYS5tYXAoZXN0YWRvX2NhcmdhPT5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24ga2V5PXtlc3RhZG9fY2FyZ2F9IHZhcmlhbnQ9e2VzdGFkb19jYXJnYT09Y2FyZ2EuZXN0YWRvX2NhcmdhP1wiY29udGFpbmVkXCI6XCJvdXRsaW5lZFwifSBvbkNsaWNrPXtcclxuICAgICAgICAgICAgICAgICAgICAoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuRVNUQURPX0NBUkdBKHtpZENhcmdhLCBlc3RhZG9fY2FyZ2F9KSlcclxuICAgICAgICAgICAgICAgIH0+e2VzdGFkb19jYXJnYX08L0J1dHRvbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9CdXR0b25Hcm91cD5cclxuICAgICAgICAgICAgKi99XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge2NhcmdhLmVzdGFkb19jYXJnYT09bnVsbCAmJiAhcHJvcHMucG9zaWNpb24gfHwgY2FyZ2EuZXN0YWRvX2NhcmdhPT0ncmVsZXZhbWllbnRvJz9cclxuICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwidGFibGEtY2FyZ2EtaG9qYS1kZS1ydXRhXCI+XHJcbiAgICAgICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9e3t3aWR0aDpcIjc1JVwifX0vPlxyXG4gICAgICAgICAgICAgICAgPGNvbCBzdHlsZT17e3dpZHRoOlwiMTAlXCJ9fS8+ICAgIFxyXG4gICAgICAgICAgICAgICAgPGNvbCBzdHlsZT17e3dpZHRoOlwiMTUlXCJ9fS8+ICAgIFxyXG4gICAgICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgICAgICA8VGFibGVIZWFkIHN0eWxlPXt7Zm9udFNpemU6IFwiMS4ycmVtXCJ9fT5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdyBjbGFzc05hbWU9XCJ0ci1jYXJnYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+ZG9taWNpbGlvPC9UYWJsZUNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD50YXJlYTwvVGFibGVDZWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+ZW5jPC9UYWJsZUNlbGw+XHJcbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxyXG4gICAgICAgICAgICA8L1RhYmxlSGVhZD5cclxuICAgICAgICAgICAgPFRhYmxlQm9keT5cclxuICAgICAgICAgICAgICAgIHtiZWluZ0FycmF5KGluZm9ybWFjaW9uSGRyKS5maWx0ZXIoKGluZm9ybWFjaW9uOkRhdG9zSGRyVWFQcGFsLCBfbnVtVml2aWVuZGE6bnVtYmVyKT0+aW5mb3JtYWNpb24udGVtLmNhcmdhPT1pZENhcmdhKS5tYXAoKGluZm9ybWFjaW9uOkRhdG9zSGRyVWFQcGFsLCBudW1WaXZpZW5kYTpudW1iZXIpPT5cclxuICAgICAgICAgICAgICAgICAgICA8RGVzcGxlZ2FyTGluZWFSZXN1bWVuVUFQcmluY2lwYWwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bnVtVml2aWVuZGF9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1WaXZpZW5kYT17bnVtVml2aWVuZGF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmVhPXtpbmZvcm1hY2lvbi50YXJlYS50YXJlYX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVByaW5jaXBhbD17aW5mb3JtYWNpb24udGFyZWEubWFpbl9mb3JtfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwdWVzdGFzPXtyZXNwdWVzdGFzLnZpdmllbmRhc1tudW1WaXZpZW5kYV19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICkuYXJyYXkoKX1cclxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XHJcbiAgICAgICAgPC9UYWJsZT46XHJcbiAgICAgICAgPFRhYmxlPlxyXG4gICAgICAgICAgICA8VGFibGVIZWFkIHN0eWxlPXt7Zm9udFNpemU6IFwiMS4ycmVtXCJ9fT5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdyBjbGFzc05hbWU9XCJ0ci1jYXJnYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtyZXN1bWlkb3Jlcy5tYXAoKHJlc3VtaWRvcjogdHlwZW9mIHJlc3VtaWRvcmVzWzBdLCBpOm51bWJlcik9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGtleT17aX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVzdW1pZG9yLm5vbWJyZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XHJcbiAgICAgICAgICAgIDwvVGFibGVIZWFkPlxyXG4gICAgICAgIDwvVGFibGU+XHJcbiAgICAgICAgfVxyXG4gICAgPC9QYXBlcj5cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gRGVzcGxlZ2FyQ2l0YVBhY3RhZGEocHJvcHM6e3Jlc3B1ZXN0YXM6UmVzcHVlc3Rhc30pe1xyXG4gICAgY29uc3Qge3Jlc3B1ZXN0YXN9ID0gcHJvcHM7XHJcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjaXRhLXBhY3RhZGFcIj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJDaXRhIHBhY3RhZGEgY29uIFwiIHZhbG9yPXtyZXNwdWVzdGFzW3AxMl19Lz48L2Rpdj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJDZWwuOlwiIHZhbG9yPXtyZXNwdWVzdGFzW3NwMl19Lz48L2Rpdj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJUZWwuOlwiIHZhbG9yPXtyZXNwdWVzdGFzW3NwM119Lz48L2Rpdj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJGZWNoYTpcIiB2YWxvcj17cmVzcHVlc3Rhc1tzcDRdfS8+PC9kaXY+XHJcbiAgICAgICAgPGRpdj48QXRyaWJ1dG8gbm9tYnJlPVwiSG9yYTpcIiB2YWxvcj17cmVzcHVlc3Rhc1tzcDVdfS8+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3BsZWdhckNpdGFQYWN0YWRhWVNlbGVjY2lvbmFkb0FudGVyaW9yVGVtKHByb3BzOnt0ZW06VEVNfSl7XHJcbiAgICBjb25zdCB7dGVtfSA9IHByb3BzO1xyXG4gICAgcmV0dXJuIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZW0tY2l0YVwiPlxyXG4gICAgICAgICAgICA8QXRyaWJ1dG8gbm9tYnJlPVwiQ2l0YTpcIiB2YWxvcj17dGVtLmNpdGF9Lz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGVzcGxlZ2FyVGVtKHByb3BzOnt0ZW06VEVNfSl7XHJcbiAgICBjb25zdCB7dGVtfSA9IHByb3BzO1xyXG4gICAgcmV0dXJuIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZW0tZG9taWNpbGlvXCI+e3RlbS5ub21jYWxsZX0ge3RlbS5ucm9jYXRhc3RyYWx9IDxBdHJpYnV0byBub21icmU9XCJwaXNvXCIgdmFsb3I9e3RlbS5waXNvfS8+IDxBdHJpYnV0byBub21icmU9XCJkcHRvXCIgdmFsb3I9e3RlbS5kZXBhcnRhbWVudG99Lz4gPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cInNlY3RvclwiIHZhbG9yPXt0ZW0uc2VjdG9yfS8+XHJcbiAgICAgICAgICAgIDxBdHJpYnV0byBub21icmU9XCJlZGlmaWNpb1wiIHZhbG9yPXt0ZW0uZWRpZmljaW99Lz5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cImNhc2FcIiB2YWxvcj17dGVtLmNhc2F9Lz5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cImVudHJhZGFcIiB2YWxvcj17dGVtLmVudHJhZGF9Lz5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cImhhYml0YWNpb25cIiB2YWxvcj17dGVtLmhhYml0YWNpb259Lz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRlbS1vYnNlcnZhY2lvbmVzXCI+XHJcbiAgICAgICAgICAgIHt0ZW0ub2JzZXJ2YWNpb25lc30gXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEhvamFEZVJ1dGFEZXNwbGllZ3VlKCl7XHJcbiAgICB2YXIge2NhcmdhcywgbnVtX3NpbmNybywgaW5mb3JtYWNpb25IZHIsIHJlc3B1ZXN0YXN9ID0gZ2V0RGF0b3NCeVBhc3MoKTtcclxuICAgIHZhciB7bW9kb30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHttb2RvOnN0YXRlLm1vZG99KSk7XHJcbiAgICB2YXIgZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSBnZXRGZWVkYmFja1Jvd1ZhbGlkYXRvcigpXHJcbiAgICB2YXIgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgdXBkYXRlT25saW5lU3RhdHVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBzZXRPbmxpbmUod2luZG93Lm5hdmlnYXRvci5vbkxpbmUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXBwVmVyc2lvbiA9IGdldENhY2hlVmVyc2lvbigpO1xyXG4gICAgY29uc3QgW29ubGluZSwgc2V0T25saW5lXSA9IHVzZVN0YXRlKHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPEFwcEJhciBwb3NpdGlvbj1cImZpeGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8VG9vbGJhcj5cclxuICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgSG9qYSBkZSBydXRhXHJcbiAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAvLzxJY29uQnV0dG9uIHN0eWxlPXt7bWFyZ2luVG9wOiczcHgnfX1cclxuICAgICAgICAgICAgICAgICAgICAvLyAgICBjb2xvcj1cImluaGVyaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgIC8vb25DbGljaz17LypkaXNwYXRjaCBxdWUgbGxldmEgYSBwYW50YWxsYSBvcGNpb25lcyovfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vPlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgIDxJQ09OLlNldHRpbmdzLz5cclxuICAgICAgICAgICAgICAgICAgICAvLzwvSWNvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAge29ubGluZT9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvU2luY3Jvbml6YXIoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElDT04uU3luY0FsdC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgIDpudWxsfVxyXG4gICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxyXG4gICAgICAgICAgICA8L0FwcEJhcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2phLWRlLXJ1dGFcIj5cclxuICAgICAgICAgICAgICAgIHttb2RvLmRlbW8/PGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5Nb2RvIGRlbW8gPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgY29sb3I9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuUkVJTklDSUFSX0RFTU8oe30pKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlaW5pY2lhclxyXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+Om51bGx9XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vbWJyZS12ZXJzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5EaXJlY2Npw7NuIEdlbmVyYWwgZGUgRXN0YWTDrXN0aWNhIHkgQ2Vuc29zIC0gQy5BLkIuQS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntteS5nZXRMb2NhbFZhcignYXBwLXZlcnNpb24nKX0gc2luY3JvIHtudW1fc2luY3JvfSAtIHZlcnNpw7NuIHthcHBWZXJzaW9ufTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7bGlrZUFyKGNhcmdhcykubWFwKChjYXJnYTogQ2FyZ2EsIGlkQ2FyZ2E6IElkQ2FyZ2EsIF8sIHBvc2ljaW9uOm51bWJlcik9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxEZXNwbGVnYXJDYXJnYSBrZXk9e2lkQ2FyZ2F9IGNhcmdhPXtjYXJnYX0gaWRDYXJnYT17aWRDYXJnYX0gcG9zaWNpb249e3Bvc2ljaW9ufSBpbmZvcm1hY2lvbkhkcj17aW5mb3JtYWNpb25IZHJ9IGZlZWRiYWNrUm93VmFsaWRhdG9yPXtmZWVkYmFja1Jvd1ZhbGlkYXRvcn0gcmVzcHVlc3Rhcz17cmVzcHVlc3Rhc30vPlxyXG4gICAgICAgICAgICAgICAgKS5hcnJheSgpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBMaXN0YVRleHRvcyhwcm9wczp7dGV4dG9zOnN0cmluZ1tdfSl7XHJcbiAgICByZXR1cm4gPHVsPlxyXG4gICAgICAgIHtwcm9wcy50ZXh0b3MubWFwKHQ9PjxsaT48VHlwb2dyYXBoeT57dH08L1R5cG9ncmFwaHk+PC9saT4pfVxyXG4gICAgPC91bD47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBCaWVudmVuaWRhRGVzcGxpZWd1ZShwcm9wczp7bW9kbzpDYXNvU3RhdGVbXCJtb2RvXCJdfSl7XHJcbiAgICB2YXIgZGlzcGF0Y2g9dXNlRGlzcGF0Y2goKTtcclxuICAgIHJldHVybiA8UGFwZXIgY2xhc3NOYW1lPVwiYmllbnZlbmlkYVwiPlxyXG4gICAgICAgIHtwcm9wcy5tb2RvLmRlbW8/XHJcbiAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5ERU1PIGRlbCBzaXN0ZW1hIGRlIHJlbGV2YW1pZW50byBkZSBETUVOQ1U8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5FbiBlc3RhIGRlbW86PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgPExpc3RhVGV4dG9zIHRleHRvcz17W1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWxndW5hcyB2aXZpZW5kYXMgYXBhcmVjZW4gcmVsZXZhZGFzIChlbCBib3TDs24gZXN0w6EgZGUgY29sb3IpIHNpcnZlbiBkZSBlamVtcGxvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJMbyBxdWUgc2UgY2FyZ3VlbiBzZSBndWFyZGFuIGxvY2FsbWVudGUgcGVybyBubyBzZSB0cmFzbWl0ZW4gYSBsYSBiYXNlIGRlIGRhdG9zXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJTZSBwdWVkZSB2b2x2ZXIgYSBsYSB2ZXJzacOzbiBpbmljaWFsIChvIHNlYSBib3JyYXIgbG8gcXVlIHNlIGd1YXJkw7MgbG9jYWxtZW50ZSkgZGVzZGUgbGEgaG9qYSBkZSBydXRhIGJvdG9uIFtyZWluaWNpYXIgZGVtb11cIixcclxuICAgICAgICAgICAgICAgICAgICBcIlRvZGF2w61hIGhheSBjb3NhcyBxdWUgZmFsdGFuIG8gcHVlZGVuIGNhbWJpYXJcIixcclxuICAgICAgICAgICAgICAgIF19IC8+XHJcbiAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICA6PD5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PkVuY3Vlc3RhIGRlIFNlcm9wcmV2YWxlbmNpYSBkZSBDT1ZJRC0xOTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgb25DbGljaz17KCk9PnsgZ290b1NpbmNyb25pemFyKCk7IH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3Bhbj5TaW5jcm9uaXphciA8L3NwYW4+IDxJQ09OLlN5bmNBbHQvPlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5kaXNwYXRjaChkaXNwYXRjaGVycy5TRVRfT1BDSU9OKHtvcGNpb246J2JpZW52ZW5pZG8nLCB2YWxvcjp0cnVlfSkpfVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4+Q29udGludWFyIDwvc3Bhbj4gPElDT04uU2VuZC8+XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICA8L1BhcGVyPlxyXG59XHJcblxyXG4vL0NPTlRST0wgREUgUEVTVEHDkUFTXHJcbnZhciBhbGxPcGVuZWRUYWJzOntbeDpzdHJpbmddOm51bWJlcn09e307XHJcbnZhciBpbmZvT3BlbmVkVGFicz17XHJcbiAgICBhbGxPcGVuZWRUYWJzLFxyXG4gICAgbXlJZDonY2FsY3VsYW5kby4uLicsXHJcbiAgICBvdGhlclRhYnNOYW1lczonJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gT3BlbmVkVGFicygpe1xyXG4gICAgY29uc3QgW3RhYnMsIHNldFRhYnNdID0gdXNlU3RhdGUoaW5mb09wZW5lZFRhYnMub3RoZXJUYWJzTmFtZXMpO1xyXG4gICAgdmFyIHttb2RvRGlyZWN0b30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHttb2RvRGlyZWN0bzpzdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0b30pKTtcclxuICAgIGNvbnN0IHVwZGF0ZVRhYnNTdGF0dXMgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHNldFRhYnMoaW5mb09wZW5lZFRhYnMub3RoZXJUYWJzTmFtZXMpO1xyXG4gICAgfVxyXG4gICAgdXNlRWZmZWN0KCgpPT57XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ215LXRhYnMnLHVwZGF0ZVRhYnNTdGF0dXMpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbXktdGFicycsdXBkYXRlVGFic1N0YXR1cyk7XHJcbiAgICB9LFtdKVxyXG4gICAgcmV0dXJuIG1vZG9EaXJlY3RvP251bGw6KHRhYnMpP1xyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGFiLWNvdW50ZXIgdGFiLWVycm9yXCI+wqFBVEVOQ0nDk04hIEhheSBtw6FzIGRlIHVuYSB2ZW50YW5hIGFiaWVydGEuIFNlIHB1ZWRlbiBwZXJkZXIgZGF0b3M6IHt0YWJzfTwvZGl2PlxyXG4gICAgOlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGFiLWNvdW50ZXJcIj7inJQ8L2Rpdj5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEFwcERtRW5jdSgpe1xyXG4gICAgdmFyIHtmb3JQaywgYmllbnZlbmlkbywgbW9kb30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHsuLi5zdGF0ZS5vcGNpb25lcywgLi4uc3RhdGUubW9kbywgLi4uc3RhdGV9KSk7XHJcbiAgICBpZighYmllbnZlbmlkbyl7XHJcbiAgICAgICAgcmV0dXJuIDxCaWVudmVuaWRhRGVzcGxpZWd1ZSBtb2RvPXttb2RvfS8+IFxyXG4gICAgfWVsc2UgaWYoZm9yUGs9PW51bGwpe1xyXG4gICAgICAgIHJldHVybiA8SG9qYURlUnV0YURlc3BsaWVndWUgLz4gXHJcbiAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gPEZvcm11bGFyaW9EZXNwbGllZ3VlIGZvclBrPXtmb3JQa30vPlxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBQYW50YWxsYUluaWNpYWxTaW5DYXJnYShfcHJvcHM6e30pe1xyXG4gICAgY29uc3QgdXBkYXRlT25saW5lU3RhdHVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBzZXRPbmxpbmUod2luZG93Lm5hdmlnYXRvci5vbkxpbmUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgW29ubGluZSwgc2V0T25saW5lXSA9IHVzZVN0YXRlKHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIGNvbnN0IHBhcmFncmFwaFN0eWxlcz17Zm9udFNpemU6XCIxLjJyZW1cIiwgZm9udFdlaWdodDo2MDAsIHBhZGRpbmc6IFwiNXB4IDEwcHhcIn07XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxBcHBCYXIgcG9zaXRpb249XCJmaXhlZFwiPlxyXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgc3R5bGU9e3ttYXJnaW46MjV9fT5cclxuICAgICAgICAgICAgICAgICAgICBEaXNwb3NpdGl2byBzaW4gY2FyZ2FcclxuICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPC9BcHBCYXI+XHJcbiAgICAgICAgICAgIDxtYWluPlxyXG4gICAgICAgICAgICAgICAgPFBhcGVyIHN0eWxlPXt7aGVpZ2h0Oic2MDBweCcsIHBhZGRpbmc6XCIxNXB4XCIsIG1hcmdpblRvcDo3NX19PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtvbmxpbmU/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNvbXBvbmVudD1cInBcIiBzdHlsZT17cGFyYWdyYXBoU3R5bGVzfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luY3Jvbml6YXIgZGlzcG9zaXRpdm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3twYWRkaW5nOic1cHgnfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvU2luY3Jvbml6YXIoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElDT04uU3luY0FsdC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBjb21wb25lbnQ9XCJwXCIgc3R5bGU9e3BhcmFncmFwaFN0eWxlc30+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gaGF5IGNvbmV4acOzbiBhIGludGVybmV0LCBwb3IgZmF2b3IgY29uw6ljdGUgZWwgZGlzcG9zaXRpdm8gYSB1bmEgcmVkIHBhcmEgc2luY3Jvbml6YXIgdW5hIGhvamEgZGUgcnV0YS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9QYXBlcj5cclxuICAgICAgICAgICAgPC9tYWluPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFBhbnRhbGxhSW5pY2lhbCgpe1xyXG4gICAgdmFyIHtmb3JQaywgYmllbnZlbmlkbywgbW9kb30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHsuLi5zdGF0ZS5vcGNpb25lcywgLi4uc3RhdGUubW9kbywgLi4uc3RhdGV9KSk7XHJcbiAgICBpZighYmllbnZlbmlkbyl7XHJcbiAgICAgICAgcmV0dXJuIDxCaWVudmVuaWRhRGVzcGxpZWd1ZSBtb2RvPXttb2RvfS8+IFxyXG4gICAgfWVsc2UgaWYoZm9yUGs9PW51bGwpe1xyXG4gICAgICAgIHJldHVybiA8SG9qYURlUnV0YURlc3BsaWVndWUgLz4gXHJcbiAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gPEZvcm11bGFyaW9EZXNwbGllZ3VlIGZvclBrPXtmb3JQa30vPlxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG1QYW50YWxsYUluaWNpYWxTaW5DYXJnYSgpe1xyXG4gICAgdHJ5e1xyXG4gICAgICAgIGF3YWl0IGxvYWRDU1MoQk9PVFNUUkFQXzVfMV8zX1NSQyk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICB0aHJvdyhlcnIpXHJcbiAgICB9XHJcbiAgICBSZWFjdERPTS5yZW5kZXIoXHJcbiAgICAgICAgPFBhbnRhbGxhSW5pY2lhbFNpbkNhcmdhLz4sXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JylcclxuICAgIClcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwob3B0czp7bW9kb0RlbW86Ym9vbGVhbiwgZm9yUGtSYWl6PzpGb3JQa1JhaXp9KXtcclxuICAgIC8vIHRyYWVyIGxvcyBtZXRhZGF0b3MgZW4gdW5hIFwiZXN0cnVjdHVyYVwiXHJcbiAgICAvLyB0cmFlciBsb3MgZGF0b3MgZGUgbG9jYWxTdG9yYWdlXHJcbiAgICAvLyB2ZXJpZmljYXIgZWwgbWFpbiBMYXlvdXRcclxuICAgIGNvbnN0IHN0b3JlID0gYXdhaXQgZG1UcmFlckRhdG9zRm9ybXVsYXJpbyhvcHRzKVxyXG4gICAgdHJ5e1xyXG4gICAgICAgIGF3YWl0IGxvYWRDU1MoQk9PVFNUUkFQXzVfMV8zX1NSQyk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICB0aHJvdyhlcnIpXHJcbiAgICB9XHJcbiAgICBSZWFjdERPTS5yZW5kZXIoXHJcbiAgICAgICAgPFJlbmRlclByaW5jaXBhbCBzdG9yZT17c3RvcmV9IGRpc3BhdGNoZXJzPXtkaXNwYXRjaGVyc30gbWVuc2FqZVJldG9ybm89e29wdHMuZm9yUGtSYWl6P1wiVm9sdmVyIGFsIGZvcm11bGFyaW9cIjpcIlZvbHZlciBhIGxhIGhvamEgZGUgcnV0YVwifT5cclxuICAgICAgICAgICAgPE9wZW5lZFRhYnMvPlxyXG4gICAgICAgICAgICA8QXBwRG1FbmN1Lz5cclxuICAgICAgICA8L1JlbmRlclByaW5jaXBhbD4sXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JylcclxuICAgIClcclxufVxyXG5cclxuaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpe1xyXG4gICAgLy8gQHRzLWlnbm9yZSBwYXJhIGhhY2VybG9cclxuICAgIHdpbmRvdy5kZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsID0gZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbDtcclxuICAgIC8vIEB0cy1pZ25vcmUgcGFyYSBoYWNlcmxvXHJcbiAgICB3aW5kb3cuZG1QYW50YWxsYUluaWNpYWxTaW5DYXJnYSA9IGRtUGFudGFsbGFJbmljaWFsU2luQ2FyZ2E7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBsb2FkSW5zdGFuY2UoKXtcclxuICAgIGlmKHR5cGVvZiBCcm9hZGNhc3RDaGFubmVsID09PSAndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ2NvbnRhZG9yJyk7XHJcbiAgICB2YXIgbXlJZD1TdHJpbmcuZnJvbUNvZGVQb2ludCgxMDArTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApKStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKS8vKyctJytuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGFsbE9wZW5lZFRhYnNbbXlJZF09MTtcclxuICAgIGluZm9PcGVuZWRUYWJzLm15SWQ9bXlJZDtcclxuICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgnbXktdGFicycpO1xyXG4gICAgYmMub25tZXNzYWdlPWZ1bmN0aW9uKGV2KXtcclxuICAgICAgICBpZihldi5kYXRhLnF1ZT09J3NveScpe1xyXG4gICAgICAgICAgICBpZighYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXSl7XHJcbiAgICAgICAgICAgICAgICBhbGxPcGVuZWRUYWJzW2V2LmRhdGEuaWRdPTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihldi5kYXRhLnF1ZT09J3VubG9hZCcpe1xyXG4gICAgICAgICAgICBkZWxldGUgYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZXYuZGF0YS5xdWU9PSdsb2FkJyl7XHJcbiAgICAgICAgICAgIGFsbE9wZW5lZFRhYnNbZXYuZGF0YS5pZF09MTtcclxuICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2Uoe3F1ZTonc295JyxpZDpteUlkfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluZm9PcGVuZWRUYWJzLm90aGVyVGFic05hbWVzPWxpa2VBcihhbGxPcGVuZWRUYWJzKS5maWx0ZXIoKF8saWQpPT5pZCE9bXlJZCkuam9pbignLCcpO1xyXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH07XHJcbiAgICBiYy5wb3N0TWVzc2FnZSh7cXVlOidsb2FkJyxpZDpteUlkfSk7XHJcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5sb2FkJyxmdW5jdGlvbigpe1xyXG4gICAgICAgIGJjLnBvc3RNZXNzYWdlKHtxdWU6J3VubG9hZCcsaWQ6bXlJZH0pO1xyXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH0pXHJcbiAgICAvL21vc3RyYXJRdWllbmVzU29tb3MoKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNldExpYnJlRGVzcGxpZWd1ZSA9IChsaWJyZTpMaWJyZURlc3BsaWVndWVUeXBlKT0+TGlicmVEZXNwbGllZ3VlID0gbGlicmVcclxuXHJcbnNldExpYnJlRGVzcGxpZWd1ZSgocHJvcHM6e1xyXG4gICAga2V5OnN0cmluZ1xyXG4gICAgY2FzaWxsZXJvOkxpYnJlXHJcbiAgICBmb3JtdWxhcmlvOkZvcm11bGFyaW9cclxuICAgIGZvclBrOkZvclBrXHJcbn0pPT48ZGl2IGtleT17cHJvcHMua2V5fSBpZD17cHJvcHMuY2FzaWxsZXJvLmlkX2Nhc2lsbGVyb30+ZXN0ZSBjYXNpbGxlcm8gZGViZSByZWRlZmluaXJzZSBlbiBsYSBBUFAgZmluYWwgeSBzdSB1c28gZXMgZXhjbHVzaXZvIGRlbCDDoXJlYSBpbmZvcm3DoXRpY2E8L2Rpdj4pXHJcblxyXG5zZXRDYWxjdWxhclZhcmlhYmxlcygocmVzcHVlc3Rhc1JhaXo6UmVzcHVlc3Rhc1JhaXosIGZvclBrOkZvclBrKT0+e1xyXG4gICAgLy9UT0RPIEdFTkVSQUxJWkFSXHJcbiAgICB2YXIgdWFzSXRlcmFyOntcclxuICAgICAgICBba2V5IGluIElkVW5pZGFkQW5hbGlzaXNdOntcclxuICAgICAgICAgICAgdWFQZXJzb25hczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgICAgICAgICAgdmFyU2V4b1BlcnNvbmE6IElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHZhckxvc05vbWJyZXM6IElkVmFyaWFibGVcclxuICAgICAgICB9XHJcbiAgICB9ID0ge1xyXG4gICAgICAgIGhvZ2FyZXM6IHtcclxuICAgICAgICAgICAgdWFQZXJzb25hczogJ3BlcnNvbmFzJyxcclxuICAgICAgICAgICAgdmFyU2V4b1BlcnNvbmE6ICdzZXhvJyBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICB2YXJOb21icmVQZXJzb25hOiAnbm9tYnJlJyBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICB2YXJMb3NOb21icmVzOiBcImxvc19ub21icmVzXCIgYXMgSWRWYXJpYWJsZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy9AdHMtaWdub3JlIGVzIHVuaWRhZCBkZSBhbmFsaXNpc1xyXG4gICAgICAgIGhvZ2FyZXNfc3VwOiB7XHJcbiAgICAgICAgICAgIHVhUGVyc29uYXM6ICdwZXJzb25hc19zdXAnIGFzIElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICAgICAgICAgIHZhclNleG9QZXJzb25hOiAnc2V4b19zdXAnICBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICB2YXJOb21icmVQZXJzb25hOiAnbm9tYnJlX3N1cCcgIGFzIElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHZhckxvc05vbWJyZXM6IFwibm9tYnJlc19jb21wb25lbnRlc19zdXBcIiAgYXMgSWRWYXJpYWJsZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxpa2VBcih1YXNJdGVyYXIpLmZvckVhY2goKGNvbmZpZ0hvZ2FyZXMsdWFIb2dhcmVzKT0+e1xyXG4gICAgICAgIHZhciBlc3RydWN0dXJhID0gZ2V0RXN0cnVjdHVyYSgpO1xyXG4gICAgICAgIGlmKGVzdHJ1Y3R1cmEudW5pZGFkZXNfYW5hbGlzaXNbdWFIb2dhcmVzXSl7XHJcbiAgICAgICAgICAgIGZvcih2YXIgcmVzcHVlc3Rhc0hvZ2FyIG9mIHJlc3B1ZXN0YXNSYWl6W3VhSG9nYXJlc118fFtdKXtcclxuICAgICAgICAgICAgICAgIGlmKCFyZXNwdWVzdGFzSG9nYXJbY29uZmlnSG9nYXJlcy51YVBlcnNvbmFzXSB8fCByZXNwdWVzdGFzSG9nYXJbY29uZmlnSG9nYXJlcy51YVBlcnNvbmFzXS5sZW5ndGg9PTAgfHwgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc11bMF1bY29uZmlnSG9nYXJlcy52YXJTZXhvUGVyc29uYV0gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudmFyTG9zTm9tYnJlc10pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZighcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc10pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc109W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudmFyTG9zTm9tYnJlc11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChub21icmU6c3RyaW5nKT0+bm9tYnJlLnRyaW0oKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKG5vbWJyZTpzdHJpbmcsIGk6bnVtYmVyKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3B1ZXN0YXNIb2dhcltjb25maWdIb2dhcmVzLnVhUGVyc29uYXNdW2ldID0gcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc11baV0gfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc11baV1bY29uZmlnSG9nYXJlcy52YXJOb21icmVQZXJzb25hXSA9IG5vbWJyZS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXNwdWVzdGFzUmFpei52ZG9taW5pbz1nZXREYXRvc0J5UGFzcygpLmluZm9ybWFjaW9uSGRyW2ZvclBrLnZpdmllbmRhXS50ZW0uZG9taW5pbztcclxufSlcclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKXtcclxuICAgIGxvYWRJbnN0YW5jZSgpXHJcbn0pXHJcbi8vRklOIENPTlRST0wgUEVTVEHDkUFTXHJcblxyXG5mdW5jdGlvbiBsb2FkQ1NTKGNzc1VSTDpzdHJpbmcsIGlkPzpzdHJpbmcpOlByb21pc2U8dm9pZD57XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKCByZXNvbHZlLCByZWplY3QgKT0+e1xyXG4gICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2xpbmsnICk7XHJcbiAgICAgICAgbGluay5yZWwgID0gJ3N0eWxlc2hlZXQnO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IGNzc1VSTDtcclxuICAgICAgICBsaW5rLmlkID0gaWQgfHwgY3NzVVJMO1xyXG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIGxpbmsgKTtcclxuICAgICAgICBsaW5rLm9ubG9hZCA9ICgpPT57IFxyXG4gICAgICAgICAgICByZXNvbHZlKCk7IFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdHJhZSAke2Nzc1VSTH1gKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxpbmsub25lcnJvcj0oZXJyKT0+e1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgY2FyZ2FuZG8gZWwgZXN0aWxvJywgZXJyKVxyXG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBwcm9ibGVtYSBjYXJnYW5kbyBlc3RpbG8gJHtjc3NVUkx9YCkpXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZUNTU0J5SWQoaWQ6c3RyaW5nKXtcclxuICAgIHZhciBsaW5rTm9kZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICBsaW5rTm9kZT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobGlua05vZGUpO1xyXG59XHJcblxyXG5jb25zdCBCT09UU1RSQVBfNV8xXzNfU1JDID0gJ2Nzcy9ib290c3RyYXAubWluLmNzcyc7Il19
|
|
1480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWZvcm11bGFyaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWZvcm11bGFyaW8udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsK0JBQStCO0lBQy9CLHNDQUFzQztJQUN0QyxxREFRMEI7SUFDMUIsbUNBY2lCO0lBQ2pCLDJEQVk0QjtJQUM1Qix5REFJNEI7SUFDNUIsaUNBQTZEO0lBQzdELDZDQUF1RDtJQUN2RCxxQ0FBdUQ7SUFDdkQsK0NBQTZDO0lBQzdDLDJDQUF3QztJQUV4Qyw0Q0FNMkI7SUFJM0IsMkRBYzRCO0lBRTVCLDJDQUFrRDtJQUdsRCxTQUFTLGNBQWMsQ0FBQyxJQUFnQixFQUFFLFdBQTZDO1FBQ25GLElBQUcsT0FBTyxJQUFJLElBQUksUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzdDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFDLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBQyxDQUFDLElBQUksRUFBQyxFQUFFLENBQUEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3pGLElBQUcsQ0FBQyxXQUFXLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3JDOztVQUVFO0lBQ04sQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLHFKQUFxSjtJQUNoTCxnSUFBZ0k7SUFFaEksSUFBSSxVQUFVLEdBQVcsS0FBSyxDQUFDO0lBRS9CLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVB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SSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRSxFQUFFO2dCQUNkLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEdBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDNUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDRCQUE0QixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDM0QsQ0FBQyxDQUFBO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxhQUFhLENBQUMsRUFBUzs7UUFDNUIsSUFBSSxRQUFRLEdBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxVQUFVLDBDQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tXCI7XHJcbmltcG9ydCB7ICBcclxuICAgIFJlbmRlclByaW5jaXBhbCwgXHJcbiAgICBhZGFwdGFyVGlwb1ZhckNhc2lsbGVybyxcclxuICAgIElDT04sXHJcbiAgICBmb2N1c1RvSWQsXHJcbiAgICBzY3JvbGxUb1RvcCxcclxuICAgIHNjcm9sbFRvQm90dG9tLFxyXG4gICAgbWF0ZXJpYWxJb0ljb25zU3ZnUGF0aFxyXG59IGZyb20gXCIuL3JlbmRlci1nZW5lcmFsXCI7XHJcbmltcG9ydCB7QmxvcXVlLCBCb3RvbkZvcm11bGFyaW8sIFxyXG4gICAgQ2FzaWxsZXJvQmFzZSwgQ2Fzb1N0YXRlLCBDb25qdW50b1ByZWd1bnRhcywgQ29uc2lzdGVuY2lhLCBcclxuICAgIEVzdGFkb0NhcmdhLCBGaWx0cm8sIEZvclBrLCBGb3JQa1JhaXosIEZvcm11bGFyaW8sIFxyXG4gICAgSWRGb3JtdWxhcmlvLCBJZFByZWd1bnRhLCBJZFRhcmVhLCBJZFZhcmlhYmxlLCBJbmZvRm9ybXVsYXJpbyxcclxuICAgIEhvamFEZVJ1dGEsXHJcbiAgICBNb2RvRGVzcGxpZWd1ZSxcclxuICAgIE9wY2lvbiwgT3BjaW9uTXVsdGlwbGUsIFBsYWluRm9yUGssIFxyXG4gICAgUHJlZ3VudGEsIFByZWd1bnRhQ29uT3BjaW9uZXMsIFByZWd1bnRhU2ltcGxlLCBcclxuICAgIFJlc3B1ZXN0YXMsIFJlc3B1ZXN0YXNSYWl6LCBWYWxvciwgVEVNLCBJZENhcmdhLCBDYXJnYSwgSWRGaW4sIElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICBNb2RvQWxtYWNlbmFtaWVudG8sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZENhc2lsbGVybyxcclxuICAgIFByZWd1bnRhQ29uU2lObyxcclxuICAgIFRleHRvLCBFc3RydWN0dXJhLCBJbmZvcm1hY2lvbkhkciwgRGF0b3NIZHJVYVBwYWwsIENvbmZpZ3VyYWNpb25Tb3J0ZW9Gb3JtdWxhcmlvLCBSZXN1bWVuRXN0YWRvLCBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcywgSWRPcGVyYXRpdm8sIElkRW5jLCBMaWJyZVxyXG59IGZyb20gXCIuL3RpcG9zXCI7XHJcbmltcG9ydHsgXHJcbiAgICBhY2Npb25fYWJyaXJfZm9ybXVsYXJpbyxcclxuICAgIGFjY2lvbl9ib3JyYXJfZm9ybXVsYXJpbyxcclxuICAgIGNhbGN1bGFyQWN0dWFsQkYsXHJcbiAgICBjYWxjdWxhckRpc2FibGVkQkYsXHJcbiAgICBjYWxjdWxhclBlcm1pdGVCb3JyYXJCRixcclxuICAgIGNhbGN1bGFyUmVzdW1lblZpdmllbmRhLFxyXG4gICAgZ2V0RGF0b3NCeVBhc3MsXHJcbiAgICBnZXRGb3JtdWxhcmlvc0ZvcklkVml2aWVuZGEsXHJcbiAgICBnZXRNYWluRm9ybUZvclZpdmllbmRhLFxyXG4gICAgaW50ZW50YXJCYWNrdXAsXHJcbiAgICBzZXRDYWxjdWxhclZhcmlhYmxlc1xyXG59IGZyb20gXCIuL2J5cGFzcy1mb3JtdWxhcmlvXCJcclxuaW1wb3J0IHsgZG1UcmFlckRhdG9zRm9ybXVsYXJpbywgZGlzcGF0Y2hlcnMsIFxyXG4gICAgZ290b1NpbmNyb25pemFyLFxyXG4gICAgZ2V0Q2FjaGVWZXJzaW9uLFxyXG4gICAgZ290b0NvbnNpc3RpcixcclxufSBmcm9tIFwiLi9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTZWxlY3RvciwgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjsgXHJcbmltcG9ydCB7IHN0cmljdCBhcyBsaWtlQXIsIGJlaW5nQXJyYXkgfSBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQge3NsZWVwLCBjb2FsZXNjZX0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5pbXBvcnQgeyB1bmV4cGVjdGVkIH0gZnJvbSBcImNhc3QtZXJyb3JcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBBcHBCYXIsIEJ1dHRvbkdyb3VwLCBDaXJjdWxhclByb2dyZXNzLCBDaGVja2JveCwgXHJcbiAgICBEaWFsb2csIERpYWxvZ0FjdGlvbnMsIERpYWxvZ0NvbnRlbnQsIERpYWxvZ0NvbnRlbnRUZXh0LCBcclxuICAgIERpYWxvZ1RpdGxlLCBEaXZpZGVyLCBGYWIsIEljb25CdXR0b24sXHJcbiAgICBNZW51LCBNZW51SXRlbSwgUGFwZXIsIFBvcG92ZXIsXHJcbiAgICBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRvb2xiYXJcclxufSBmcm9tIFwiQG1hdGVyaWFsLXVpL2NvcmVcIjtcclxuaW1wb3J0IHsgRXN0YWRvVmFyaWFibGUsIEZvcm1TdHJ1Y3R1cmVTdGF0ZSB9IGZyb20gXCJyb3ctdmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwiQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzL3dpdGhTdHlsZXNcIjtcclxuXHJcbmltcG9ydCB7IFxyXG4gICAgcmVnaXN0cmFyRWxlbWVudG8sIHNldEF0dHJEaXN0aW50bywgc2V0VmFsb3JEaXN0aW50bywgZGlzcGF0Y2hCeVBhc3MsIFxyXG4gICAgZ2V0RGlydHksIGdldEhvamFEZVJ1dGEsIGdldEZlZWRiYWNrUm93VmFsaWRhdG9yLFxyXG4gICAgZ2V0RnVuY2lvbkhhYmlsaXRhciwgXHJcbiAgICBnZXRFc3RydWN0dXJhLCBcclxuICAgIGRlZk9wZXJhdGl2byxcclxuICAgIHZvbGNhZG9JbmljaWFsRWxlbWVudG9zUmVnaXN0cmFkb3MsXHJcbiAgICBudW1iZXJPclN0cmluZ0luY0lmQXJyYXksIFxyXG4gICAgY2FsY3VsYXJFbGVtZW50b0VuZm9jYWRvLFxyXG4gICAgYWNjaW9uX3JlZ2lzdHJhcl9yZXNwdWVzdGEsXHJcbiAgICBhY2Npb25faWRfcHJlZ3VudGEsXHJcbiAgICBhY2Npb25fYWdyZWdhcl9mb3JtdWxhcmlvLFxyXG4gICAgTk9fQ0FNQklBUl9fVkVSSUZJQ0FSX1NJX0VTX05FQ0VTQVJJTyxcclxuICAgIE5PX0NBTUJJQVJfX1NPTE9fVFJBRVJfU1RBVFVTXHJcbn0gZnJvbSBcIi4vYnlwYXNzLWZvcm11bGFyaW9cIlxyXG5cclxuaW1wb3J0IHthcnJhbmdlLCBodG1sLCBIdG1sVGFnfSBmcm9tIFwianMtdG8taHRtbFwiO1xyXG5cclxuZnVuY3Rpb24gYnJlYWtlYWJsZVRleHQodGV4dDpzdHJpbmd8bnVsbCk6c3RyaW5nfHVuZGVmaW5lZDtcclxuZnVuY3Rpb24gYnJlYWtlYWJsZVRleHQodGV4dDpzdHJpbmd8bnVsbCwgZGljY2lvbmFyaW8/OntbY2xhdmU6c3RyaW5nXTpSZWFjdC5SZWFjdE5vZGV9KXtcclxuICAgIGlmKHR5cGVvZiB0ZXh0ICE9IFwic3RyaW5nXCIpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXC8vZyxcIi9cXHUyMDYzXCIpLnJlcGxhY2UoL1xcL1xcdTIwNjMoXFx3KVxcYi9nLCcvJDEnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL19fXyovZywodG9kbyk9PmBbJHt0b2RvfV1gKS5yZXBsYWNlKC9cXEBcXHcrXFxAL2csKHRvZG8pPT5gWyR7dG9kb31dYCk7XHJcbiAgICBpZighZGljY2lvbmFyaW8gfHwgdHJ1ZSkgcmV0dXJuIHRleHQ7XHJcbiAgICAvKlxyXG4gICAgcmV0dXJuIDxzcGFuPntwYXJ0ZXMubWFwKChwYXJ0ZTpzdHJpbmcsIGk6bnVtYmVyKSA9PiA8c3BhbiBzdHlsZT17aSUyPT0xP3t0ZXh0RGVjb3JhdGlvbjpcInVuZGVybGluZVwifTp7fX0+IHtwYXJ0ZStcIiBcIn0gPC9zcGFuPil9PC9zcGFuPlxyXG4gICAgKi9cclxufVxyXG5cclxuY29uc3QgVkVSX0RPTUlOSU8gPSBmYWxzZTsgLy8gZWwgZW5jdWVzdGFkb3Igbm8gbmVjZXNpdGEgdmVyIGVsIGRvbWluaW8gZW4gY2FkYSBlbmN1ZXN0YSBwb3JxdWUgZWwgZG9taW5pbyBkZXBlbmRlIGRlbCDDoXJlYSB5IHNlIGRlZHVjZSBkZWwgcHJpbWVyIGTDrWdpdG8gZGVsIG7Dum1lcm8gZGUgZW5jdWVzdGFcclxuLy8gbm8gcG9uZXIgVkVSX0RPTUlOSU8gZW4gdHJ1ZSwgY2FtYmlhciBwb3IgdW5hIHZhcmlhYmxlIHF1ZSBzZSBmaWplIHNpIGVsIERNIGVzdMOhIGVuIG1vZG8gcHJ1ZWJhIG8gZW4gbW9kbyBcImRpc2XDsW8gY29uY2VwdHVhbFwiXHJcblxyXG52YXIgZGViZVNhbHRhcjpib29sZWFuID0gZmFsc2U7XHJcblxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpPT57XHJcbiAgICAvKlxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXY6S2V5Ym9hcmRFdmVudCk9PntcclxuICAgICAgICBkZWJlU2FsdGFyID0gZXYua2V5ID09ICdFbnRlcicgfHwgZXYua2V5Q29kZSA9PSAxMztcclxuICAgIH0pXHJcbiAgICAqL1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PntcclxuICAgICAgICBkZWJlU2FsdGFyID0gZmFsc2U7XHJcbiAgICB9KVxyXG59KVxyXG5cclxuLy8gLypcclxuXHJcbnR5cGUgQ29tbW9uQXR0cmlidXRlcyA9IHtjbGFzc05hbWU/OnN0cmluZyxzdHlsZT86Q1NTUHJvcGVydGllcyxpZD86c3RyaW5nLCB0YWJJbmRleD86bnVtYmVyfSAvLyBDU1NQcm9wZXJ0aWVzXHJcbnR5cGUgQ29sb3JWYWx1ZXMgPSAncHJpbWFyeSd8J3NlY29uZGFyeSd8J2RlZmF1bHQnfCdpbmhlcml0J1xyXG5cclxuZXhwb3J0IHR5cGUgTGlicmVEZXNwbGllZ3VlVHlwZSA9IChwcm9wczp7XHJcbiAgICBrZXk6c3RyaW5nXHJcbiAgICBjYXNpbGxlcm86TGlicmVcclxuICAgIGZvcm11bGFyaW86Rm9ybXVsYXJpb1xyXG4gICAgZm9yUGs6Rm9yUGtcclxufSk9PkpTWC5FbGVtZW50O1xyXG5cclxudmFyIExpYnJlRGVzcGxpZWd1ZTogTGlicmVEZXNwbGllZ3VlVHlwZVxyXG5cclxuY29uc3QgQnV0dG9uID0gKHt2YXJpYW50LCBvbkNsaWNrLCBkaXNhYmxlZCwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgY29sb3IsIHNpemUsIFxyXG4gICAgICAgIGRpc2FibGVFbGV2YXRpb24sIGRpc2FibGVGb2N1c1JpcHBsZSwgZGlzYWJsZVJpcHBsZSwgZnVsbFdpZHRoLCBcclxuICAgICAgICAuLi5vdGhlclxyXG4gICAgfTp7XHJcbiAgICB2YXJpYW50PzpzdHJpbmcsXHJcbiAgICBjb2xvcj86Q29sb3JWYWx1ZXMsXHJcbiAgICBvbkNsaWNrPzpSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4sIC8vICAoZXZlbnQ6TW91c2VFdmVudC8qIDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4qLyk9PnZvaWQsXHJcbiAgICBkaXNhYmxlZD86Ym9vbGVhblxyXG4gICAgY2hpbGRyZW46YW55LFxyXG4gICAgY2xhc3NOYW1lPzpzdHJpbmcsXHJcbiAgICBzaXplPzonc21hbGwnLFxyXG4gICAgZGlzYWJsZUVsZXZhdGlvbj86YW55LCBkaXNhYmxlRm9jdXNSaXBwbGU/OmFueSwgZGlzYWJsZVJpcHBsZT86YW55LFxyXG59ICYgQ29tbW9uQXR0cmlidXRlcyk9PjxidXR0b24gXHJcbiAgICB7Li4ub3RoZXJ9XHJcbiAgICBjbGFzc05hbWU9e2BidG4gYnRuJHt2YXJpYW50PT0nY29udGFpbmVkJz8nJzonLScrKHZhcmlhbnQ9PSdvdXRsaW5lZCc/J291dGxpbmUnOnZhcmlhbnQpfS0keyhjb2xvcj09J2RlZmF1bHQnIHx8IGNvbG9yPT0naW5oZXJpdCc/J3NlY29uZGFyeSc6Y29sb3I9PSdzZWNvbmRhcnknPydkYW5nZXInOmNvbG9yKXx8J3NlY29uZGFyeSd9ICR7Y2xhc3NOYW1lfHwnJ30gJHtzaXplPT0nc21hbGwnPydidG4tc20nOicnfWB9XHJcbiAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XHJcbiAgICBvbkNsaWNrPXtvbkNsaWNrfVxyXG4+e2NoaWxkcmVufTwvYnV0dG9uPjtcclxuXHJcbmNvbnN0IEJ1dHRvbjIgPSAoe3ZhcmlhbnQsIG9uQ2xpY2ssIGRpc2FibGVkLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjb2xvciwgc2l6ZSwgLi4ub3RoZXJ9OntcclxuICAgIHZhcmlhbnQ/OnN0cmluZyxcclxuICAgIGNvbG9yPzpDb2xvclZhbHVlcyxcclxuICAgIG9uQ2xpY2s/OigpPT52b2lkLFxyXG4gICAgZGlzYWJsZWQ/OmJvb2xlYW5cclxuICAgIGNoaWxkcmVuOmFueSxcclxuICAgIGNsYXNzTmFtZT86c3RyaW5nLFxyXG4gICAgc2l6ZT86J3NtYWxsJyxcclxuICAgICRhdHRycz86e31cclxufSAmIENvbW1vbkF0dHJpYnV0ZXMpPT5odG1sLmJ1dHRvbih7XHJcbiAgICAuLi5vdGhlcixcclxuICAgIGNsYXNzOiBgYnRuIGJ0biR7dmFyaWFudD09J2NvbnRhaW5lZCc/Jyc6Jy0nKyh2YXJpYW50PT0nb3V0bGluZWQnPydvdXRsaW5lJzp2YXJpYW50KX0tJHsoY29sb3I9PSdkZWZhdWx0JyB8fCBjb2xvcj09J2luaGVyaXQnPydzZWNvbmRhcnknOmNvbG9yPT0nc2Vjb25kYXJ5Jz8nZGFuZ2VyJzpjb2xvcil8fCdzZWNvbmRhcnknfSAke2NsYXNzTmFtZXx8Jyd9ICR7c2l6ZT09J3NtYWxsJz8nYnRuLXNtJzonJ31gLFxyXG4gICAgZGlzYWJsZWQsXHJcbiAgICAkb246e2NsaWNrOm9uQ2xpY2t9XHJcbn0sIGNoaWxkcmVuKTtcclxuXHJcblxyXG5jb25zdCBUZXh0RmllbGQgPSAocHJvcHM6e1xyXG4gICAgaWQ6c3RyaW5nLFxyXG4gICAgZGlzYWJsZWQ/OmJvb2xlYW4sXHJcbiAgICBjbGFzc05hbWU/OnN0cmluZyxcclxuICAgIGF1dG9Gb2N1cz86Ym9vbGVhbixcclxuICAgIGZ1bGxXaWR0aDpib29sZWFuXHJcbiAgICBpbnB1dFByb3BzPzphbnksXHJcbiAgICB2YWx1ZT86YW55LFxyXG4gICAgdHlwZTphbnksXHJcbiAgICBsYWJlbD86c3RyaW5nLFxyXG4gICAgZXJyb3I/OmJvb2xlYW4sXHJcbiAgICBoZWxwZXJUZXh0PzpzdHJpbmcsXHJcbiAgICBtdWx0aWxpbmU/OmJvb2xlYW4sXHJcbiAgICBvbkNoYW5nZT86KGV2ZW50OmFueSk9PnZvaWQsXHJcbiAgICBvbkZvY3VzPzooZXZlbnQ6YW55KT0+dm9pZCxcclxuICAgIG9uQmx1cj86KGV2ZW50OmFueSwgdmFsb3I6YW55KT0+dm9pZCxcclxuICAgIG9uS2V5RG93bj86KGV2ZW50OktleWJvYXJkRXZlbnQpPT52b2lkXHJcbn0pPT48aW5wdXRcclxuICAgIGlkPXtwcm9wcy5pZH1cclxuICAgIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZH1cclxuICAgIGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfVxyXG4gICAgYXV0b0ZvY3VzPXtwcm9wcy5hdXRvRm9jdXN9XHJcbiAgICB2YWx1ZT17cHJvcHMudmFsdWV9IFxyXG4gICAgdHlwZT17cHJvcHMudHlwZX1cclxuICAgIG9uQ2hhbmdlPXtwcm9wcy5vbkNoYW5nZX1cclxuICAgIG9uRm9jdXM9e3Byb3BzLm9uRm9jdXN9XHJcbiAgICBvbkJsdXI9eyhldnQpPT5wcm9wcy5vbkJsdXI/LihldnQsIGV2dC50YXJnZXQudmFsdWUpfVxyXG4gICAgb25LZXlEb3duPXtwcm9wcy5vbktleURvd259XHJcbiAgICBwbGFjZWhvbGRlcj17cHJvcHMubGFiZWx9XHJcbi8+O1xyXG5cclxuY29uc3QgVHlwb2dyYXBoeSA9ICh7Y2hpbGRyZW4sIC4uLm90aGVyc306e1xyXG4gICAgY2hpbGRyZW46YW55LFxyXG4gICAgY29tcG9uZW50PzpzdHJpbmdcclxuICAgIHZhcmlhbnQ/OidoNidcclxufSZDb21tb25BdHRyaWJ1dGVzKT0+UmVhY3QuY3JlYXRlRWxlbWVudChvdGhlcnMudmFyaWFudHx8b3RoZXJzLmNvbXBvbmVudHx8J2Rpdicsb3RoZXJzLGNoaWxkcmVuKTtcclxuXHJcbmZ1bmN0aW9uIEdyaWQocHJvcHM6e1xyXG4gICAgY29udGFpbmVyPzpib29sZWFuLFxyXG4gICAgc3BhY2luZz86bnVtYmVyLFxyXG4gICAgaXRlbT86Ym9vbGVhbixcclxuICAgIHdyYXA/Oid3cmFwJ3wnbm93cmFwJyxcclxuICAgIGRpcmVjdGlvbj86J3Jvdyd8J2NvbHVtbidcclxuICAgIGFsaWduSXRlbXM/OidzdHJldGNoJyB8ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdiYXNlbGluZScsXHJcbiAgICBjaGlsZHJlbjphbnksXHJcbiAgICB4cz86bnVtYmVyLFxyXG4gICAgc20/Om51bWJlcixcclxufSZDb21tb25BdHRyaWJ1dGVzKXtcclxuICAgIHZhciB7Y29udGFpbmVyLCBpdGVtLCB3cmFwLCBkaXJlY3Rpb24sIGFsaWduSXRlbXMsIGNoaWxkcmVuLCBjbGFzc05hbWUsIHhzLCBzbSwgc3BhY2luZywgLi4ub3RoZXJ9ID0gcHJvcHM7XHJcbiAgICByZXR1cm4gPGRpdlxyXG4gICAgey4uLm90aGVyfVxyXG4gICAgY2xhc3NOYW1lPXtgJHtjbGFzc05hbWV8fCcnfSAke3hzIT1udWxsPydncmlkLXhzLScreHM6Jyd9ICR7c20hPW51bGw/J2dyaWQtc20tJytzbTonJ31gfVxyXG4gICAgc3R5bGU9e2NvbnRhaW5lcj97XHJcbiAgICAgICAgZGlzcGxheTonZmxleCcsXHJcbiAgICAgICAgZmxleFdyYXA6d3JhcCxcclxuICAgICAgICBmbGV4RGlyZWN0aW9uOmRpcmVjdGlvbixcclxuICAgICAgICBhbGlnbkl0ZW1zOmFsaWduSXRlbXMsXHJcbiAgICAgICAgbWFyZ2luOnNwYWNpbmchPW51bGw/c3BhY2luZyo4KydweCc6dW5kZWZpbmVkXHJcbiAgICB9OntcclxuICAgIH19XHJcbj57Y2hpbGRyZW59PC9kaXY+XHJcbn1cclxuXHJcbnZhciBwMTIgPSAncDEyJyBhcyBJZFZhcmlhYmxlO1xyXG52YXIgc3AyID0gJ3NwMicgYXMgSWRWYXJpYWJsZTtcclxudmFyIHNwMyA9ICdzcDMnIGFzIElkVmFyaWFibGU7XHJcbnZhciBzcDQgPSAnc3A0JyBhcyBJZFZhcmlhYmxlO1xyXG52YXIgc3A1ID0gJ3NwNScgYXMgSWRWYXJpYWJsZTtcclxuXHJcbnZhciBkaWNjaW9uYXJpbyA9IHt9XHJcblxyXG4vKlxyXG4vLyBjb25zdCB0YWtlRWxlbWVudE9yRGVmYXVsdDxLLCBUIGV4dGVuZHMgW0sgaW5dLCBEPigpXHJcbmZ1bmN0aW9uIGlzSW48ViwgVD4oazprZXlvZiBULCBvYmplY3Q6VCk6IG9iamVjdFtrXSBpcyBWe1xyXG4gICAgcmV0dXJuIHRydWVcclxufVxyXG4qL1xyXG5mdW5jdGlvbiB0YWtlRWxlbWVudE9yRGVmYXVsdDxWLEsgZXh0ZW5kcyBzdHJpbmcsS08gZXh0ZW5kcyBzdHJpbmc+KGs6Sywgb2JqZWN0OntbayBpbiBLT106Vn0sIGRlZmF1bHRWYWx1ZTpWKTpWe1xyXG4gICAgcmV0dXJuIGsgaW4gb2JqZWN0ID8gXHJcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwb3IgYWxndW5hIHJhesOzbiBUUyBubyBxdWllcmUgZW50ZW5kZXIgcXVlIHNpIGsgZXN0w6EgZW4gb2JqZWN0LCBvYmplY3Rba10gZXhpc3RlXHJcbiAgICAgICAgb2JqZWN0W2tdIFxyXG4gICAgOiBkZWZhdWx0VmFsdWVcclxufVxyXG5cclxuZnVuY3Rpb24gRGVzcGxpZWd1ZUVuY2FiZXphZG8ocHJvcHM6e2Nhc2lsbGVybzpDYXNpbGxlcm9FbmNhYmV6YWJsZSwgbGVlcj86Ym9vbGVhbn0pe1xyXG4gICAgY29uc3QgZm9yUGtOdWxsPXt9IGFzIEZvclBrO1xyXG4gICAgcmV0dXJuIDxFbmNhYmV6YWRvRGVzcGxpZWd1ZSBjYXNpbGxlcm89e3Byb3BzLmNhc2lsbGVyb30gbGVlcj17cHJvcHMubGVlcn0gZm9yUGs9e2ZvclBrTnVsbH0vPjtcclxufVxyXG5cclxuZnVuY3Rpb24gc3ViaXJIYXN0YShlbGVtZW50bzpIVE1MRWxlbWVudHxudWxsLCBmdW46KGVsZW1lbnRvOkhUTUxFbGVtZW50KT0+Ym9vbGVhbik6SFRNTEVsZW1lbnR8bnVsbHtcclxuICAgIGlmKGVsZW1lbnRvID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgaWYoZnVuKGVsZW1lbnRvKSkgcmV0dXJuIGVsZW1lbnRvO1xyXG4gICAgcmV0dXJuIHN1YmlySGFzdGEoZWxlbWVudG8ucGFyZW50RWxlbWVudCwgZnVuKTtcclxufVxyXG5cclxudmFyIGVsZW1lbnRvQ29uU2VubmlhbEJvcnJhcjpIVE1MRWxlbWVudHxudWxsID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIEJvdG9uQm9ycmFyKHtpZCwgdmFyaWFibGUsIGZvclBrLCB2YWxvck9wY2lvbn06e2lkOnN0cmluZywgdmFyaWFibGU6SWRWYXJpYWJsZSwgZm9yUGs6Rm9yUGssIHZhbG9yT3BjaW9uPzphbnl9KXtcclxuICAgIHZhciBoYW5kbGVDbGlja0JvcnJhcj0oKT0+e1xyXG4gICAgICAgIGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9yZWdpc3RyYXJfcmVzcHVlc3RhLCB7cmVzcHVlc3RhOm51bGwsIHZhcmlhYmxlOnZhcmlhYmxlLCBmb3JQazpmb3JQa30pXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYm90b24tYm9ycmFyXCI+XHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBpZD17aWR9XHJcbiAgICAgICAgICAgIG1pLXZhcmlhYmxlPXt2YXJpYWJsZX1cclxuICAgICAgICAgICAgdmFsb3Itb3BjaW9uPXt2YWxvck9wY2lvbn1cclxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm90b24tb3BjaW9uIGJvdG9uLW9wY2lvbi1ib3JyYXJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja0JvcnJhcn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxJQ09OLkRlbGV0ZUZvcmV2ZXIvPlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFNhbHRvRGVzcGxpZWd1ZSh7Y2FzaWxsZXJvLHByZWZpam99OntjYXNpbGxlcm86UHJlZ3VudGF8T3BjaW9ufEZpbHRybywgcHJlZmlqbz86c3RyaW5nfSl7XHJcbiAgICByZXR1cm4gY2FzaWxsZXJvLnNhbHRvP1xyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFzZVwiPlxyXG4gICAgICAgICAgICB7cHJlZmlqbz88c3BhbiBjbGFzc05hbWU9XCJwcmVmaWpvXCI+e3ByZWZpam99IDwvc3Bhbj46bnVsbH1cclxuICAgICAgICAgICAgPElDT04uVHJlbmRpbmdGbGF0IC8+PHNwYW4+e2Nhc2lsbGVyby5zYWx0b308L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA6bnVsbFxyXG59XHJcblxyXG5mdW5jdGlvbiBPcGNpb25EZXNwbGllZ3VlKHByb3BzOntjYXNpbGxlcm86T3BjaW9uLCB2YWxvck9wY2lvbjpudW1iZXIsIHZhcmlhYmxlOklkVmFyaWFibGUsIGZvclBrOkZvclBrLCBsZWVyOmJvb2xlYW4sIGNvbkJvdG9uQm9ycmFyOmJvb2xlYW59KXtcclxuICAgIGNvbnN0IHtjYXNpbGxlcm99ID0gcHJvcHM7XHJcbiAgICB2YXIgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgdmFyIHNhbHRvQXV0b21hdGljbyA9IHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT5zdGF0ZS5vcGNpb25lcy5zYWx0b0F1dG9tYXRpY28pO1xyXG4gICAgdmFyIGhhbmRsZUNsaWNrOlJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50PiA9IGFzeW5jIChldmVudCk9PntcclxuICAgICAgICB2YXIgY29udGFpbmVyID0gc3ViaXJIYXN0YShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGVsZW1lbnRvPT5lbGVtZW50by5jbGFzc0xpc3QuY29udGFpbnMoJ3ByZWd1bnRhJykgfHwgZWxlbWVudG8uY2xhc3NMaXN0LmNvbnRhaW5zKCdtdWx0aXBsZScpKSB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICAgICAgdmFyIHRpZW5lID0gY29udGFpbmVyLmdldEF0dHJpYnV0ZSgnZXN0b3ktYm9ycmFuZG8nKTtcclxuICAgICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdlc3RveS1ib3JyYW5kbycsJ05PJyk7XHJcbiAgICAgICAgaWYoZWxlbWVudG9Db25TZW5uaWFsQm9ycmFyKXtcclxuICAgICAgICAgICAgZWxlbWVudG9Db25TZW5uaWFsQm9ycmFyLnNldEF0dHJpYnV0ZSgnZXN0b3ktYm9ycmFuZG8nLCdOTycpO1xyXG4gICAgICAgICAgICBlbGVtZW50b0NvblNlbm5pYWxCb3JyYXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIge3JlY2VudE1vZGlmaWVkLCBzaWd1aWVudGVWYXJpYWJsZX0gPSBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSwge3Jlc3B1ZXN0YTpwcm9wcy52YWxvck9wY2lvbiwgdmFyaWFibGU6cHJvcHMudmFyaWFibGUsIGZvclBrOnByb3BzLmZvclBrfSk7XHJcbiAgICAgICAgaWYoIXJlY2VudE1vZGlmaWVkKXtcclxuICAgICAgICAgICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZXN0b3ktYm9ycmFuZG8nLHRpZW5lPT0nU0knPydOTyc6J1NJJyk7XHJcbiAgICAgICAgICAgIGlmKHRpZW5lIT0nU0knKXtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRvQ29uU2VubmlhbEJvcnJhcj1jb250YWluZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaWYoc2lndWllbnRlVmFyaWFibGUgJiYgc2FsdG9BdXRvbWF0aWNvKXtcclxuICAgICAgICAgICAgICAgIHZhciBib3RvblN0eWxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LnN0eWxlO1xyXG4gICAgICAgICAgICAgICAgaWYoYm90b25TdHlsZSkgYm90b25TdHlsZS5jb2xvciA9ICdncmVlbic7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcCgxMDApO1xyXG4gICAgICAgICAgICAgICAgaWYoYm90b25TdHlsZSkgYm90b25TdHlsZS5jb2xvciA9ICdibHVlJztcclxuICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7XHJcbiAgICAgICAgICAgICAgICBpZihib3RvblN0eWxlKSBib3RvblN0eWxlLmNvbG9yID0gJ2dyZWVuJztcclxuICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7XHJcbiAgICAgICAgICAgICAgICBpZihib3RvblN0eWxlKSBib3RvblN0eWxlLmNvbG9yID0gJyc7XHJcbiAgICAgICAgICAgICAgICBlbmZvY2FyRWxlbWVudG9EZVZhcmlhYmxlKHNpZ3VpZW50ZVZhcmlhYmxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gPEdyaWQgY2xhc3NOYW1lPVwib3BjaW9uXCI+IFxyXG4gICAgICAgIHtwcm9wcy5jb25Cb3RvbkJvcnJhcj88Qm90b25Cb3JyYXJcclxuICAgICAgICAgICAgaWQ9e2BvcGNpb24tdmFyLSR7cHJvcHMudmFyaWFibGV9LSR7cHJvcHMudmFsb3JPcGNpb259LWJvcnJhcmB9XHJcbiAgICAgICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa31cclxuICAgICAgICAgICAgdmFyaWFibGU9e3Byb3BzLnZhcmlhYmxlfVxyXG4gICAgICAgICAgICB2YWxvck9wY2lvbj17cHJvcHMudmFsb3JPcGNpb259XHJcbiAgICAgICAgICAgIC8+Om51bGx9XHJcbiAgICAgICAgPEJ1dHRvbiBcclxuICAgICAgICAgICAgaWQ9e2BvcGNpb24tdmFyLSR7cHJvcHMudmFyaWFibGV9LSR7cHJvcHMudmFsb3JPcGNpb259YH1cclxuICAgICAgICAgICAgbWktdmFyaWFibGU9e3Byb3BzLnZhcmlhYmxlfVxyXG4gICAgICAgICAgICB2YWxvci1vcGNpb249e3Byb3BzLnZhbG9yT3BjaW9ufVxyXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJib3Rvbi1vcGNpb24gYm90b24tb3BjaW9uLXNlbGVjY2lvblwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxyXG4gICAgICAgICAgICB0YWJJbmRleD17LTF9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8R3JpZCBjb250YWluZXIgd3JhcD1cIm5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPVwiaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7Y2FzaWxsZXJvLnZlcl9pZCB8fCBjYXNpbGxlcm8uY2FzaWxsZXJvfVxyXG4gICAgICAgICAgICAgICAgPC9HcmlkPlxyXG4gICAgICAgICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPVwib3BjaW9uLXRleHRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgZGViZS1sZWVyPXtjYXNpbGxlcm8ubGVlcj8nU0knOmNhc2lsbGVyby5sZWVyPT09ZmFsc2U/J05PJzpwcm9wcy5sZWVyPydTSSc6J05PJ30+e2JyZWFrZWFibGVUZXh0KGNhc2lsbGVyby5ub21icmUpfTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgICAgICB7Y2FzaWxsZXJvLmFjbGFyYWNpb24/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT0nYWNsYXJhY2lvbic+e2JyZWFrZWFibGVUZXh0KGNhc2lsbGVyby5hY2xhcmFjaW9uKX08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICAgICAgOm51bGx9XHJcbiAgICAgICAgICAgICAgICA8L0dyaWQ+XHJcbiAgICAgICAgICAgIDwvR3JpZD5cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICA8U2FsdG9EZXNwbGllZ3VlIGNhc2lsbGVybz17Y2FzaWxsZXJvfS8+XHJcbiAgICA8L0dyaWQ+XHJcbn1cclxuaW50ZXJmYWNlIEljYXNpbGxlcm9Db25PcGNpb25lc3tcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGUsXHJcbiAgICBkZXNwbGllZ3VlQ29udGVuaWRvOid2ZXJ0aWNhbCd8J2hvcml6b250YWwnfG51bGwsXHJcbiAgICBjYXNpbGxlcm9zOk9wY2lvbltdXHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBTaU5vRGVzcGxpZWd1ZShwcm9wczp7Y2FzaWxsZXJvQ29uT3BjaW9uZXM6SWNhc2lsbGVyb0Nvbk9wY2lvbmVzLCBmb3JQazpGb3JQaywgZGVzcGxpZWd1ZUNvbnRlbmlkbzondmVydGljYWwnfCdob3Jpem9udGFsJ30pe1xyXG4gICAgcmV0dXJuIDxPcGNpb25lc0Rlc3BsaWVndWUgXHJcbiAgICAgICAgY2FzaWxsZXJvQ29uT3BjaW9uZXM9e3Byb3BzLmNhc2lsbGVyb0Nvbk9wY2lvbmVzfSBcclxuICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9IFxyXG4gICAgICAgIGxlZXI9e2ZhbHNlfVxyXG4gICAgICAgIGRlc3BsaWVndWVDb250ZW5pZG89e3Byb3BzLmRlc3BsaWVndWVDb250ZW5pZG99XHJcbiAgICAvPlxyXG59XHJcblxyXG5mdW5jdGlvbiByZWdpc3RyYWRvckRlVmFyaWFibGUocHJlZ3VudGE6UHJlZ3VudGF8T3BjaW9uTXVsdGlwbGV8Q29uanVudG9QcmVndW50YXMpe1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICByZXNwdWVzdGFzOlJlc3B1ZXN0YXMsIGZlZWRiYWNrRm9ybTogRm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj4sIGVsZW1lbnRvOkhUTUxEaXZFbGVtZW50XHJcbiAgICApPT57XHJcbiAgICAgICAgdmFyIHZhbG9yQWN0dWFsID0gcHJlZ3VudGEudmFyX25hbWUgPT0gbnVsbCA/IG51bGwgOiByZXNwdWVzdGFzW3ByZWd1bnRhLnZhcl9uYW1lXTtcclxuICAgICAgICB2YXIgZmVlZGJhY2tSb3cgPSBmZWVkYmFja0Zvcm0uZmVlZGJhY2s7XHJcbiAgICAgICAgdmFyIGZlZWRiYWNrVmFyID0gcHJlZ3VudGEudmFyX25hbWUgPT0gbnVsbCA/IG51bGwgOiBmZWVkYmFja1Jvd1twcmVndW50YS52YXJfbmFtZV07XHJcbiAgICAgICAgdmFyIHRpZW5lVmFsb3I9dmFsb3JBY3R1YWwhPW51bGwgJiYgZmVlZGJhY2tWYXIhPW51bGw/KGZlZWRiYWNrVmFyLmNvblByb2JsZW1hPydpbnZhbGlkbyc6J3ZhbGlkbycpOidOTyc7XHJcbiAgICAgICAgdmFyIGVzdGFkbzpFc3RhZG9WYXJpYWJsZTsgXHJcbiAgICAgICAgaWYocHJlZ3VudGEudGlwb3Zhcil7XHJcbiAgICAgICAgICAgIGVzdGFkbz1mZWVkYmFja1Zhcj8uZXN0YWRvITtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdmFyIGZlZWRiYWNrTXVsdGkgPSBwcmVndW50YS5jYXNpbGxlcm9zLmZpbHRlcihjPT5jLnZhcl9uYW1lIT1udWxsKS5yZWR1Y2UoKHB2LCBvbSk9PntcclxuICAgICAgICAgICAgICAgIHZhciBmYj1mZWVkYmFja1Jvdz8uW29tLnZhcl9uYW1lIV0hXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpZW5lQWN0dWFsOiBwdi50aWVuZUFjdHVhbCB8fCBmYi5lc3RhZG89PSdhY3R1YWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzdGFTYWx0ZWFkYTogcHYuZXN0YVNhbHRlYWRhICYmIChmYi5lc3RhZG89PSdzYWx0ZWFkYScgfHwgZmIuZXN0YWRvPT0nZnVlcmFfZGVfZmx1am9fcG9yX3NhbHRvJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwge3RpZW5lQWN0dWFsOmZhbHNlLCBlc3RhU2FsdGVhZGE6dHJ1ZX0pO1xyXG4gICAgICAgICAgICBlc3RhZG89ZmVlZGJhY2tNdWx0aS50aWVuZUFjdHVhbD8nYWN0dWFsJzpmZWVkYmFja011bHRpLmVzdGFTYWx0ZWFkYT8nc2FsdGVhZGEnOid0b2RhdmlhX25vJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRBdHRyRGlzdGludG8oZWxlbWVudG8sICdudWVzdHJvLXZhbGlkYXRvcicsIGVzdGFkbyk7XHJcbiAgICAgICAgc2V0QXR0ckRpc3RpbnRvKGVsZW1lbnRvLCAndGllbmUtdmFsb3InLCB0aWVuZVZhbG9yKTtcclxuICAgICAgICBzZXRBdHRyRGlzdGludG8oZWxlbWVudG8sICdlc3RhLWluaGFiaWxpdGFkYScsIGZlZWRiYWNrVmFyPy5pbmhhYmlsaXRhZGE/J1NJJzonTk8nKTtcclxuICAgICAgICBpZihwcmVndW50YS52YXJfbmFtZSl7XHJcbiAgICAgICAgICAgIHZhciBvcGNpb25lczpIVE1MQnV0dG9uRWxlbWVudFtdID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZWxlbWVudG8ucXVlcnlTZWxlY3RvckFsbChgLmJvdG9uLW9wY2lvblttaS12YXJpYWJsZT1cIiR7cHJlZ3VudGEudmFyX25hbWV9XCJdYCksMCk7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50b09wY2lvbjpIVE1MQnV0dG9uRWxlbWVudDtcclxuICAgICAgICAgICAgZm9yKGVsZW1lbnRvT3BjaW9uIG9mIG9wY2lvbmVzKXtcclxuICAgICAgICAgICAgICAgIHZhciB2YWxvck9wY2lvbiA9IGVsZW1lbnRvT3BjaW9uLmdldEF0dHJpYnV0ZSgndmFsb3Itb3BjaW9uJyk7XHJcbiAgICAgICAgICAgICAgICBzZXRBdHRyRGlzdGludG8oZWxlbWVudG9PcGNpb24sICdvcGNpb24tc2VsZWNjaW9uYWRhJywgdmFsb3JPcGNpb24gPT0gdmFsb3JBY3R1YWwgPyBcIlNJXCI6IFwiTk9cIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZWxlbWVudG9zSW5wdXQ6SFRNTElucHV0RWxlbWVudFtdID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZWxlbWVudG8ucXVlcnlTZWxlY3RvckFsbCgnLnZhcmlhYmxlJykpO1xyXG4gICAgICAgICAgICB2YXIgZWxlbWVudG9JbnB1dDpIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgICAgICBmb3IoZWxlbWVudG9JbnB1dCBvZiBlbGVtZW50b3NJbnB1dCl7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWxvckRpc3RpbnRvKGVsZW1lbnRvSW5wdXQsICd2YWx1ZScsIHZhbG9yQWN0dWFsID09IG51bGwgPyAnJyA6IHZhbG9yQWN0dWFsLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBib3Rvbk5zTmMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5zbmMtcHJlZ3VudGEtXCIrcHJlZ3VudGEudmFyX25hbWUpITtcclxuICAgICAgICAgICAgc2V0QXR0ckRpc3RpbnRvKGJvdG9uTnNOYywgJ29wY2lvbi1zZWxlY2Npb25hZGEnLCB2YWxvckFjdHVhbCA9PSAocHJlZ3VudGEudmFsb3JfbnNfbmMgPz8gLTkpID8gXCJTSVwiIDogXCJOT1wiKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gT3BjaW9uTXVsdGlwbGVEZXNwbGllZ3VlKHByb3BzOntvcGNpb25NOk9wY2lvbk11bHRpcGxlLCBmb3JQazpGb3JQa30pe1xyXG4gICAgY29uc3Qge29wY2lvbk19ID0gcHJvcHM7XHJcbiAgICB2YXIgaWQgPSBgb3BjaW9uTS0ke29wY2lvbk0uaWRfY2FzaWxsZXJvfWA7XHJcbiAgICByZWdpc3RyYXJFbGVtZW50byh7XHJcbiAgICAgICAgaWQsIFxyXG4gICAgICAgIGRpcmVjdDp0cnVlLCBcclxuICAgICAgICBmdW46IHJlZ2lzdHJhZG9yRGVWYXJpYWJsZShvcGNpb25NKVxyXG4gICAgfSlcclxuICAgIHJldHVybiA8RGVzcGxlZ2FyQ2FzaWxsZXJvIFxyXG4gICAgICAgIGlkPXtpZH1cclxuICAgICAgICBjYXNpbGxlcm89e29wY2lvbk19XHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG89J2xhdGVyYWwnXHJcbiAgICA+XHJcbiAgICAgICAgPEVuY2FiZXphZG9EZXNwbGllZ3VlIFxyXG4gICAgICAgICAgICBjYXNpbGxlcm89e29wY2lvbk19IFxyXG4gICAgICAgICAgICB2ZXJJZEd1aW9uPXt0cnVlfSBcclxuICAgICAgICAgICAgbGVlcj17b3BjaW9uTS5sZWVyIT09ZmFsc2V9IFxyXG4gICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9XHJcbiAgICAgICAgLz5cclxuICAgICAgICA8U2lOb0Rlc3BsaWVndWUgXHJcbiAgICAgICAgICAgIGNhc2lsbGVyb0Nvbk9wY2lvbmVzPXtvcGNpb25NfSBcclxuICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfVxyXG4gICAgICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvPXtwcm9wcy5vcGNpb25NLmRlc3BsaWVndWVDb250ZW5pZG8/Pydob3Jpem9udGFsJ31cclxuICAgICAgICAvPlxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+XHJcbn1cclxuXHJcbnR5cGUgQ2FzaWxsZXJvRW5jYWJlemFibGUgPSBGb3JtdWxhcmlvfEJsb3F1ZXxGaWx0cm98Q29uanVudG9QcmVndW50YXN8UHJlZ3VudGF8T3BjaW9uTXVsdGlwbGV8UHJlZ3VudGFTaW1wbGV8Q29uc2lzdGVuY2lhfFRleHRvXHJcblxyXG5mdW5jdGlvbiBFbmNhYmV6YWRvRGVzcGxpZWd1ZShwcm9wczp7Y2FzaWxsZXJvOkNhc2lsbGVyb0VuY2FiZXphYmxlLCB2ZXJJZEd1aW9uPzpib29sZWFuLCBsZWVyPzpib29sZWFuLCBmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIHtjYXNpbGxlcm8sIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGNvbkNhbXBvT3BjaW9uZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+c3RhdGUub3BjaW9uZXMuY29uQ2FtcG9PcGNpb25lcylcclxuICAgIHZhciBoYW5kbGVDbGlja0JvcnJhcj0oKT0+e1xyXG4gICAgICAgIGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9yZWdpc3RyYXJfcmVzcHVlc3RhLCB7cmVzcHVlc3RhOm51bGwsIHZhcmlhYmxlOmNhc2lsbGVyby52YXJfbmFtZSBhcyBJZFZhcmlhYmxlLCBmb3JQazpmb3JQa30pXHJcbiAgICB9O1xyXG4gICAgdmFyIHZlcl9pZCA9IGNhc2lsbGVyby52ZXJfaWQgPz8gY2FzaWxsZXJvLmNhc2lsbGVybztcclxuICAgIC8vIEB0cy1pZ25vcmUgbm8gZXN0w6EgZW4gdG9kb3MgbG9zIGNhc2lsbGVyb3MgcGVybyBhY8OhIHBhcmEgZWwgZGVzcGxpZWd1ZSBkZSBtZXRhZGF0b3Mgbm8gaW1wb3J0YVxyXG4gICAgdmFyIGNhbGN1bGFkYSA9IGNhc2lsbGVyby5jYWxjdWxhZGE7XHJcbiAgICB2YXIgaWQgPSBgaWQtZGl2LSR7Y2FzaWxsZXJvLnZhcl9uYW1lfHxjYXNpbGxlcm8uY2FzaWxsZXJvfWA7XHJcbiAgICB2YXIgaWRBY2Npb25lcyA9IFwiYWNjaW9uZXMtXCIraWQ7XHJcbiAgICByZXR1cm4gPGRpdiBcclxuICAgICAgICBjbGFzc05hbWU9XCJlbmNhYmV6YWRvXCIgXHJcbiAgICAgICAgZGViZS1sZWVyPXtwcm9wcy5sZWVyPydTSSc6J05PJ30gXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdiBpZD17aWR9IGNsYXNzTmFtZT1cImlkLWRpdlwiIHRpdGxlPXtgJHtjYXNpbGxlcm8uY2FzaWxsZXJvfSAtICR7Y2FzaWxsZXJvLnZhcl9uYW1lfWB9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRBY2Npb25lcyk7XHJcbiAgICAgICAgICAgICAgICBkaXYhLnNldEF0dHJpYnV0ZShcImFjY2lvbi12aXNpYmxlXCIsICgxLU51bWJlcihkaXYhLmdldEF0dHJpYnV0ZShcImFjY2lvbi12aXNpYmxlXCIpKSkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPLiBWZXIgcXXDqSBoYWNlbW9zIGN1YW5kbyBzZSB0b2NhIGVsIElEIGRlIGxhIHByZWd1dG5hXHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25faWRfcHJlZ3VudGEsIHtwcmVndW50YTogY2FzaWxsZXJvLmNhc2lsbGVybyBhcyBJZFByZWd1bnRhLCBmb3JQa30pO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpZFwiPlxyXG4gICAgICAgICAgICAgICAge3Zlcl9pZH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHsoY2FzaWxsZXJvLnRpcG92YXI9PVwic2lfbm9cInx8Y2FzaWxsZXJvLnRpcG92YXI9PVwib3BjaW9uZXNcIik/PENhbXBvIGRpc2FibGVkPXtmYWxzZX0gcHJlZ3VudGE9e2Nhc2lsbGVyb30gZm9yUGs9e2ZvclBrfSBtaW5pPXt0cnVlfSBoaWRkZW49eyFjb25DYW1wb09wY2lvbmVzICYmICdxdWl0YXInfS8+Om51bGx9XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWNjaW9uZXMtcHJlZ3VudGFcIiBpZD17aWRBY2Npb25lc30gYWNjaW9uLXZpc2libGU9XCIwXCI+XHJcbiAgICAgICAgICAgICAgICB7Y2FzaWxsZXJvLnZhcl9uYW1lPzxkaXY+PEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGlkPXtcImJvcnJhci1wcmVndW50YS1cIitjYXNpbGxlcm8udmFyX25hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgbWktdmFyaWFibGU9e2Nhc2lsbGVyby52YXJfbmFtZX1cclxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvdG9uLXByZWd1bnRhLWJvcnJhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2tCb3JyYXJ9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPElDT04uRGVsZXRlRm9yZXZlci8+XHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj48L2Rpdj46bnVsbH1cclxuICAgICAgICAgICAgICAgIHtjYXNpbGxlcm8udmFyX25hbWU/PGRpdj48QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9e1wibnNuYy1wcmVndW50YS1cIitjYXNpbGxlcm8udmFyX25hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgbWktdmFyaWFibGU9e2Nhc2lsbGVyby52YXJfbmFtZX1cclxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvdG9uLXByZWd1bnRhLW5zbmNcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9yZWdpc3RyYXJfcmVzcHVlc3RhLCB7cmVzcHVlc3RhOmNhc2lsbGVyby52YWxvcl9uc19uYz8/LTksIHZhcmlhYmxlOmNhc2lsbGVyby52YXJfbmFtZSBhcyBJZFZhcmlhYmxlLCBmb3JQazpmb3JQa30pXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBOUy9OQ1xyXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+PC9kaXY+Om51bGx9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9tYnJlLWRpdlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vbWJyZVwiPnticmVha2VhYmxlVGV4dChjYXNpbGxlcm8ubm9tYnJlKX08L2Rpdj5cclxuICAgICAgICAgICAge2Nhc2lsbGVyby5hY2xhcmFjaW9uP1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhY2xhcmFjaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge2Nhc2lsbGVyby5zYWx0byAmJiBjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8U2FsdG9EZXNwbGllZ3VlIGNhc2lsbGVybz17Y2FzaWxsZXJvfSBwcmVmaWpvPXticmVha2VhYmxlVGV4dChjYXNpbGxlcm8uYWNsYXJhY2lvbil9Lz5cclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrZWFibGVUZXh0KGNhc2lsbGVyby5hY2xhcmFjaW9uKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDpudWxsfVxyXG4gICAgICAgICAgICA8ZGl2IGxvcy1tZXRhZGF0b3M9XCJzaVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gZWwtbWV0YWRhdG89XCJ2YXJpYWJsZVwiPntjYXNpbGxlcm8udmFyX25hbWV9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge2Nhc2lsbGVyby50aXBvdmFyICYmIGNhc2lsbGVyby50aXBvdmFyIT0nb3BjaW9uZXMnICYmIGNhc2lsbGVyby50aXBvdmFyIT0nc2lfbm8nP1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGVsLW1ldGFkYXRvPVwidGlwb3ZhclwiPntjYXNpbGxlcm8udGlwb3Zhcn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA6bnVsbH1cclxuICAgICAgICAgICAgICAgIHsgICAvL0B0cy1pZ25vcmUgdW5hIG9wY2nDs24gbcO6bHRpcGxlIG51bmNhIGxvIGEgYSBzZXIsIG5vIHRpZW5lIGVsIGNhbXBvLCBubyBpbXBvcnRhXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLm9wdGF0aXZvPzxzcGFuIGVsLW1ldGFkYXRvPVwib3B0YXRpdmFcIj5vcHRhdGl2YTwvc3Bhbj46bnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAge2NhbGN1bGFkYT88c3BhbiBlbC1tZXRhZGF0bz1cImNhbGN1bGFkYVwiPmNhbGN1bGFkYTwvc3Bhbj46bnVsbH1cclxuICAgICAgICAgICAgICAgIHtjYXNpbGxlcm8uZGVzcGxpZWd1ZU9jdWx0YT88c3BhbiBlbC1tZXRhZGF0bz1cIm9jdWx0YVwiPm9jdWx0YTwvc3Bhbj46bnVsbH1cclxuICAgICAgICAgICAgICAgIHtjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhcj88c3BhbiBlbC1tZXRhZGF0bz1cImV4cHJlc2lvbl9oYWJpbGl0YXJcIj5oYWJpbGl0YToge2Nhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyfTwvc3Bhbj46bnVsbH1cclxuICAgICAgICAgICAgICAgIHsgICAvL0B0cy1pZ25vcmUgYWx0dW5vcyBjYXNpbGxlcm9zIG5vIHRpZW5lbiBlc3BlY2lhbCwgbm8gaW1wb3J0YSwgZXMgc29sbyBwYXJhIHBvbmVyIGxvcyBtZXRhZGF0b3NcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8uZXNwZWNpYWw/LmF1dG9pbmc/PHNwYW4gZWwtbWV0YWRhdG89XCJleHByZXNpb25fYXV0b2luZ1wiPmF1dG9pbmc6IHtjYXNpbGxlcm8uZXNwZWNpYWw/LmF1dG9pbmd9PC9zcGFuPjpudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIERlc3BsZWdhckNvbmZpcm1hckJvcnJhclJlc3B1ZXN0YShwcm9wczp7Zm9yUGs6Rm9yUGssIHZhcmlhYmxlQm9ycmFyOklkVmFyaWFibGV9KXtcclxuICAgIHZhciBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZSghIXByb3BzLnZhcmlhYmxlQm9ycmFyKVxyXG4gICAgdmFyIGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xyXG4gICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLkNPTkZJUk1BUl9CT1JSQVJfUkVTUFVFU1RBKHtmb3JQazpwcm9wcy5mb3JQaywgdmFyaWFibGU6bnVsbH0pKTtcclxuICAgICAgICBzZXRPcGVuKGZhbHNlKTtcclxuICAgIH1cclxuICAgIHJldHVybiA8UG9wb3ZlclxyXG4gICAgICAgICAgICBpZD17XCJwb3BvdmVyLWNvbmZpcm1hclwifVxyXG4gICAgICAgICAgICBvcGVuPXtvcGVufVxyXG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZX1cclxuICAgICAgICAgICAgYW5jaG9yT3JpZ2luPXt7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luPXt7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsOiAnbGVmdCcsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgPiAgIFxyXG4gICAgICAgICAgICA8VHlwb2dyYXBoeT5MYSBwcmVndW50YSB0aWVuZSByZWdpc3RyYWRhIHVuYSByZXNwdWVzdGEgcXVlIG5vIGZ1ZSBkZXRlY3RhZGEgY29tbyBlcnLDs25lYTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb25maXJtYS1ib3RvbmVzXCI+XHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgdmFyaWFudD1cIm91dGxpbmVkXCIgb25DbGljaz17KCk9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihwcm9wcy52YXJpYWJsZUJvcnJhcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9yZWdpc3RyYXJfcmVzcHVlc3RhLCB7Zm9yUGs6cHJvcHMuZm9yUGssIHZhcmlhYmxlOnByb3BzLnZhcmlhYmxlQm9ycmFyLCByZXNwdWVzdGE6bnVsbH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9fT5ib3JyYXIgcmVzcHVlc3RhPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT52b2x2ZXIgc2luIGJvcnJhcjwvQnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L1BvcG92ZXI+O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxjdWxhck51ZXN0cmFMb25naXR1ZChsb25naXR1ZDpzdHJpbmcgfG51bGwpe1xyXG4gICAgcmV0dXJuIGxvbmdpdHVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmZvY2FyRWxlbWVudG9EZVZhcmlhYmxlKHNpZ3VpZW50ZVZhcmlhYmxlOklkVmFyaWFibGV8SWRGaW4pe1xyXG4gICAgZGViZVNhbHRhciA9IGZhbHNlO1xyXG4gICAgdmFyIHt0b3AsIGVuZm9jYWRvLCBlbGVtZW50b0lucHV0VmFyaWFibGV9ID0gY2FsY3VsYXJFbGVtZW50b0VuZm9jYWRvKHNpZ3VpZW50ZVZhcmlhYmxlKTtcclxuICAgIGlmKHRvcCAhPSBudWxsICYmIHRvcD4wICYmICFlbmZvY2Fkbyl7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHt0b3AsIGxlZnQ6MCwgYmVoYXZpb3I6J3Ntb290aCd9KTtcclxuICAgIH1cclxuICAgIGVsZW1lbnRvSW5wdXRWYXJpYWJsZT8uZm9jdXMoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gQ2FtcG8ocHJvcHM6e2Rpc2FibGVkOmJvb2xlYW4sIHByZWd1bnRhOlByZWd1bnRhU2ltcGxlfFByZWd1bnRhQ29uT3BjaW9uZXN8UHJlZ3VudGFDb25TaU5vfE9wY2lvbk11bHRpcGxlLCBmb3JQazpGb3JQaywgbWluaT86Ym9vbGVhbiwgaGlkZGVuPzpib29sZWFufCdxdWl0YXInfSl7XHJcbiAgICB2YXIge3ByZWd1bnRhLCBkaXNhYmxlZCwgbWluaSB9ID0gcHJvcHM7XHJcbiAgICB2YXIge3NhbHRvQXV0b21hdGljbywgY29uQ2FtcG9PcGNpb25lc30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+c3RhdGUub3BjaW9uZXMpO1xyXG4gICAgY29uc3QgbG9uZ2l0dWQgPSBtaW5pID8gcHJlZ3VudGEuY2FzaWxsZXJvcy5yZWR1Y2UoKGFjdW0sIG8pPT5NYXRoLm1heChvLmNhc2lsbGVyby50b1N0cmluZygpLmxlbmd0aCwgYWN1bSksIDApIDogXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBtaW5pIGVzIHBhcmEgbG9zIG90cm9zXHJcbiAgICAgICAgcHJlZ3VudGEubG9uZ2l0dWQ7XHJcbiAgICAvLyB2YXIgW3ZhbG9yLCBzZXRWYWxvcl0gPSB1c2VTdGF0ZShwcm9wcy52YWxvcik7XHJcbiAgICB2YXIgW2VkaXRhbmRvLCBzZXRFZGl0YW5kb10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICAvLyB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgLy8gICAgIHNldFZhbG9yKHByb3BzLnZhbG9yKVxyXG4gICAgLy8gfSwgW3Byb3BzLnZhbG9yXSk7XHJcbiAgICBjb25zdCBpbnB1dFByb3BzID0ge1xyXG4gICAgICAgIG1heExlbmd0aDogbG9uZ2l0dWQsXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb25DaGFuZ2U9KG51ZXZvVmFsb3I6VmFsb3J8dHlwZW9mIE5PX0NBTUJJQVJfX1ZFUklGSUNBUl9TSV9FU19ORUNFU0FSSU8pPT57XHJcbiAgICAgICAgdmFyIHtzaWd1aWVudGVWYXJpYWJsZX0gPSBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSwge2ZvclBrOnByb3BzLmZvclBrLCB2YXJpYWJsZTpwcmVndW50YS52YXJfbmFtZSwgcmVzcHVlc3RhOm51ZXZvVmFsb3J9KTtcclxuICAgICAgICBpZihzaWd1aWVudGVWYXJpYWJsZSAmJiBkZWJlU2FsdGFyKXtcclxuICAgICAgICAgICAgZW5mb2NhckVsZW1lbnRvRGVWYXJpYWJsZShzaWd1aWVudGVWYXJpYWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZhciBudWVzdHJhTG9uZ2l0dWQgPSBjYWxjdWxhck51ZXN0cmFMb25naXR1ZChsb25naXR1ZClcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNhbXBvXCIgbnVlc3RyYS1sb25naXR1ZD17bnVlc3RyYUxvbmdpdHVkfSBzdHlsZT17cHJvcHMuaGlkZGVuPT0ncXVpdGFyJz97ZGlzcGxheTonbm9uZSd9OnByb3BzLmhpZGRlbj97dmlzaWJpbGl0eTonaGlkZGVuJ306dW5kZWZpbmVkfT5cclxuICAgICAgICB7bWluaT9udWxsOjxCb3RvbkJvcnJhclxyXG4gICAgICAgICAgICBpZD17YGJvcnJhci1hYmllcnRhLSR7cHJlZ3VudGEudmFyX25hbWV9YH1cclxuICAgICAgICAgICAgdmFyaWFibGU9e3ByZWd1bnRhLnZhcl9uYW1lfVxyXG4gICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9XHJcbiAgICAgICAgLz59XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbnB1dC1jYW1wb1wiPlxyXG4gICAgICAgICAgICA8VGV4dEZpZWxkIFxyXG4gICAgICAgICAgICAgICAgaWQ9e2B2YXItJHtwcmVndW50YS52YXJfbmFtZX1gfVxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmFyaWFibGVcIiBcclxuICAgICAgICAgICAgICAgIC8vdmFyLWxlbmd0aD17cHJlZ3VudGEubG9uZ2l0dWR9IFxyXG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17aW5wdXRQcm9wc31cclxuICAgICAgICAgICAgICAgIHR5cGU9e3ByZWd1bnRhLmRlc3BsaWVndWVUaXBvSW5wdXQ/P2FkYXB0YXJUaXBvVmFyQ2FzaWxsZXJvKHByZWd1bnRhLnRpcG92YXIpfVxyXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZlbnQ6S2V5Ym9hcmRFdmVudCk9PntcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXNFbnRlciA9IChldmVudC5rZXkgPT0gJ0VudGVyJyB8fCBldmVudC5rZXlDb2RlID09IDEzKVxyXG4gICAgICAgICAgICAgICAgICAgIGRlYmVTYWx0YXIgPSBlc0VudGVyICYmIChzYWx0b0F1dG9tYXRpY28gfHwgY29uQ2FtcG9PcGNpb25lcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZXNFbnRlcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC5ibHVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgb25Gb2N1cz17KF9ldmVudCk9PnNldEVkaXRhbmRvKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgb25CbHVyPXsoZXZlbnQsIHZhbG9yKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGV2ZW50Py5yZWxhdGVkVGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2JvdG9uLWNvbmZpcm1hcicpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGViZVNhbHRhciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbG9yKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRFZGl0YW5kbyhmYWxzZSlcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge2Rpc2FibGVkIHx8IG1pbmk/bnVsbDpcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3Rvbi1jb25maXJtYXItY2FtcG9cIj5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD17ZWRpdGFuZG8/XCJjb250YWluZWRcIjonb3V0bGluZWQnfSBzaXplPVwic21hbGxcIiBjb2xvcj17ZWRpdGFuZG8/J3ByaW1hcnknOidkZWZhdWx0J31cclxuICAgICAgICAgICAgICAgICAgICBib3Rvbi1jb25maXJtYXI9e3ByZWd1bnRhLnZhcl9uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShOT19DQU1CSUFSX19WRVJJRklDQVJfU0lfRVNfTkVDRVNBUklPKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGFuZG8oZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID48SUNPTi5DaGVjay8+PC9CdXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG59XHJcblxyXG5pbnRlcmZhY2UgSWNhc2lsbGVyb0Nvbk9wY2lvbmVze1xyXG4gICAgdmFyX25hbWU6SWRWYXJpYWJsZSxcclxuICAgIGNhc2lsbGVyb3M6T3BjaW9uW11cclxufVxyXG5cclxuZnVuY3Rpb24gT3BjaW9uZXNEZXNwbGllZ3VlKFxyXG4gICAge2Nhc2lsbGVyb0Nvbk9wY2lvbmVzLCBmb3JQaywgIGxlZXIsIGRlc3BsaWVndWVDb250ZW5pZG99OlxyXG4gICAge2Nhc2lsbGVyb0Nvbk9wY2lvbmVzOkljYXNpbGxlcm9Db25PcGNpb25lcywgZm9yUGs6Rm9yUGssIGxlZXI6Ym9vbGVhbiwgZGVzcGxpZWd1ZUNvbnRlbmlkbzondmVydGljYWwnfCdob3Jpem9udGFsJ31cclxuKXtcclxuICAgIGNvbnN0IGRlc3BsZWdhck90cm9zID0gKG9wY2lvbjpPcGNpb24sIHNvbG9QYXJhRGVzcGxpZWd1ZTondmVydGljYWwnfCdob3Jpem9udGFsJ3xudWxsKSA9PiBvcGNpb24uY2FzaWxsZXJvcy5tYXAoKHN1YlByZWd1bnRhOlByZWd1bnRhKT0+KFxyXG4gICAgICAgIHNvbG9QYXJhRGVzcGxpZWd1ZSA9PSBudWxsIHx8IHNvbG9QYXJhRGVzcGxpZWd1ZSA9PSBzdWJQcmVndW50YS5kZXNwbGllZ3VlQ29udGVuaWRvID9cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm90cm9zLWVzcGVjaWZpY2FyXCIga2V5PXtzdWJQcmVndW50YS5pZF9jYXNpbGxlcm99PlxyXG4gICAgICAgICAgICA8UHJlZ3VudGFEZXNwbGllZ3VlIFxyXG4gICAgICAgICAgICAgICAgcHJlZ3VudGE9e3N1YlByZWd1bnRhfSBcclxuICAgICAgICAgICAgICAgIGZvclBrPXtmb3JQa30gXHJcbiAgICAgICAgICAgICAgICBkZXNwbGllZ3VlRW5jYWJlemFkbz0nc3VwZXJpb3InXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+Om51bGxcclxuICAgICkpXHJcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjb250ZW5pZG9cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvcGNpb25lc1wiIGRlc3BsaWVndWUtY29udGVuaWRvPXtkZXNwbGllZ3VlQ29udGVuaWRvPz8ndmVydGljYWwnfT5cclxuICAgICAgICAgICAge2Nhc2lsbGVyb0Nvbk9wY2lvbmVzLmNhc2lsbGVyb3MubWFwKChvcGNpb246T3BjaW9uLCBpOm51bWJlcik9PlxyXG4gICAgICAgICAgICAgICAgPEdyaWQga2V5PXtvcGNpb24uaWRfY2FzaWxsZXJvfSBpdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgb2N1bHRhci1zYWx0ZWFkYT17b3BjaW9uLmRlc3BsaWVndWVPY3VsdGE/KG9wY2lvbi5leHByZXNpb25faGFiaWxpdGFyX2pzPydJTkhBQklMSVRBUic6J1NJJyk6J05PJ31cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8T3BjaW9uRGVzcGxpZWd1ZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvPXtvcGNpb259IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZT17Y2FzaWxsZXJvQ29uT3BjaW9uZXMudmFyX25hbWV9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxvck9wY2lvbj17b3BjaW9uLmNhc2lsbGVyb31cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yUGs9e2ZvclBrfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVlcj17bGVlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uQm90b25Cb3JyYXI9e2k9PTAgfHwgZGVzcGxpZWd1ZUNvbnRlbmlkbyE9J2hvcml6b250YWwnfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAge2Rlc3BsaWVndWVDb250ZW5pZG89PSdob3Jpem9udGFsJz9udWxsOmRlc3BsZWdhck90cm9zKG9wY2lvbixudWxsKX1cclxuICAgICAgICAgICAgICAgIDwvR3JpZD5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7ZGVzcGxpZWd1ZUNvbnRlbmlkbz09J2hvcml6b250YWwnP2Nhc2lsbGVyb0Nvbk9wY2lvbmVzLmNhc2lsbGVyb3MubWFwKChvcGNpb246T3BjaW9uKT0+XHJcbiAgICAgICAgICAgIGRlc3BsZWdhck90cm9zKG9wY2lvbixudWxsKVxyXG4gICAgICAgICk6bnVsbH1cclxuICAgIDwvZGl2PlxyXG59XHJcblxyXG5jb25zdCBub21icmVDYXNpbGxlcm89e1xyXG4gICAgRjogJ2Zvcm11bGFyaW8nLFxyXG4gICAgQjogJ2Jsb3F1ZScsXHJcbiAgICBQOiAncHJlZ3VudGEnLFxyXG4gICAgQ1A6ICdjb25qdW50b3ByZWd1bnRhcycsXHJcbiAgICBPOiAnb3BjaW9uJyxcclxuICAgIE9NOiAnbXVsdGlwbGUnLFxyXG4gICAgRklMVFJPOiAnZmlsdHJvJyxcclxuICAgIENPTlM6ICdjb25zaXN0ZW5jaWEnLFxyXG4gICAgQkY6ICdib3RvbmZvcm11bGFyaW8nLFxyXG4gICAgVEVYVE86ICdhY2xhcmFjaW9uc3VwZXJpb3InLFxyXG59XHJcblxyXG5mdW5jdGlvbiBEZXNwbGVnYXJDYXNpbGxlcm8ocHJvcHM6e1xyXG4gICAgY2FzaWxsZXJvOlByZWd1bnRhfEJsb3F1ZXxGaWx0cm98Q29uanVudG9QcmVndW50YXN8Qm90b25Gb3JtdWxhcmlvfENvbnNpc3RlbmNpYXxPcGNpb25NdWx0aXBsZXxUZXh0byxcclxuICAgIGlkPzpzdHJpbmcsXHJcbiAgICBzdHlsZT86UmVhY3QuQ1NTUHJvcGVydGllcyxcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvPzonbGF0ZXJhbCd8J3N1cGVyaW9yJ1xyXG4gICAgY2hpbGRyZW46UmVhY3QuUmVhY3ROb2RlfEVsZW1lbnRbXSxcclxuICAgIFwib2N1bHRhci1zYWx0ZWFkYVwiPzpib29sZWFuXHJcbn0pe1xyXG4gICAgcmV0dXJuIDxkaXYgXHJcbiAgICAgICAga2V5PXtgJHtwcm9wcy5jYXNpbGxlcm8udGlwb2N9LSR7cHJvcHMuaWR8fHByb3BzLmNhc2lsbGVyby5pZF9jYXNpbGxlcm99YH1cclxuICAgICAgICBjbGFzc05hbWU9e2BjYXNpbGxlcm8gJHtub21icmVDYXNpbGxlcm9bcHJvcHMuY2FzaWxsZXJvLnRpcG9jXX1gfVxyXG4gICAgICAgIGlkPXtwcm9wcy5pZH1cclxuICAgICAgICBzdHlsZT17cHJvcHMuc3R5bGV9XHJcbiAgICAgICAgZGVzcGxpZWd1ZS1lbmNhYmV6YWRvPXtwcm9wcy5jYXNpbGxlcm8uZGVzcGxpZWd1ZUVuY2FiZXphZG8/P3Byb3BzLmRlc3BsaWVndWVFbmNhYmV6YWRvPz8nc3VwZXJpb3InfVxyXG4gICAgICAgIG9jdWx0YXItc2FsdGVhZGE9e3Byb3BzW1wib2N1bHRhci1zYWx0ZWFkYVwiXX1cclxuICAgID57cHJvcHMuY2hpbGRyZW59PC9kaXY+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFByZWd1bnRhRGVzcGxpZWd1ZShwcm9wczp7XHJcbiAgICBwcmVndW50YTpQcmVndW50YSwgXHJcbiAgICBmb3JQazpGb3JQaywgXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzonbGF0ZXJhbCd8J3N1cGVyaW9yJ1xyXG59KXtcclxuICAgIHZhciB7cHJlZ3VudGF9ID0gcHJvcHM7XHJcbiAgICB2YXIgZGlzcGF0Y2g9dXNlRGlzcGF0Y2goKTtcclxuICAgIHZhciBlc3RhZG86RXN0YWRvVmFyaWFibGU7XHJcbiAgICB2YXIgaWQgPSBgcHJlZ3VudGEtJHtwcmVndW50YS5pZF9jYXNpbGxlcm99YFxyXG4gICAgcmVnaXN0cmFyRWxlbWVudG8oe1xyXG4gICAgICAgIGlkLCBcclxuICAgICAgICBkaXJlY3Q6dHJ1ZSwgXHJcbiAgICAgICAgZnVuOiByZWdpc3RyYWRvckRlVmFyaWFibGUocHJlZ3VudGEpXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIDxEZXNwbGVnYXJDYXNpbGxlcm9cclxuICAgICAgICBpZD17aWR9XHJcbiAgICAgICAgY2FzaWxsZXJvPXtwcmVndW50YX1cclxuICAgICAgICBudWVzdHJvLXRpcG92YXI9e3ByZWd1bnRhLnRpcG92YXJ8fFwibXVsdGlwbGVcIn0gXHJcbiAgICAgICAgb2N1bHRhci1zYWx0ZWFkYT17cHJlZ3VudGEuZGVzcGxpZWd1ZU9jdWx0YT8ocHJlZ3VudGEuZXhwcmVzaW9uX2hhYmlsaXRhcl9qcz8nSU5IQUJJTElUQVInOidTSScpOidOTyd9XHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG89e3Byb3BzLmRlc3BsaWVndWVFbmNhYmV6YWRvfVxyXG4gICAgPlxyXG4gICAgICAgIDxFbmNhYmV6YWRvRGVzcGxpZWd1ZSBcclxuICAgICAgICAgICAgY2FzaWxsZXJvPXtwcmVndW50YX0gXHJcbiAgICAgICAgICAgIGxlZXI9e3ByZWd1bnRhLmxlZXIhPT1mYWxzZX0gIFxyXG4gICAgICAgICAgICBmb3JQaz17cHJvcHMuZm9yUGt9XHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbmlkb1wiPntcclxuICAgICAgICAgICAgcHJlZ3VudGEudGlwb3Zhcj09XCJzaV9ub1wiPzxHcmlkIGNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxTaU5vRGVzcGxpZWd1ZSBcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm9Db25PcGNpb25lcz17cHJlZ3VudGF9IFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa30gXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbz17cHJvcHMucHJlZ3VudGEuZGVzcGxpZWd1ZUNvbnRlbmlkbz8/J3ZlcnRpY2FsJ31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvR3JpZD46XHJcbiAgICAgICAgICAgIHByZWd1bnRhLnRpcG92YXI9PVwib3BjaW9uZXNcIiA/XHJcbiAgICAgICAgICAgICAgICA8T3BjaW9uZXNEZXNwbGllZ3VlIFxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb0Nvbk9wY2lvbmVzPXtwcmVndW50YX0gXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfSBcclxuICAgICAgICAgICAgICAgICAgICBsZWVyPXshIXByZWd1bnRhLmxlZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbz17cHJlZ3VudGEuZGVzcGxpZWd1ZUNvbnRlbmlkbz8/J3ZlcnRpY2FsJ31cclxuICAgICAgICAgICAgICAgIC8+OlxyXG4gICAgICAgICAgICBwcmVndW50YS50aXBvdmFyPT1udWxsP1xyXG4gICAgICAgICAgICAgICAgKHByZWd1bnRhLmNhc2lsbGVyb3MgYXMgKE9wY2lvbk11bHRpcGxlfENvbnNpc3RlbmNpYSlbXSkubWFwKChvcGNpb25NdWx0aXBsZSk9PlxyXG4gICAgICAgICAgICAgICAgICAgIG9wY2lvbk11bHRpcGxlLnRpcG9jPT0nT00nPyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPE9wY2lvbk11bHRpcGxlRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcGNpb25NdWx0aXBsZS5pZF9jYXNpbGxlcm99IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uTT17b3BjaW9uTXVsdGlwbGV9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA6IC8vbGFzIGNvbnNpc3RlbmNpYXMgcHVlZGVuIHNlciBoZXJtYW5hcyBkZSBPTVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29uc2lzdGVuY2lhRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcGNpb25NdWx0aXBsZS5pZF9jYXNpbGxlcm99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm89e29wY2lvbk11bHRpcGxlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yUGs9e3Byb3BzLmZvclBrfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPiAgICBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAoKHByZWd1bnRhU2ltcGxlOlByZWd1bnRhU2ltcGxlKT0+XHJcbiAgICAgICAgICAgICAgICA8Q2FtcG9cclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cHJlZ3VudGFTaW1wbGUuY2FsY3VsYWRhP3RydWU6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgcHJlZ3VudGE9e3ByZWd1bnRhU2ltcGxlfVxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrPXtwcm9wcy5mb3JQa31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICkocHJlZ3VudGEpXHJcbiAgICAgICAgfTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGllLXByZWd1bnRhXCI+XHJcbiAgICAgICAgICAgIDxTYWx0b0Rlc3BsaWVndWUgXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm89e3ByZWd1bnRhfVxyXG4gICAgICAgICAgICAgICAgcHJlZmlqbz17cHJlZ3VudGEudGlwb3Zhcj09XCJvcGNpb25lc1wiPyhcclxuICAgICAgICAgICAgICAgICAgICBwcmVndW50YS5jYXNpbGxlcm9zLnNvbWUob3BjaW9uPT5vcGNpb24uc2FsdG8pP1wicmVzdG8gZGUgbGFzIG9wY2lvbmVzXCI6XCJ0b2RhcyBsYXMgb3BjaW9uZXNcIlxyXG4gICAgICAgICAgICAgICAgKTpcIlwifVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+XHJcbn1cclxuXHJcbnZhciBjYWxjdWxhckRpc2FibGVkQkZBZ3JlZ2FyTGlzdG8gPSAoY29uZmlnU29ydGVvRm9ybXVsYXJpbzpDb25maWd1cmFjaW9uU29ydGVvRm9ybXVsYXJpb3xudWxsLCBmb3JtdWxhcmlvOklkRm9ybXVsYXJpbyk9PlxyXG4gICAgISEoY29uZmlnU29ydGVvRm9ybXVsYXJpbyAmJiBjb25maWdTb3J0ZW9Gb3JtdWxhcmlvLmlkX2Zvcm11bGFyaW9faW5kaXZpZHVhbCA9PSBmb3JtdWxhcmlvKVxyXG5cclxuZnVuY3Rpb24gYm90b25lc0RlbEZvcm11bGFyaW8ocjpSZXNwdWVzdGFzLCB1bmlkYWRfYW5hbGlzaXM6SWRVbmlkYWRBbmFsaXNpcywgZXN0cnVjdHVyYTpFc3RydWN0dXJhLCBmb3JQa1BhZHJlOkZvclBrLCBmZWVkYmFja0FsbDp7W2Zvcm11bGFyaW8gaW4gUGxhaW5Gb3JQa106Rm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj59KTpIdG1sVGFnPEhUTUxEaXZFbGVtZW50PntcclxuICAgIHZhciBmb3Jtc1ZpdmllbmRhID0gZ2V0Rm9ybXVsYXJpb3NGb3JJZFZpdmllbmRhKGZvclBrUGFkcmUudml2aWVuZGEhKTtcclxuICAgIHZhciB1YURlZiA9IGVzdHJ1Y3R1cmEudW5pZGFkZXNfYW5hbGlzaXNbdW5pZGFkX2FuYWxpc2lzXTtcclxuICAgIHZhciBhcnJheUVzdHJ1Y3R1cmFGb3JtdWxhcmlvcyA9IChsaWtlQXIoZXN0cnVjdHVyYS5mb3JtdWxhcmlvcykpLmFycmF5KCk7XHJcbiAgICB2YXIgeCA9IGxpa2VBcih1YURlZi5oaWphcykuZmlsdGVyKHVhSGlqYT0+XHJcbiAgICAgICAgICAgIGZvcm1zVml2aWVuZGEuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICBhcnJheUVzdHJ1Y3R1cmFGb3JtdWxhcmlvcy5maW5kKChpbmZvRm9ybXVsYXJpbyk9PlxyXG4gICAgICAgICAgICAgICAgICAgIGluZm9Gb3JtdWxhcmlvLmNhc2lsbGVyb3MudW5pZGFkX2FuYWxpc2lzID09IHVhSGlqYT8udW5pZGFkX2FuYWxpc2lzKVxyXG4gICAgICAgICAgICAgICAgPy5jYXNpbGxlcm9zLmlkX2Nhc2lsbGVybyBhcyBJZEZvcm11bGFyaW9cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICkubWFwKHVhSGlqYT0+KFxyXG4gICAgICAgIHVhSGlqYSA9PSBudWxsID8gbnVsbCA6XHJcbiAgICAgICAgaHRtbC5kaXYoe2NsYXNzOid1YS1oaWphcyd9LFtcclxuICAgICAgICAgICAgaHRtbC5kaXYodWFIaWphLnVuaWRhZF9hbmFsaXNpcyksXHJcbiAgICAgICAgICAgIGh0bWwuZGl2KFxyXG4gICAgICAgICAgICAgICAgbGlrZUFyKHJbdWFIaWphLnVuaWRhZF9hbmFsaXNpc118fFtdKS5tYXAoKHJlc3B1ZXN0YXNIaWphLCBpKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBudW0gPSBOdW1iZXIoaSkrMVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3JQa0hpamFQYXJjaWFsID0gey4uLmZvclBrUGFkcmUsIFt1YUhpamEucGtfYWdyZWdhZGFdOiBudW19O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb25maWdTb3J0ZW9Gb3JtdWxhcmlvID0gZXN0cnVjdHVyYS5jb25maWdTb3J0ZW8/ZXN0cnVjdHVyYS5jb25maWdTb3J0ZW9bZ2V0TWFpbkZvcm1Gb3JWaXZpZW5kYShmb3JQa1BhZHJlLnZpdmllbmRhISldOm51bGxcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbC5kaXYoe2NsYXNzOidudW1lcmFkb3ItdWEnfSwgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J2JvdG9uZXMtdWEnfSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J251bWVyby11YSd9LG51bS50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxpa2VBcihlc3RydWN0dXJhLmZvcm11bGFyaW9zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmb3JtRGVmPT5mb3JtRGVmLmNhc2lsbGVyb3MudW5pZGFkX2FuYWxpc2lzID09IHVhSGlqYS51bmlkYWRfYW5hbGlzaXMgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoX2Zvcm1EZWYsIGZvcm11bGFyaW8pPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvclBrID0gey4uLmZvclBrSGlqYVBhcmNpYWwsIGZvcm11bGFyaW99O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmZWVkYmFja0Zvcm0gPSBmZWVkYmFja0FsbFt0b1BsYWluRm9yUGsoZm9yUGspXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmVlZGJhY2tGb3JtID8gaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBodG1sLmJ1dHRvbigodWFIaWphISkucGtfYWdyZWdhZGErXCIgb2s6IFwiKyhOdW1iZXIoaSkrMSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RvbkZvcm11bGFyaW9Db25SZXN1bWVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvclBrLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdHJ1ZSB8fCBjYWxjdWxhckFjdHVhbEJGKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8sIG51bSwgbnVsbCwgZm9ybXVsYXJpbywgciksIC8vUkVWSVNBUiB0cnVlIHBhcmEgcXVlIG5vIHNlIGdyaXNlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpbzpmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNhbGN1bGFyRGlzYWJsZWRCRihjb25maWdTb3J0ZW9Gb3JtdWxhcmlvLCBudW0sIGZvcm11bGFyaW8sIHIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2tGb3JtLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGVzcGxpZWd1ZU9jdWx0YTpmYWxzZSwgZXhwcmVzaW9uX2hhYmlsaXRhcl9qczonJywgbm9tYnJlOmZvcm11bGFyaW8sIGFjbGFyYWNpb246bnVsbCwgc2FsdG86Zm9ybXVsYXJpb30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQa1BhZHJlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJib3Rvbi1pci1yZXN1bWVuLWZvcm11bGFyaW9cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3NbZm9ybXVsYXJpb10uY2FzaWxsZXJvc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5hcnJheSgpLm1hcCh4PT54ID09IG51bGwgPyBudWxsIDogeCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICxib3RvbmVzRGVsRm9ybXVsYXJpbyhyZXNwdWVzdGFzSGlqYSwgdWFIaWphLnVuaWRhZF9hbmFsaXNpcywgZXN0cnVjdHVyYSwgZm9yUGtIaWphUGFyY2lhbCwgZmVlZGJhY2tBbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIH0pLmFycmF5KCkubWFwKHg9PnggPT0gbnVsbCA/IG51bGwgOiB4KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICkpLmFycmF5KCkubWFwKHg9PnggPT0gbnVsbCA/IG51bGwgOiB4KTtcclxuICAgIHJldHVybiBodG1sLmRpdigvKntzdHlsZTonZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3cnfSwqL3gpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBUZXh0b0Rlc3BsaWVndWUocHJvcHM6e2Nhc2lsbGVybzpUZXh0bywgZm9yUGs6Rm9yUGt9KXtcclxuICAgIHZhciB7Y2FzaWxsZXJvLCBmb3JQa30gPSBwcm9wcztcclxuICAgIHZhciBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB2YXIgaGFiaWxpdGFkb3IgPSBjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhcl9qcz9nZXRGdW5jaW9uSGFiaWxpdGFyKGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzKTooKT0+dHJ1ZTtcclxuICAgIHZhciB7bW9kb0Rlc3BsaWVndWV9ID0gdXNlU2VsZWN0b3JWaXZpZW5kYShmb3JQayk7XHJcbiAgICB2YXIgaWQgPSBgdGV4dG8tJHtjYXNpbGxlcm8uaWRfY2FzaWxsZXJvfWA7XHJcbiAgICByZWdpc3RyYXJFbGVtZW50byh7aWQsIHN0eWxlOidkaXNwbGF5JywgZnVuOihyOlJlc3B1ZXN0YXMpPT5oYWJpbGl0YWRvcihyKSB8fCBtb2RvRGVzcGxpZWd1ZT09J21ldGFkYXRvcyc/J2Jsb2NrJzonbm9uZSd9KVxyXG4gICAgdmFyIGVzUmVzdW1lbkZvcm11bGFyaW8gPSBjYXNpbGxlcm8uY2FzaWxsZXJvPT0nUmVzRm9yJyBhcyBJZENhc2lsbGVybzsgLy8gVE9ETzogQ2FtYmlhIGVzdG8gcXVlIGVzdMOhIGphcmNvZGVhZG8uXHJcbiAgICBpZihlc1Jlc3VtZW5Gb3JtdWxhcmlvKXtcclxuICAgICAgICByZWdpc3RyYXJFbGVtZW50byh7aWQsIGRpcmVjdDp0cnVlLCBcclxuICAgICAgICAgICAgZnVuOihcclxuICAgICAgICAgICAgICAgIHI6UmVzcHVlc3RhcywgXHJcbiAgICAgICAgICAgICAgICBfZmVlZGJhY2tGb3JtOiBGb3JtU3RydWN0dXJlU3RhdGU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPiwgXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50bzpIVE1MRGl2RWxlbWVudCwgXHJcbiAgICAgICAgICAgICAgICBmZWVkYmFja0FsbDp7W2Zvcm11bGFyaW8gaW4gUGxhaW5Gb3JQa106Rm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsVmFsb3IsIElkRmluPn0sIFxyXG4gICAgICAgICAgICAgICAgZXN0cnVjdHVyYTpFc3RydWN0dXJhXHJcbiAgICAgICAgICAgICk9PntcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRvLnN0eWxlLmRpc3BsYXk9Jyc7XHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmUgbGFzIHJlc3B1ZXN0YXMgc29uIHJlc3B1ZXN0YXNSYWl6IHBvcnF1ZSBSZXNGb3IgZXN0w6EgZW4gZWwgZm9ybSBwcGFsXHJcbiAgICAgICAgICAgICAgICBpZihyWydyZXN1bWVuRXN0YWRvJ10gYXMgUmVzdW1lbkVzdGFkbyA9PSAndmFjaW8nKXtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50by50ZXh0Q29udGVudCA9IFwicmVsZXZhbWllbnRvIHNpbiBlbXBlemFyXCI7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50by50ZXh0Q29udGVudCA9IFwicmVsZXZhbWllbnRvIGVtcGV6YWRvXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHt1bmlkYWRfYW5hbGlzaXN9ID0gZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1tmb3JQay5mb3JtdWxhcmlvXS5jYXNpbGxlcm9zO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvLmlubmVySFRNTD1cIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvLmFwcGVuZENoaWxkKGJvdG9uZXNEZWxGb3JtdWxhcmlvKHIsIHVuaWRhZF9hbmFsaXNpcywgZXN0cnVjdHVyYSwgZm9yUGssIGZlZWRiYWNrQWxsKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgdmFyIGlyID0gKGRlZkJvdG9uOkRlZmluaWNpb25Gb3JtdWxhcmlvQWJyaXIpPT57XHJcbiAgICAgICAgLy8gdmFyIG51ZXZhRm9yUGs9ey4uLmZvclBrLCBmb3JtdWxhcmlvOmlkRm9ybXVsYXJpb0Rlc3Rpbm99O1xyXG4gICAgICAgIC8vIG51ZXZhRm9yUGtbbnVldm9DYW1wb1BrXSA9IGRlZkJvdG9uLm51bVxyXG4gICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLkNBTUJJQVJfRk9STVVMQVJJTyh7Zm9yUGs6ZGVmQm90b24uZm9yUGssIGFwaWxhclZ1ZWx0YTp0cnVlfSkpO1xyXG4gICAgICAgIGRpc3BhdGNoQnlQYXNzKGFjY2lvbl9hYnJpcl9mb3JtdWxhcmlvLHtmb3JQazpkZWZCb3Rvbi5mb3JQa30pXHJcbiAgICB9XHJcbiAgICByZXR1cm4gPERlc3BsZWdhckNhc2lsbGVybyBcclxuICAgICAgICBpZD17YCR7aWR9LWV4dGVybm9gfVxyXG4gICAgICAgIGNhc2lsbGVybz17Y2FzaWxsZXJvfVxyXG4gICAgPlxyXG4gICAgICAgIDxFbmNhYmV6YWRvRGVzcGxpZWd1ZSBjYXNpbGxlcm89e2Nhc2lsbGVyb30gbGVlcj17ZmFsc2V9IGZvclBrPXtmb3JQa30vPlxyXG4gICAgICAgIDxkaXYgaWQ9e2lkfSBzdHlsZT17e2Rpc3BsYXk6J25vbmUnfX0+PC9kaXY+XHJcbiAgICAgICAge2VzUmVzdW1lbkZvcm11bGFyaW8/XHJcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJzcGVjaWFsLWJ1dHRvblwiIGlkPVwiYm90b24taXItcmVzdW1lbi1mb3JtdWxhcmlvXCIgc3R5bGU9e3tkaXNwbGF5Oidub25lJ319XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhldmVudCk9PntcclxuICAgICAgICAgICAgICAgIGlyKEpTT04ucGFyc2UoKGV2ZW50LnRhcmdldCEgYXMgdW5rbm93biBhcyBIVE1MQnV0dG9uRWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkZWYtYnV0dG9uJykhKSlcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICA+aXIgKGludGVybm8pPC9CdXR0b24+XHJcbiAgICAgICAgOm51bGx9XHJcblxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIEZpbHRyb0Rlc3BsaWVndWUocHJvcHM6e2ZpbHRybzpGaWx0cm8sIGZvclBrOkZvclBrfSl7XHJcbiAgICB2YXIge2ZpbHRyb30gPSBwcm9wcztcclxuICAgIHJldHVybiA8RGVzcGxlZ2FyQ2FzaWxsZXJvIGNhc2lsbGVybz17ZmlsdHJvfT5cclxuICAgICAgICA8RGVzcGxpZWd1ZUVuY2FiZXphZG8gY2FzaWxsZXJvPXtmaWx0cm99Lz5cclxuICAgIDwvRGVzcGxlZ2FyQ2FzaWxsZXJvPlxyXG59XHJcblxyXG5mdW5jdGlvbiBDb25zaXN0ZW5jaWFEZXNwbGllZ3VlKHByb3BzOntjYXNpbGxlcm86Q29uc2lzdGVuY2lhLCBmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIHtjYXNpbGxlcm8sIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGhhYmlsaXRhZG9yID0gY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanM/Z2V0RnVuY2lvbkhhYmlsaXRhcihjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhcl9qcyk6KCk9PnRydWU7XHJcbiAgICB2YXIge21vZG9EZXNwbGllZ3VlfSA9IHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGspO1xyXG4gICAgdmFyIGlkID0gYGNvbnNpc3RlbmNpYS0ke2Nhc2lsbGVyby5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtpZCwgc3R5bGU6J2Rpc3BsYXknLCBmdW46KHI6UmVzcHVlc3Rhcyk9PmhhYmlsaXRhZG9yKHIpIHx8IG1vZG9EZXNwbGllZ3VlPT0nbWV0YWRhdG9zJz8nYmxvY2snOidub25lJ30pXHJcbiAgICByZXR1cm4gPERlc3BsZWdhckNhc2lsbGVybyBcclxuICAgICAgICBpZD17aWR9XHJcbiAgICAgICAgY2FzaWxsZXJvPXtjYXNpbGxlcm99XHJcbiAgICAgICAgc3R5bGU9e3tkaXNwbGF5Oidub25lJ319XHJcbiAgICA+XHJcbiAgICAgICAgPEVuY2FiZXphZG9EZXNwbGllZ3VlIGNhc2lsbGVybz17Y2FzaWxsZXJvfSBsZWVyPXtmYWxzZX0gZm9yUGs9e2ZvclBrfS8+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz5cclxufVxyXG5cclxudHlwZSBEZWZpbmljaW9uRm9ybXVsYXJpb0FicmlyPVxyXG4oe2ZvclBrOkZvclBrLCBudW06bnVtYmVyLCBhY3R1YWw6Ym9vbGVhbiwgcHJldmlvOmJvb2xlYW59IHwgXHJcbntmb3JQazpGb3JQaywgbnVtOm51bWJlciwgYWN0dWFsOmJvb2xlYW4sIHByZXZpbzpmYWxzZSwgZXNBZ3JlZ2FyOnRydWV9IHwgXHJcbntmb3JQazpGb3JQaywgbnVtOm51bWJlciwgYWN0dWFsOmJvb2xlYW4sIHByZXZpbzpmYWxzZSwgZXNDb25maXJtYXI6dHJ1ZX0gfFxyXG57Zm9yUGs6Rm9yUGssIG51bTpudW1iZXIsIGFjdHVhbDpib29sZWFuLCBwcmV2aW86ZmFsc2UsIHBlcm1pdGVCb3JyYXI6Ym9vbGVhbn0gfFxyXG57Zm9yUGs6Rm9yUGssIG51bTpmYWxzZSwgYWN0dWFsOmJvb2xlYW4sIHByZXZpbzp0cnVlLCB1bmljbzp0cnVlfSlcclxuJiB7ZXNDb25maXJtYXI/OnRydWUsIGVzQWdyZWdhcj86dHJ1ZSwgcGVybWl0ZUJvcnJhcj86Ym9vbGVhbiwgZGlzYWJsZWQ/OmJvb2xlYW58dW5kZWZpbmVkfTtcclxuXHJcblxyXG52YXIgYm90b25Gb3JtdWxhcmlvQ29uUmVzdW1lbiA9IChcclxuICAgIGRlZkJvdG9uOkRlZmluaWNpb25Gb3JtdWxhcmlvQWJyaXIsIFxyXG4gICAgZmVlZGJhY2tGb3JtOkZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+LCBcclxuICAgIHJlc3B1ZXN0YXNBdW1lbnRhZGFzOlJlc3B1ZXN0YXMsXHJcbiAgICBjYXNpbGxlcm86e2Rlc3BsaWVndWVPY3VsdGE/OmJvb2xlYW58bnVsbCwgZXhwcmVzaW9uX2hhYmlsaXRhcl9qcz86c3RyaW5nLCBhY2xhcmFjaW9uOnN0cmluZ3xudWxsLCBleHByZXNpb25faGFiaWxpdGFyPzpzdHJpbmcsIG5vbWJyZT86c3RyaW5nLCBzYWx0bzpzdHJpbmd8bnVsbCwgZXNwZWNpYWw/OmFueX0sXHJcbiAgICBmb3JQa1BhZHJlOiBGb3JQayxcclxuICAgIGlkQnV0dG9uOnN0cmluZyxcclxuICAgIGZvcm11bGFyaW9BQWJyaXI6Rm9ybXVsYXJpb1xyXG4pPT57XHJcbiAgICB2YXIgZm9yUGs6Rm9yUGsgPSBkZWZCb3Rvbi5mb3JQaztcclxuICAgIHZhciBzdWZpam9JZEVsZW1lbnRvID0gdG9QbGFpbkZvclBrKGZvclBrKSsoZGVmQm90b24uZXNDb25maXJtYXI/Jy1saXN0byc6JycpO1xyXG4gICAgdmFyIGlkID0gYGRpdi1ib3Rvbi1mb3JtdWxhcmlvLSR7c3VmaWpvSWRFbGVtZW50b31gO1xyXG4gICAgdmFyIGVzdGFkbyA9IGZlZWRiYWNrRm9ybS5yZXN1bWVuO1xyXG4gICAgcmV0dXJuIGh0bWwuZGl2KHtcclxuICAgICAgICBpZCwgXHJcbiAgICAgICAgY2xhc3M6XCJzZWNjaW9uLWJvdG9uLWZvcm11bGFyaW9cIiAsIFxyXG4gICAgICAgICRhdHRyczp7XHJcbiAgICAgICAgICAgIFwibnVlc3Ryby12YWxpZGF0b3JcIjpkZWZCb3Rvbi5hY3R1YWw/J2FjdHVhbCc6ZGVmQm90b24ucHJldmlvPyd2YWxpZGEnOid0b2RhdmlhX25vJyxcclxuICAgICAgICAgICAgXCJvY3VsdGFyLXNhbHRlYWRhXCI6Y2FzaWxsZXJvLmRlc3BsaWVndWVPY3VsdGE/KGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzPydJTkhBQklMSVRBUic6J1NJJyk6J05PJyxcclxuICAgICAgICAgICAgXCJ0aWVuZS12YWxvclwiOlwiTk9cIixcclxuICAgICAgICAgICAgXCJkZWYtYnV0dG9uXCI6SlNPTi5zdHJpbmdpZnkoZGVmQm90b24pXHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGNhc2lsbGVyby5hY2xhcmFjaW9uIHx8IGh0bWwuZGl2KHtjbGFzczpcImFjbGFyYWNpb25cIn0sIFticmVha2VhYmxlVGV4dChjYXNpbGxlcm8uYWNsYXJhY2lvbik/P251bGxdKSxcclxuICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgIEJ1dHRvbjIoe1xyXG4gICAgICAgICAgICAgICAgLy8gaWQ6YHZhci0ke2lkVmFyaWFibGV9YCxcclxuICAgICAgICAgICAgICAgIGlkOmBib3Rvbi1mb3JtdWxhcmlvLSR7c3VmaWpvSWRFbGVtZW50b31gLCBcclxuICAgICAgICAgICAgICAgIHZhcmlhbnQ6XCJvdXRsaW5lZFwiLFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGRlZkJvdG9uLmRpc2FibGVkLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6XCJpbmhlcml0XCIsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrOigpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGVmQm90b24uZXNDb25maXJtYXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkZWZCb3Rvbi5udW0gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSx7Zm9yUGs6Zm9yUGtQYWRyZSwgdmFyaWFibGU6Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXIgYXMgSWRWYXJpYWJsZSwgcmVzcHVlc3RhOmRlZkJvdG9uLm51bSBhcyBWYWxvcn0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZEJ1dHRvbikhIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdkZWYtYnV0dG9uJywgSlNPTi5zdHJpbmdpZnkoZGVmQm90b24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICRhdHRyczp7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZXN1bWVuLWVzdGFkb1wiOmVzdGFkbyE9J3ZhY2lvJz9lc3RhZG86IGRlZkJvdG9uLmFjdHVhbD8nYWN0dWFsJzpkZWZCb3Rvbi5wcmV2aW8/ZXN0YWRvOid0b2RhdmlhX25vJyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICwgY2hpbGRyZW46W1xyXG4gICAgICAgICAgICAgICAgICAgIChkZWZCb3Rvbi5lc0FncmVnYXI/J2FncmVnYXInOmRlZkJvdG9uLmVzQ29uZmlybWFyPydMaXN0byc6Y2FzaWxsZXJvLm5vbWJyZSArICcgJyArIChkZWZCb3Rvbi5udW18fCcnKSksXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5zdmcoe2NsYXNzOlwiTXVpU3ZnSWNvbi1yb290XCIsIGZvY3VzYWJsZTpmYWxzZSwgdmlld2JveDpcIjAgMCAyNCAyNFwiLCBcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5wYXRoKHtkOihkZWZCb3Rvbi5lc0FncmVnYXI/bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5BZGQ6ZGVmQm90b24uZXNDb25maXJtYXI/bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5DaGVjazpjYXNpbGxlcm8uc2FsdG8/bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5Gb3J3YXJkOm1hdGVyaWFsSW9JY29uc1N2Z1BhdGguRXhpdFRvQXBwKX0pXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIChkZWZCb3Rvbi5wZXJtaXRlQm9ycmFyP1xyXG4gICAgICAgICAgICAgICAgQnV0dG9uMih7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOlwiYm90b24tYm9ycmFyLXVhLXZhY2lhXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6XCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudDpcIm91dGxpbmVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuc3ZnKHtjbGFzczpcIk11aVN2Z0ljb24tcm9vdFwiLCBmb2N1c2FibGU6ZmFsc2UsIHZpZXdib3g6XCIwIDAgMjQgMjRcIiwgXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLnBhdGgoe2Q6bWF0ZXJpYWxJb0ljb25zU3ZnUGF0aC5EZWxldGVGb3JldmVyfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSksIFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6KCk9PmFjY2lvbl9ib3JyYXJfZm9ybXVsYXJpbyh7Zm9yUGssIGZvclBrUGFkcmV9KX0pXHJcbiAgICAgICAgICAgIDpudWxsKSxcclxuICAgICAgICAgICAgKGRlZkJvdG9uLm51bSAhPT0gZmFsc2UgJiYgIWRlZkJvdG9uLmVzQWdyZWdhciAmJiAhZGVmQm90b24uZXNDb25maXJtYXI/XHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oKGNhc2lsbGVyby5lc3BlY2lhbD8uY2FtcG9zUmVzdW1lbj8/W2RlZkJvdG9uLm51bS50b1N0cmluZygpXSkubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChjYW1wbzpzdHJpbmcpPT5yZXNwdWVzdGFzQXVtZW50YWRhc1tmb3JtdWxhcmlvQUFicmlyLnVuaWRhZF9hbmFsaXNpc11bZGVmQm90b24ubnVtLTFdW2NhbXBvIGFzIElkVmFyaWFibGVdXHJcbiAgICAgICAgICAgICAgICApLmpvaW4oJywgJykgKVxyXG4gICAgICAgICAgICA6bnVsbClcclxuICAgICAgICAgICAgLy8gaHRtbC5kaXYoe2NsYXNzOidpbmxpbmUtZGlhbG9nJywgJGF0dHJzOntcImlubGluZS1kaWFsb2ctb3BlblwiOiBjb25maXJtYXJGb3J6YXJJciA9PSBkZWZCb3Rvbi5udW0/J3Zpc2libGUnOidoaWRkZW4nfX0sWyAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgIF0pXHJcbiAgICAgICAgLypcclxuICAgICAgICAgICAge2RlZkJvdG9uLmVzQWdyZWdhcj88PiA8c3Bhbj4gIDwvc3Bhbj4gPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwiaW5oZXJpdFwiXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPjxJQ09OLkNoZWNrLz48L0J1dHRvbj48Lz46bnVsbH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAqL1xyXG4gICAgXSkuY3JlYXRlKClcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIEJvdG9uRm9ybXVsYXJpb0Rlc3BsaWVndWUocHJvcHM6e2Nhc2lsbGVybzpCb3RvbkZvcm11bGFyaW8sIGZvcm11bGFyaW86Rm9ybXVsYXJpbywgZm9yUGs6Rm9yUGt9KXtcclxuICAgIHZhciB7Y2FzaWxsZXJvLCBmb3JQa30gPSBwcm9wcztcclxuICAgIHZhciBoYWJpbGl0YWRvciA9IGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzP2dldEZ1bmNpb25IYWJpbGl0YXIoY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMpOigpPT50cnVlO1xyXG4gICAgdmFyIHtvcGNpb25lc30gPSB1c2VTZWxlY3RvclZpdmllbmRhKGZvclBrKTtcclxuICAgIC8vdmFyIGlkRm9ybXVsYXJpb0Rlc3Rpbm8gPSAnRjonK2Nhc2lsbGVyby5zYWx0byEgYXMgSWRGb3JtdWxhcmlvOyAgIC8vb3JpZ2luYWxcclxuICAgIHZhciBhcm1vTm9tU2FsdG89Y2FzaWxsZXJvLnNhbHRvIS5zdWJzdHIoMCwyKT09J0Y6Jz9jYXNpbGxlcm8uc2FsdG8uc2xpY2UoMik6Y2FzaWxsZXJvLnNhbHRvO1xyXG4gICAgLy9jb25zb2xlLmxvZygnQm90b25Gb3JtdWxhcmlvRGVzcGxpZWd1ZSBhcm1vTm9tU2FsdG8gJyArYXJtb05vbVNhbHRvKTtcclxuICAgIHZhciBpZEZvcm11bGFyaW9EZXN0aW5vID0gJ0Y6Jythcm1vTm9tU2FsdG8hIGFzIElkRm9ybXVsYXJpbztcclxuICAgIHZhciBlc3RydWN0dXJhID0gZ2V0RXN0cnVjdHVyYSgpO1xyXG4gICAgdmFyIHtmb3JtdWxhcmlvQUFicmlyfSA9IHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT4oe1xyXG4gICAgICAgIGZvcm11bGFyaW9BQWJyaXI6ZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1tpZEZvcm11bGFyaW9EZXN0aW5vXS5jYXNpbGxlcm9zLFxyXG4gICAgfSkpO1xyXG4gICAgdmFyIHN1Zmlqb0lkRWxlbWVudG8gPSB0b1BsYWluRm9yUGsoZm9yUGspO1xyXG4gICAgLypcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZDpgZGl2LWJvdG9uLWZvcm11bGFyaW8tJHtzdWZpam9JZEVsZW1lbnRvfWAsIFxyXG4gICAgICAgIGF0dHI6J2VzdGEtaW5oYWJpbGl0YWRhJywgXHJcbiAgICAgICAgLy8gZnVuOiAocjpSZXNwdWVzdGFzKT0+aGFiaWxpdGFkb3Iocik/J1NJJzonTk8nXHJcbiAgICAgICAgZnVuOiAoX3I6UmVzcHVlc3Rhcyk9PidOTydcclxuICAgIH0pO1xyXG4gICAgcmVnaXN0cmFyRWxlbWVudG88SFRNTEJ1dHRvbkVsZW1lbnQ+KHtcclxuICAgICAgICBpZDpgYm90b24tZm9ybXVsYXJpby0ke3N1Zmlqb0lkRWxlbWVudG99YCwgXHJcbiAgICAgICAgcHJvcDonZGlzYWJsZWQnLCBcclxuICAgICAgICAvLyBmdW46IChyOlJlc3B1ZXN0YXMpPT4haGFiaWxpdGFkb3IocilcclxuICAgICAgICBmdW46IChfcjpSZXNwdWVzdGFzKT0+ZmFsc2VcclxuICAgIH0pO1xyXG4gICAgKi9cclxuICAgIHZhciBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB2YXIgW2NvbmZpcm1hckZvcnphcklyLCBzZXRDb25maXJtYXJGb3J6YXJJcl0gPSB1c2VTdGF0ZTxEZWZpbmljaW9uRm9ybXVsYXJpb0FicmlyfGZhbHNlfG51bGw+KG51bGwpO1xyXG4gICAgdmFyIG11bHRpcGxlRm9ybXVsYXJpb3M9Zm9ybXVsYXJpb0FBYnJpci51bmlkYWRfYW5hbGlzaXMgIT0gcHJvcHMuZm9ybXVsYXJpby51bmlkYWRfYW5hbGlzaXM7XHJcbiAgICB2YXIgbnVldm9DYW1wb1BrID0gZGVmT3BlcmF0aXZvLmRlZlVBW2Zvcm11bGFyaW9BQWJyaXIudW5pZGFkX2FuYWxpc2lzXS5waztcclxuICAgLy8gdmFyIHZhcl9uYW1lPSckQi4nK2Nhc2lsbGVyby5zYWx0bzsgLy9vcmlnaW5hbFxyXG4gICAgdmFyIHZhcl9uYW1lPSckQi5GOicrYXJtb05vbVNhbHRvO1xyXG4gICAgdmFyIGlkU2VjY2lvbj1gc2VjY2lvbi1ib3Rvbi1mb3JtdWxhcmlvLSR7dmFyX25hbWV9YDtcclxuICAgIHZhciBpZEJ1dHRvbj1gc3BlY2lhbC1idXR0b24tJHtpZFNlY2Npb259YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvPEhUTUxEaXZFbGVtZW50Pih7XHJcbiAgICAgICAgaWQ6aWRTZWNjaW9uLCBcclxuICAgICAgICBkaXJlY3Q6dHJ1ZSxcclxuICAgICAgICBmdW46IChyZXNwdWVzdGFzQXVtZW50YWRhczpSZXNwdWVzdGFzLCBmZWVkYmFja1JvdzogRm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj4sIGRpdjpIVE1MRGl2RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGZlZWRiYWNrQWxsOntcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybXVsYXJpbyBpbiBQbGFpbkZvclBrXTpGb3JtU3RydWN0dXJlU3RhdGU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPiAvLyByZXN1bHRhZG8gZGVsIHJvd1ZhbGlkYXRvciBwYXJhIGVzdGFkby5mb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApPT57XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIHZhciBsaXN0YURlQm90b25lc0FicmlyOkRlZmluaWNpb25Gb3JtdWxhcmlvQWJyaXJbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAvLyB2YXIgZXNWYXJBY3R1YWwgPSBmZWVkYmFja1Jvdy5hY3R1YWwgPT0gJyRCLkY6JytjYXNpbGxlcm8uc2FsdG87ICAvL29yaWdpbmFsXHJcbiAgICAgICAgICAgICAgICB2YXIgZXNWYXJBY3R1YWwgPSBmZWVkYmFja1Jvdy5hY3R1YWwgID09ICckQi5GOicrYXJtb05vbVNhbHRvO1xyXG4gICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQm90b25Gb3JtdWxhcmlvRGVzcGxpZWd1ZSBlc1ZhckFjdHVhbCAnICtlc1ZhckFjdHVhbCAgKTtcclxuICAgICAgICAgICAgICAgIGlmKG11bHRpcGxlRm9ybXVsYXJpb3MgJiYgY2FzaWxsZXJvLnNhbHRvIT1udWxsKXtcclxuICAgICAgICAgICAgICAgICAgLy8gIGxldCBkZWZGb3JtdWxhcmlvOkluZm9Gb3JtdWxhcmlvID0gZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1snRjonK2Nhc2lsbGVyby5zYWx0byBhcyBJZEZvcm11bGFyaW9dOyAgICAgIC8vb3JpZ2luYWxcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVmRm9ybXVsYXJpbzpJbmZvRm9ybXVsYXJpbyA9IGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3NbJ0Y6Jythcm1vTm9tU2FsdG8gYXMgSWRGb3JtdWxhcmlvXTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVmVUEgPSBlc3RydWN0dXJhLnVuaWRhZGVzX2FuYWxpc2lzW2RlZkZvcm11bGFyaW8uY2FzaWxsZXJvcy51bmlkYWRfYW5hbGlzaXMhXTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29uanVudG8gPSByZXNwdWVzdGFzQXVtZW50YWRhc1tkZWZGb3JtdWxhcmlvLmNhc2lsbGVyb3MudW5pZGFkX2FuYWxpc2lzIV07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhbnRpZGFkRXNwZXJhZGEgPSByZXNwdWVzdGFzQXVtZW50YWRhc1tjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhciBhcyBJZFZhcmlhYmxlXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbnVtQWN0dWFsOm51bWJlcnxudWxsID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgLy8gIHZhciBlc3RhZG9EZWxCb3RvbiA9IGZlZWRiYWNrUm93LmZlZWRiYWNrWyckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGVdLmVzdGFkbyAgIC8vb3JpZ2luYWxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBlc3RhZG9EZWxCb3RvbiA9IGZlZWRiYWNrUm93LmZlZWRiYWNrWyckQi5GOicrYXJtb05vbVNhbHRvIGFzIElkVmFyaWFibGVdLmVzdGFkb1xyXG4gICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0JvdG9uRm9ybXVsYXJpb0Rlc3BsaWVndWUgZXN0YWRvRGVsQm90b24gJyArZXN0YWRvRGVsQm90b24gICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8gPSBlc3RydWN0dXJhLmNvbmZpZ1NvcnRlbz9lc3RydWN0dXJhLmNvbmZpZ1NvcnRlb1tnZXRNYWluRm9ybUZvclZpdmllbmRhKGZvclBrLnZpdmllbmRhISldOm51bGxcclxuICAgICAgICAgICAgICAgICAgICBsaXN0YURlQm90b25lc0FicmlyID0gbGlrZUFyKGNvbmp1bnRvKS5tYXAoKF8sIGkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW06bnVtYmVyID0gbnVtYmVyT3JTdHJpbmdJbmNJZkFycmF5KGksIGNvbmp1bnRvKSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3JQaz17Li4ucHJvcHMuZm9yUGssIGZvcm11bGFyaW86aWRGb3JtdWxhcmlvRGVzdGlubywgW251ZXZvQ2FtcG9Qa106bnVtfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWRiYWNrID0gZmVlZGJhY2tBbGxbdG9QbGFpbkZvclBrKGZvclBrKV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG51bUFjdHVhbCA9PSBudWxsICYmIGZlZWRiYWNrLnJlc3VtZW4gPT0gXCJ2YWNpb1wiICYmIGVzdGFkb0RlbEJvdG9uID09J3ZhbGlkYScpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtQWN0dWFsID0gbnVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQaywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVuOm51bGwsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogY2FsY3VsYXJBY3R1YWxCRihjb25maWdTb3J0ZW9Gb3JtdWxhcmlvLCBudW0sIG51bUFjdHVhbCwgaWRGb3JtdWxhcmlvRGVzdGlubywgcmVzcHVlc3Rhc0F1bWVudGFkYXMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOiBudW1BY3R1YWwgPT0gbnVsbCwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXRlQm9ycmFyOiBsaWtlQXIoY29uanVudG8pLmFycmF5KCkubGVuZ3RoID09IE51bWJlcihpKSArIDEgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2sucmVzdW1lbiA9PSAndmFjaW8nICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGFyUGVybWl0ZUJvcnJhckJGKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8saWRGb3JtdWxhcmlvRGVzdGlubyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8sIG51bSwgaWRGb3JtdWxhcmlvRGVzdGlubywgcmVzcHVlc3Rhc0F1bWVudGFkYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KS5hcnJheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKFwicHVlZGUgYWdyZWdhciAvL1RPRE8gVkVSIEVTVE9cIiAmJiAoY29uanVudG8gaW5zdGFuY2VvZiBBcnJheSB8fCBjb25qdW50byA9PSBudWxsKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudWV2b1ZhbG9yUGs9KGNvbmp1bnRvPT1udWxsID8gMCA6IGNvbmp1bnRvLmxlbmd0aCkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9yUGs9ey4uLnByb3BzLmZvclBrLCBmb3JtdWxhcmlvOmlkRm9ybXVsYXJpb0Rlc3Rpbm8sIFtudWV2b0NhbXBvUGtdOm51ZXZvVmFsb3JQa307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZWJlQWdyZWdhck9saXN0byA9IG51bUFjdHVhbCA9PSBudWxsICYmIChjYW50aWRhZEVzcGVyYWRhID09IG51bGwgfHwgY2FudGlkYWRFc3BlcmFkYSAhPSAoY29uanVudG8gIT1udWxsICYmIGNvbmp1bnRvLmxlbmd0aCkpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGVzdGFkb0RlbEJvdG9uID09J3ZhbGlkYScgfHwgZXNWYXJBY3R1YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0YURlQm90b25lc0FicmlyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yUGssIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOm51ZXZvVmFsb3JQaywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc0FncmVnYXI6dHJ1ZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6ZGViZUFncmVnYXJPbGlzdG8sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGQWdyZWdhckxpc3RvKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8saWRGb3JtdWxhcmlvRGVzdGlubylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RhRGVCb3RvbmVzQWJyaXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JQaywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW06bnVldm9WYWxvclBrIC0gMSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc0NvbmZpcm1hcjp0cnVlLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDpkZWJlQWdyZWdhck9saXN0byAmJiAoIWNhc2lsbGVyby5sb25naXR1ZCB8fCBudWV2b1ZhbG9yUGsgPiBOdW1iZXIoY2FzaWxsZXJvLmxvbmdpdHVkKSksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogY2FsY3VsYXJEaXNhYmxlZEJGQWdyZWdhckxpc3RvKGNvbmZpZ1NvcnRlb0Zvcm11bGFyaW8saWRGb3JtdWxhcmlvRGVzdGlubylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvclBrPXsuLi5wcm9wcy5mb3JQaywgZm9ybXVsYXJpbzppZEZvcm11bGFyaW9EZXN0aW5vfTtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0YURlQm90b25lc0FicmlyID0gW3tmb3JQaywgbnVtOmZhbHNlLCB1bmljbzp0cnVlLCBhY3R1YWw6ZXNWYXJBY3R1YWwsIHByZXZpbzp0cnVlfV1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciB0b2Rvc0xvc0JvdG9uZXMgPSBsaXN0YURlQm90b25lc0FicmlyLm1hcChkZWZCb3Rvbj0+XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b25Gb3JtdWxhcmlvQ29uUmVzdW1lbihkZWZCb3RvbiwgZmVlZGJhY2tBbGxbdG9QbGFpbkZvclBrKGRlZkJvdG9uLmZvclBrKV0/P3tyZXN1bWVuOid2YWNpbyd9LCByZXNwdWVzdGFzQXVtZW50YWRhcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLCBwcm9wcy5mb3JQaywgaWRCdXR0b24sIGZvcm11bGFyaW9BQWJyaXJcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB2YXIgaHRtbFNlY2Npb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRTZWNjaW9uKSE7XHJcbiAgICAgICAgICAgICAgICBodG1sU2VjY2lvbi5pbm5lckhUTUw9XCJcIjtcclxuICAgICAgICAgICAgICAgIGh0bWxTZWNjaW9uLmFwcGVuZENoaWxkKGh0bWwuZGl2KHRvZG9zTG9zQm90b25lcykuY3JlYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgLy9hcnJhbmdlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkU2VjY2lvbikhLCB0b2Rvc0xvc0JvdG9uZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IHVuZXhwZWN0ZWQoZXJyKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZW50cmEgYWwgY2F0Y2hcIilcclxuICAgICAgICAgICAgICAgIGRpdi50ZXh0Q29udGVudD0nZXN0bywgRkFMTMOJICcrZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgaXIgPSAoZGVmQm90b246RGVmaW5pY2lvbkZvcm11bGFyaW9BYnJpcik9PntcclxuICAgICAgICBpZighY2FzaWxsZXJvLnNhbHRvKXtcclxuICAgICAgICAgICAgb3BjaW9uZXMubW9kb0RpcmVjdG8/XHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLlZPTFZFUl9IRFIoe30pKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdmFyIG51ZXZhRm9yUGs9ey4uLmZvclBrLCBmb3JtdWxhcmlvOmlkRm9ybXVsYXJpb0Rlc3Rpbm99O1xyXG4gICAgICAgICAgICBpZihtdWx0aXBsZUZvcm11bGFyaW9zKXtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgZm9yUGsgeSBzdXMgY29tcG9uZW50ZXNcclxuICAgICAgICAgICAgICAgIG51ZXZhRm9yUGtbbnVldm9DYW1wb1BrXSA9IGRlZkJvdG9uLm51bVxyXG4gICAgICAgICAgICAgICAgaWYoZGVmQm90b24uZXNBZ3JlZ2FyKXtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fYWdyZWdhcl9mb3JtdWxhcmlvLHtmb3JQazpudWV2YUZvclBrfSk7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fYWJyaXJfZm9ybXVsYXJpbyx7Zm9yUGs6bnVldmFGb3JQa30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLkNBTUJJQVJfRk9STVVMQVJJTyh7Zm9yUGs6bnVldmFGb3JQaywgYXBpbGFyVnVlbHRhOnRydWV9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvbmZpcm1hckZvcnphcklyKXtzZXRDb25maXJtYXJGb3J6YXJJcihmYWxzZSl9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIDxEZXNwbGVnYXJDYXNpbGxlcm8gY2FzaWxsZXJvPXtjYXNpbGxlcm99PlxyXG4gICAgICAgIDxkaXYgaWQ9e2lkU2VjY2lvbn0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJzcGVjaWFsLWJ1dHRvblwiIGlkPXtpZEJ1dHRvbn1cclxuICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KT0+e1xyXG4gICAgICAgICAgICAgICAgaXIoSlNPTi5wYXJzZSgoZXZlbnQudGFyZ2V0ISBhcyB1bmtub3duIGFzIEhUTUxCdXR0b25FbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RlZi1idXR0b24nKSEpKVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgID5pciAoaW50ZXJubyk8L0J1dHRvbj5cclxuICAgICAgICA8RGlhbG9nIFxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJudWVzdHJvLWRpYWxvZ29cIlxyXG4gICAgICAgICAgICBvcGVuPXshIWNvbmZpcm1hckZvcnphcklyfVxyXG4gICAgICAgICAgICBvbkNsb3NlPXsoKT0+c2V0Q29uZmlybWFyRm9yemFySXIobnVsbCl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm51ZXN0cm8tZGlhbG9nb1wiPlxyXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+Tm8gc2UgcHVlZGUgYXZhbnphciBhbCBzaWd1aWVudGUgZm9ybXVsYXJpby48L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5RdWl6w6FzIG5vIHRlcm1pbsOzIGRlIGNvbnRlc3RhciBsYXMgcHJlZ3VudGFzIGNvcnJlc3BvbmRpZW50ZXM8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5RdWl6w6FzIG5vIGNvcnJlc3BvbmRlIGVuIGJhc2UgYSBsYXMgcmVzcHVlc3RhcyBvYnRlbmlkYXM8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8QnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgb25DbGljaz17KCk9PmNvbmZpcm1hckZvcnphcklyICYmIGlyKGNvbmZpcm1hckZvcnphcklyKX0+Zm9yemFyPC9CdXR0b24+XHJcbiAgICAgICAgICAgIDxCdXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdmFyaWFudD1cImNvbnRhaW5lZFwiIG9uQ2xpY2s9eygpPT5zZXRDb25maXJtYXJGb3J6YXJJcihudWxsKX0+RW50ZW5kaWRvPC9CdXR0b24+XHJcbiAgICAgICAgPC9EaWFsb2c+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz5cclxufVxyXG5cclxuZnVuY3Rpb24gQ2FzaWxsZXJvRGVzY29ub2NpZG8ocHJvcHM6e2Nhc2lsbGVybzpDYXNpbGxlcm9CYXNlLCBmb3JQazpGb3JQa30pe1xyXG4gICAgcmV0dXJuIDxEZXNwbGVnYXJDYXNpbGxlcm8gXHJcbiAgICAgICAgaWQ9e2BjYXNpbGxlcm9kZXNjb25vY2lkby0ke3Byb3BzLmNhc2lsbGVyby5pZF9jYXNpbGxlcm99YH1cclxuICAgICAgICBjYXNpbGxlcm89e3Byb3BzLmNhc2lsbGVybyBhcyBCbG9xdWV9XHJcbiAgICAgICAgc3R5bGU9e3tkaXNwbGF5Oidub25lJ319XHJcbiAgICA+XHJcbiAgICAgICAgPFR5cG9ncmFwaHk+VGlwbyBkZSBjYXNpbGxlcm8gbm8gaW1wbGVtZW50YWRvOiBcIntwcm9wcy5jYXNpbGxlcm8udGlwb2N9XCIgcGFyYSBcIntwcm9wcy5jYXNpbGxlcm8uY2FzaWxsZXJvfVwiPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDxFbmNhYmV6YWRvRGVzcGxpZWd1ZSBjYXNpbGxlcm89e3Byb3BzLmNhc2lsbGVybyBhcyBDYXNpbGxlcm9FbmNhYmV6YWJsZX0gbGVlcj17ZmFsc2V9IGZvclBrPXtwcm9wcy5mb3JQa30vPlxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGs6Rm9yUGspe1xyXG4gICAgcmV0dXJuIHVzZVNlbGVjdG9yKChzdGF0ZTpDYXNvU3RhdGUpPT57XHJcbiAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZm9ybXVsYXJpbzogZXN0cnVjdHVyYS5mb3JtdWxhcmlvc1tmb3JQay5mb3JtdWxhcmlvXS5jYXNpbGxlcm9zLFxyXG4gICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTogdHJ1ZSB8fCBzdGF0ZS5tb2RvLmRlbW8/c3RhdGUub3BjaW9uZXMubW9kb0Rlc3BsaWVndWU6J3JlbGV2YW1pZW50bycsXHJcbiAgICAgICAgICAgIG1vZG86IHN0YXRlLm1vZG8sXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOiBzdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBDb25qdW50b1ByZWd1bnRhc0Rlc3BsaWVndWUocHJvcHM6e2Nhc2lsbGVybzpDb25qdW50b1ByZWd1bnRhcywgZm9ybXVsYXJpbzpGb3JtdWxhcmlvLCBmb3JQazpGb3JQa30pe1xyXG4gICAgbGV0IHtjYXNpbGxlcm8sIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGlkID0gYGNvbmp1bnRvLXByZWd1bnRhcy0ke2Nhc2lsbGVyby5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZCwgXHJcbiAgICAgICAgZGlyZWN0OnRydWUsIFxyXG4gICAgICAgIGZ1bjogcmVnaXN0cmFkb3JEZVZhcmlhYmxlKGNhc2lsbGVybylcclxuICAgIH0pXHJcbiAgICBsZXQgbW9kb0Rlc3BsaWVndWUgPSBcIm5vcm1hbFwiO1xyXG4gICAgbGV0IGhhYmlsaXRhZG8gPSB0cnVlO1xyXG4gICAgcmV0dXJuIGhhYmlsaXRhZG8gfHwgbW9kb0Rlc3BsaWVndWU9PSdtZXRhZGF0b3MnPzxEZXNwbGVnYXJDYXNpbGxlcm8gaWQ9e2lkfSBjYXNpbGxlcm89e2Nhc2lsbGVyb30+XHJcbiAgICAgICAgPEVuY2FiZXphZG9EZXNwbGllZ3VlIGNhc2lsbGVybz17Y2FzaWxsZXJvfSBmb3JQaz17Zm9yUGt9IGxlZXI9e2Nhc2lsbGVyby5sZWVyIT09ZmFsc2V9Lz5cclxuICAgICAgICA8RGVzcGxlZ2FyQ29udGVuaWRvSW50ZXJub0Jsb3F1ZU9Gb3JtdWxhcmlvIGJsb3F1ZU9Gb3JtdWxhcmlvPXtjYXNpbGxlcm99IGZvcm11bGFyaW89e3Byb3BzLmZvcm11bGFyaW99IGZvclBrPXtmb3JQa30gbXVsdGlwbGU9e2ZhbHNlfS8+XHJcbiAgICA8L0Rlc3BsZWdhckNhc2lsbGVybz46bnVsbDtcclxufVxyXG5cclxuZnVuY3Rpb24gRGVzcGxlZ2FyQ29udGVuaWRvSW50ZXJub0Jsb3F1ZU9Gb3JtdWxhcmlvKHByb3BzOntibG9xdWVPRm9ybXVsYXJpbzpCbG9xdWV8Rm9ybXVsYXJpb3xDb25qdW50b1ByZWd1bnRhcywgZm9ybXVsYXJpbzpGb3JtdWxhcmlvLCBmb3JQazpGb3JQaywgbXVsdGlwbGU6Ym9vbGVhbn0pe1xyXG4gICAgdmFyIHBhcmNpYWxpemFibGUgPSBwcm9wcy5ibG9xdWVPRm9ybXVsYXJpby50aXBvYz09J0YnO1xyXG4gICAgY29uc3QgW3ZlclRvZG8sIHNldFZlclRvZG9dID0gdXNlU3RhdGUoIXBhcmNpYWxpemFibGUpO1xyXG4gICAgY29uc3QgW2ZvclBrQWN0dWFsLCBzZXRGb3JQa0FjdHVhbF0gPSB1c2VTdGF0ZTxJZENhc2lsbGVyb3xudWxsPihudWxsKTtcclxuICAgIGlmKHBhcmNpYWxpemFibGUpe1xyXG4gICAgICAgIGlmKGZvclBrQWN0dWFsICE9IHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLmNhc2lsbGVybyl7XHJcbiAgICAgICAgICAgIHNldFZlclRvZG8oZmFsc2UpXHJcbiAgICAgICAgICAgIHNldEZvclBrQWN0dWFsKHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLmNhc2lsbGVybylcclxuICAgICAgICB9XHJcbiAgICAgICAgdXNlRWZmZWN0KCgpPT57XHJcbiAgICAgICAgICAgIHZhciB0aW1lcjpOb2RlSlMuVGltZW91dHxudWxsID0gc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgc2V0VmVyVG9kbyh0cnVlKTtcclxuICAgICAgICAgICAgfSwyNTApXHJcbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xyXG4gICAgICAgICAgICAgICAgaWYodGltZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgY29uc3QgbGltaXRlTm9WZXJUb2RvID0gMztcclxuICAgIHVzZUVmZmVjdCgoKT0+e1xyXG4gICAgICAgIGlmKHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLnRpcG9jPT0nRicpe1xyXG4gICAgICAgICAgICB2b2xjYWRvSW5pY2lhbEVsZW1lbnRvc1JlZ2lzdHJhZG9zKHByb3BzLmZvclBrKTtcclxuICAgICAgICB9XHJcbiAgICB9LFt0b1BsYWluRm9yUGsocHJvcHMuZm9yUGspLHZlclRvZG9dKVxyXG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZihwcm9wcy5ibG9xdWVPRm9ybXVsYXJpby50aXBvYz09J0YnICYmIHZlclRvZG8pe1xyXG4gICAgICAgICAgICB2YXIge3NpZ3VpZW50ZVZhcmlhYmxlLCB2YXJpYWJsZUFjdHVhbH0gPSBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSwge3Jlc3B1ZXN0YTpudWxsLCB2YXJpYWJsZTpOT19DQU1CSUFSX19TT0xPX1RSQUVSX1NUQVRVUywgZm9yUGs6cHJvcHMuZm9yUGt9KTtcclxuICAgICAgICAgICAgaWYodmFyaWFibGVBY3R1YWwgfHwgc2lndWllbnRlVmFyaWFibGUpe1xyXG4gICAgICAgICAgICAgICAgZW5mb2NhckVsZW1lbnRvRGVWYXJpYWJsZShjb2FsZXNjZSh2YXJpYWJsZUFjdHVhbCBhcyBzdHJpbmd8bnVsbCxzaWd1aWVudGVWYXJpYWJsZSBhcyBzdHJpbmd8bnVsbCkgYXMgSWRWYXJpYWJsZSlcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB2YXIgZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSBnZXRGZWVkYmFja1Jvd1ZhbGlkYXRvcigpXHJcbiAgICAgICAgICAgICAgICBpZihmZWVkYmFja1Jvd1ZhbGlkYXRvclt0b1BsYWluRm9yUGsocHJvcHMuZm9yUGspXS5yZXN1bWVuPT0nb2snKXtcclxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb1RvcCgpXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb1RvcCgpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbmlkb1wiPlxyXG4gICAgICAgIHt2ZXJUb2RvP251bGw6PGRpdiBzdHlsZT17e2hlaWdodDpcIjUwMHB4XCIsIHRleHRBbGlnbjonY2VudGVyJywgdmVydGljYWxBbGlnbjonbWlkZGxlJywgd2lkdGg6JzEwMCUnLCBwb3NpdGlvbjpcImZpeGVkXCIsIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMTAwLDEwMCwxMDAsMC4zKScsIGZvbnRTaXplOicyMDAlJ319ID5jYXJnYW5kby4uLjwvZGl2Pn1cclxuICAgICAgICB7cHJvcHMuYmxvcXVlT0Zvcm11bGFyaW8uY2FzaWxsZXJvcy5tYXAoKGNhc2lsbGVybywgaSk9PntcclxuICAgICAgICAgICAgdmFyIGtleSA9IGNhc2lsbGVyby50aXBvYysnLScrY2FzaWxsZXJvLmlkX2Nhc2lsbGVybysnLScraTtcclxuICAgICAgICAgICAgcmV0dXJuICh2ZXJUb2RvIHx8IGkgPCBsaW1pdGVOb1ZlclRvZG8/XHJcbiAgICAgICAgICAgICAgICAoXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiUFwiPzxQcmVndW50YURlc3BsaWVndWUga2V5PXtrZXl9IHByZWd1bnRhPXtjYXNpbGxlcm99IGZvclBrPXtwcm9wcy5mb3JQa30gZGVzcGxpZWd1ZUVuY2FiZXphZG89e2Nhc2lsbGVyby5kZXNwbGllZ3VlRW5jYWJlemFkbz8/KHByb3BzLmJsb3F1ZU9Gb3JtdWxhcmlvLnRpcG9jPT0nQ1AnPydsYXRlcmFsJzonc3VwZXJpb3InKX0vPjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8udGlwb2MgPT0gXCJCXCI/PEJsb3F1ZURlc3BsaWVndWUga2V5PXtrZXl9IGJsb3F1ZT17Y2FzaWxsZXJvfSBmb3JtdWxhcmlvPXtwcm9wcy5mb3JtdWxhcmlvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiRklMVFJPXCI/PEZpbHRyb0Rlc3BsaWVndWUga2V5PXtrZXl9IGZpbHRybz17Y2FzaWxsZXJvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiQkZcIj88Qm90b25Gb3JtdWxhcmlvRGVzcGxpZWd1ZSBrZXk9e2tleX0gY2FzaWxsZXJvPXtjYXNpbGxlcm99IGZvcm11bGFyaW89e3Byb3BzLmZvcm11bGFyaW99IGZvclBrPXtwcm9wcy5mb3JQa30vPjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8udGlwb2MgPT0gXCJDT05TXCI/PENvbnNpc3RlbmNpYURlc3BsaWVndWUga2V5PXtrZXl9IGNhc2lsbGVybz17Y2FzaWxsZXJvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvLnRpcG9jID09IFwiQ1BcIj88Q29uanVudG9QcmVndW50YXNEZXNwbGllZ3VlIGtleT17a2V5fSBjYXNpbGxlcm89e2Nhc2lsbGVyb30gZm9ybXVsYXJpbz17cHJvcHMuZm9ybXVsYXJpb30gZm9yUGs9e3Byb3BzLmZvclBrfS8+OlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyby50aXBvYyA9PSBcIlRFWFRPXCI/PFRleHRvRGVzcGxpZWd1ZSBrZXk9e2tleX0gY2FzaWxsZXJvPXtjYXNpbGxlcm99IGZvclBrPXtwcm9wcy5mb3JQa30vPjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm8udGlwb2MgPT0gXCJMSUJSRVwiPzxMaWJyZURlc3BsaWVndWUga2V5PXtrZXl9IGNhc2lsbGVybz17Y2FzaWxsZXJvfSBmb3JtdWxhcmlvPXtwcm9wcy5mb3JtdWxhcmlvfSBmb3JQaz17cHJvcHMuZm9yUGt9Lz46XHJcbiAgICAgICAgICAgICAgICAgICAgPENhc2lsbGVyb0Rlc2Nvbm9jaWRvIGtleT17a2V5fSBjYXNpbGxlcm89e2Nhc2lsbGVyb30gZm9yUGs9e3Byb3BzLmZvclBrfS8+XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDppPT1saW1pdGVOb1ZlclRvZG8/XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT0nJHNwaW5uZXInIGNsYXNzTmFtZT1cInNwaW5uZXItYm9yZGVyXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPmNhcmdhbmRvIGJsb3F1ZS4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA6bnVsbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgIH08L2Rpdj5cclxufVxyXG5cclxuZnVuY3Rpb24gQmxvcXVlRGVzcGxpZWd1ZShwcm9wczp7YmxvcXVlOkJsb3F1ZSwgZm9ybXVsYXJpbzpGb3JtdWxhcmlvLCBmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIHtibG9xdWUsIGZvclBrfSA9IHByb3BzO1xyXG4gICAgdmFyIGtleT1ibG9xdWUudmVyX2lkIT0nLScgJiYgYmxvcXVlLnZlcl9pZCB8fCBibG9xdWUuY2FzaWxsZXJvO1xyXG4gICAgdmFyIGFjdGl2ZVN0ZXA9MDtcclxuICAgIHZhciBtdWx0aXBsZSA9ICEhYmxvcXVlLnVuaWRhZF9hbmFsaXNpcztcclxuICAgIHZhciBsaXN0YSA9IFt7Zm9yUGssIGtleTowLCBtdWx0aXBsZTpmYWxzZX1dO1xyXG4gICAgdmFyIGhhYmlsaXRhZG9yID0gYmxvcXVlLmV4cHJlc2lvbl9oYWJpbGl0YXJfanM/Z2V0RnVuY2lvbkhhYmlsaXRhcihibG9xdWUuZXhwcmVzaW9uX2hhYmlsaXRhcl9qcyk6KCk9PnRydWU7XHJcbiAgICB2YXIge21vZG9EZXNwbGllZ3VlfSA9IHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGspO1xyXG4gICAgaWYobXVsdGlwbGUpe1xyXG4gICAgICAgIC8vIFRPRE86IEdFTkVSQUxJWkFSXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBcclxuICAgICAgICAvLyBsaXN0YT1yZXNwdWVzdGFzLnBlcnNvbmFzLm1hcCgoX3BlcnNvbmEsIGkpPT4oXHJcbiAgICAgICAgLy8gICAgIHtmb3JQazp7Li4uZm9yUGssIHBlcnNvbmE6aSsxfSwga2V5OmkrMSwgbXVsdGlwbGU6dHJ1ZX1cclxuICAgICAgICAvLyApKVxyXG4gICAgfVxyXG4gICAgdmFyIGlkID0gYGJsb3F1ZS0ke2Jsb3F1ZS5pZF9jYXNpbGxlcm99YDtcclxuICAgIHJlZ2lzdHJhckVsZW1lbnRvKHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBzdHlsZTonZGlzcGxheScsXHJcbiAgICAgICAgZnVuOiAocmVzcHVlc3RhczpSZXNwdWVzdGFzKT0+IGhhYmlsaXRhZG9yKHJlc3B1ZXN0YXMpIHx8IG1vZG9EZXNwbGllZ3VlPT0nbWV0YWRhdG9zJz8ndW5zZXQnOidub25lJ1xyXG4gICAgfSlcclxuICAgIHJldHVybiA8RGVzcGxlZ2FyQ2FzaWxsZXJvIGNhc2lsbGVybz17YmxvcXVlfSBudWVzdHJvLWJsb3F1ZT17YmxvcXVlLmlkX2Nhc2lsbGVyb30gZXMtbXVsdGlwbGU9e211bHRpcGxlPydTSSc6J05PJ30gaWQ9e2lkfT5cclxuICAgICAgICA8RW5jYWJlemFkb0Rlc3BsaWVndWUgY2FzaWxsZXJvPXtibG9xdWV9IGZvclBrPXtmb3JQa30vPlxyXG4gICAgICAgIHtsaXN0YS5tYXAoKHtrZXksIGZvclBrLCBtdWx0aXBsZX0pPT5cclxuICAgICAgICAgICAgPERlc3BsZWdhckNvbnRlbmlkb0ludGVybm9CbG9xdWVPRm9ybXVsYXJpbyBrZXk9e2tleX0gYmxvcXVlT0Zvcm11bGFyaW89e2Jsb3F1ZX0gZm9ybXVsYXJpbz17cHJvcHMuZm9ybXVsYXJpb30gZm9yUGs9e2ZvclBrfSBtdWx0aXBsZT17bXVsdGlwbGV9Lz5cclxuICAgICAgICApfVxyXG4gICAgPC9EZXNwbGVnYXJDYXNpbGxlcm8+O1xyXG59XHJcblxyXG5jb25zdCBGb3JtdWxhcmlvRW5jYWJlemFkbyA9IERlc3BsaWVndWVFbmNhYmV6YWRvO1xyXG5cclxuZnVuY3Rpb24gTWVudUxldHJhKHByb3BzOnt0YW1hbm5pbzpudW1iZXIsIGRlbm9taW5hY2lvbjpzdHJpbmd9KXtcclxuICAgIGNvbnN0IGNhbWJpYXJMZXRyYSA9ICh0YW1hbm5pbzpudW1iZXIpPT57XHJcbiAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICAgICAgcm9vdC5zdHlsZS5mb250U2l6ZT10YW1hbm5pbytcInB4XCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gPE1lbnVJdGVtXHJcbiAgICAgICAgb25DbGljaz17KCk9PmNhbWJpYXJMZXRyYShwcm9wcy50YW1hbm5pbyl9IHN0eWxlPXt7Zm9udFNpemU6cHJvcHMudGFtYW5uaW8rJ3B4J319XHJcbiAgICA+bGV0cmEge3Byb3BzLmRlbm9taW5hY2lvbn08L01lbnVJdGVtPlxyXG59XHJcblxyXG5mdW5jdGlvbiBGYXN0U2V0dHVwKCl7XHJcbiAgICBjb25zdCBbYW5jaG9yRWwsIHNldEFuY2hvckVsXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgc2V0QW5jaG9yRWwoZXZlbnQuY3VycmVudFRhcmdldCk7XHJcbiAgICAgICAgc2V0T3BlbigocHJldikgPT4gIXByZXYpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGNhbWJpYXIgPSAobW9kb0Rlc3BsaWVndWU6TW9kb0Rlc3BsaWVndWUpPT57XHJcbiAgICAgICAgZGlzcGF0Y2goZGlzcGF0Y2hlcnMuTU9ET19ERVNQTElFR1VFKHttb2RvRGVzcGxpZWd1ZX0pKTtcclxuICAgICAgICBzZXRPcGVuKGZhbHNlKVxyXG4gICAgfVxyXG4gICAgY29uc3Qgb3BjaW9uZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+c3RhdGUub3BjaW9uZXMpXHJcbiAgICByZXR1cm4gPD5cclxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfT5cclxuICAgICAgICAgICAgPElDT04uU2V0dGluZ3MvPlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDxNZW51IG9wZW49e29wZW59IGFuY2hvckVsPXthbmNob3JFbH0gb25DbG9zZT17KCk9PnNldE9wZW4oZmFsc2UpfT5cclxuICAgICAgICAgICAgPE1lbnVJdGVtIG9uQ2xpY2s9eygpPT5jYW1iaWFyKFwicmVsZXZhbWllbnRvXCIpfT5ub3JtYWw8L01lbnVJdGVtPlxyXG4gICAgICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17KCk9PmNhbWJpYXIoXCJQREZcIiAgICAgICAgICl9PlBERiBwYXJhIHJlbGV2YW1pZW50bzwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbSBvbkNsaWNrPXsoKT0+Y2FtYmlhcihcIm1ldGFkYXRvc1wiICAgKX0+cmV2aXNhciBtZXRhZGF0b3M8L01lbnVJdGVtPlxyXG4gICAgICAgICAgICA8RGl2aWRlci8+XHJcbiAgICAgICAgICAgIDxNZW51TGV0cmEgdGFtYW5uaW89ezEyfSBkZW5vbWluYWNpb24gPSBcIm11eSBjaGljYVwiLz5cclxuICAgICAgICAgICAgPE1lbnVMZXRyYSB0YW1hbm5pbz17MTR9IGRlbm9taW5hY2lvbiA9IFwiY2hpY2FcIi8+XHJcbiAgICAgICAgICAgIDxNZW51TGV0cmEgdGFtYW5uaW89ezE2fSBkZW5vbWluYWNpb24gPSBcIm5vcm1hbFwiLz5cclxuICAgICAgICAgICAgPE1lbnVMZXRyYSB0YW1hbm5pbz17MTl9IGRlbm9taW5hY2lvbiA9IFwiZ3JhbmRlXCIvPlxyXG4gICAgICAgICAgICA8TWVudUxldHJhIHRhbWFubmlvPXsyMn0gZGVub21pbmFjaW9uID0gXCJlbm9ybWVcIi8+XHJcbiAgICAgICAgICAgIDxEaXZpZGVyLz5cclxuICAgICAgICAgICAgPE1lbnVJdGVtPjxsYWJlbD48Q2hlY2tib3ggY2hlY2tlZD17b3BjaW9uZXMuY29uQ2FtcG9PcGNpb25lc30gb25DaGFuZ2U9e1xyXG4gICAgICAgICAgICAgICAgKCk9PmRpc3BhdGNoKGRpc3BhdGNoZXJzLlNFVF9PUENJT04oe29wY2lvbjonY29uQ2FtcG9PcGNpb25lcycsIHZhbG9yOiFvcGNpb25lcy5jb25DYW1wb09wY2lvbmVzfSkpXHJcbiAgICAgICAgICAgIH0gaW5wdXRQcm9wcz17eyAnYXJpYS1sYWJlbCc6ICdwcmltYXJ5IGNoZWNrYm94JyB9fS8+Y2FtcG8gb3BjaW9uZXM8L2xhYmVsPjwvTWVudUl0ZW0+XHJcbiAgICAgICAgICAgIDxNZW51SXRlbT48bGFiZWw+PENoZWNrYm94IGNoZWNrZWQ9e29wY2lvbmVzLnNhbHRvQXV0b21hdGljb30gb25DaGFuZ2U9e1xyXG4gICAgICAgICAgICAgICAgKCk9PmRpc3BhdGNoKGRpc3BhdGNoZXJzLlNFVF9PUENJT04oe29wY2lvbjonc2FsdG9BdXRvbWF0aWNvJywgdmFsb3I6IW9wY2lvbmVzLnNhbHRvQXV0b21hdGljb30pKVxyXG4gICAgICAgICAgICB9IGlucHV0UHJvcHM9e3sgJ2FyaWEtbGFiZWwnOiAncHJpbWFyeSBjaGVja2JveCcgfX0vPnNhbHRvIGF1dG9tw6F0aWNvPC9sYWJlbD48L01lbnVJdGVtPlxyXG4gICAgICAgIDwvTWVudT5cclxuICAgIDwvPjtcclxufVxyXG5cclxuZnVuY3Rpb24gQmFycmFEZU5hdmVnYWNpb24ocHJvcHM6e2ZvclBrOkZvclBrLCBzb2xvTGVjdHVyYTpib29sZWFuLCBtb2RvRGlyZWN0bzpib29sZWFufSl7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICBjb25zdCBmb3JQayA9IHByb3BzLmZvclBrO1xyXG4gICAgY29uc3Qge29wY2lvbmVzfSA9IHVzZVNlbGVjdG9yVml2aWVuZGEoZm9yUGspO1xyXG4gICAgY29uc3QgW2NvbmZpcm1hQ2VycmFyLCBzZXRDb25maXJtYUNlcnJhcl0gPSB1c2VTdGF0ZTxib29sZWFufG51bGw+KGZhbHNlKTtcclxuICAgIHZhciBkb21pbmlvID0gZ2V0RGF0b3NCeVBhc3MoKS5pbmZvcm1hY2lvbkhkcltmb3JQay52aXZpZW5kYSFdLnRlbS5kb21pbmlvO1xyXG4gICAgdmFyIGNlcnJhckRpcmVjdG8gPSBhc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgIHJlbW92ZUNTU0J5SWQoQk9PVFNUUkFQXzVfMV8zX1NSQyk7XHJcbiAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgZ290b0NvbnNpc3RpcihcclxuICAgICAgICAgICAgZXN0cnVjdHVyYS5vcGVyYXRpdm8gYXMgSWRPcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIGdldERhdG9zQnlQYXNzKCkuaW5mb3JtYWNpb25IZHJbZm9yUGsudml2aWVuZGEhXS50YXJlYS50YXJlYSxcclxuICAgICAgICAgICAgZm9yUGsudml2aWVuZGE/LnRvU3RyaW5nKCkgYXMgSWRFbmNcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vdmFyIGhhc2g9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5oYXNoPy5yZXBsYWNlKC9eXFwjLywnJykuc3BsaXQoJyZhdXRvcHJvY2VkJylbMF0pO1xyXG4gICAgICAgIC8vLy9oYXNoLmRlbGV0ZSgnYXV0b3Byb2NlZCcpXHJcbiAgICAgICAgLy9jbG9zZSgpO1xyXG4gICAgICAgIC8vbG9jYXRpb24uaGFzaD1oYXNoLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB2YXIgYm90b25lc0Zvcm11bGFyaW89W107XHJcbiAgICBpZighb3BjaW9uZXMubW9kb0RpcmVjdG8pe1xyXG4gICAgICAgIGJvdG9uZXNGb3JtdWxhcmlvLnB1c2goe3F1ZTogJ2hkcicgICAgLCBhYnI6J0hkUicsIGxhYmVsOidob2phIGRlIHJ1dGEnLCByZXRyb2Nlc286MH0pXHJcbiAgICB9XHJcbiAgICBvcGNpb25lcy5waWxhRm9yUGsuZm9yRWFjaCgoZm9yUGssaSk9PlxyXG4gICAgICAgIGJvdG9uZXNGb3JtdWxhcmlvLnB1c2goe3F1ZTondm9sdmVyJywgYWJyOmZvclBrLmZvcm11bGFyaW8ucmVwbGFjZSgvXkY6LywnJyksIGxhYmVsOmZvclBrLmZvcm11bGFyaW8sIHJldHJvY2VzbzpvcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLWl9KVxyXG4gICAgKVxyXG4gICAgYm90b25lc0Zvcm11bGFyaW8ucHVzaCh7cXVlOicnLCBhYnI6Zm9yUGsuZm9ybXVsYXJpby5yZXBsYWNlKC9eRjovLCcnKSwgbGFiZWw6Zm9yUGsuZm9ybXVsYXJpbywgcmV0cm9jZXNvOjB9KTtcclxuICAgIHJldHVybiA8PlxyXG4gICAgICAgIDxCdXR0b25Hcm91cCBrZXk9XCJmb3JtdWxhcmlvc1wiIGNsYXNzTmFtZT1cImJhcnJhLW5hdmVnYWNpb25cIiBzb2xvLWxlY3R1cmE9e3Byb3BzLnNvbG9MZWN0dXJhPydzaSc6J25vJ30gPlxyXG4gICAgICAgICAgICB7Ym90b25lc0Zvcm11bGFyaW8ubWFwKChiLGkpPT5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24gY29sb3I9e2IucXVlPT1mb3JQay5mb3JtdWxhcmlvP1wicHJpbWFyeVwiOlwiaW5oZXJpdFwifSB2YXJpYW50PVwib3V0bGluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGtleT17YCR7aX0tJHtiLnF1ZX0tJHtiLnJldHJvY2Vzb31gfVxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshYi5xdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIucXVlPT0naGRyJz9kaXNwYXRjaGVycy5WT0xWRVJfSERSKHt9KTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXJzLlZPTFZFUl9ERV9GT1JNVUxBUklPKHttYWduaXR1ZFJldHJvY2VzbzpiLnJldHJvY2Vzb30pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJyXCI+e2IuYWJyfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsYWJlbFwiPntiLmxhYmVsfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvQnV0dG9uR3JvdXA+XHJcbiAgICAgICAge3Byb3BzLnNvbG9MZWN0dXJhPzxUeXBvZ3JhcGh5IGNvbXBvbmVudD1cInNwYW5cIiBzdHlsZT17e21hcmdpbjonMCAxMHB4J319PiAoU29sbyBMZWN0dXJhKSA8L1R5cG9ncmFwaHk+Om51bGx9XHJcbiAgICAgICAge3Byb3BzLm1vZG9EaXJlY3RvP1xyXG4gICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvbkdyb3VwIGtleT1cInZvbHZlcl95X2dyYWJhclwiIHN0eWxlPXt7bWFyZ2luOicwIDAgMCAzMHB4J319PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHByb3BzLnNvbG9MZWN0dXJhIHx8ICFnZXREaXJ0eSgpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJyYXJEaXJlY3RvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25maXJtYUNlcnJhcih0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPElDT04uRXhpdFRvQXBwLz5cclxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW49eyEhY29uZmlybWFDZXJyYXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaGFjZSBxdWUgbm8gc2UgY2llcnJlIGVsIG1lbnNhamVcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCk9PnNldENvbmZpcm1hQ2VycmFyKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj5Db25maXJtZSBjaWVycmUgZGUgZW5jdWVzdGE8L0RpYWxvZ1RpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdMOhIHBvciBzYWxpciBkZSBsYSBlbmN1ZXN0YSwgc2UgcGVyZGVyw6FuIGxvcyBjYW1iaW9zIG5vIGd1YXJkYWRvcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPERpYWxvZ0FjdGlvbnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnJhckRpcmVjdG8oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjYXJ0YXIgY2FtYmlvcyB5IGNlcnJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbmZpcm1hQ2VycmFyKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhciBlZGl0YW5kbyBlbmN1ZXN0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EaWFsb2dBY3Rpb25zPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5zb2xvTGVjdHVyYT9udWxsOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17XCJzYXZlLWJ1dHRvblwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2FzeW5jICgpPT50cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SUNPTi5TYXZlLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9CdXR0b25Hcm91cD5cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgOm51bGx9XHJcbiAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPVwibW9zdHJhci1mb3JQa1wiIGNvbXBvbmVudD1cInNwYW5cIiBzdHlsZT17e21hcmdpbjonMCAxMHB4J319PiBcclxuICAgICAgICAgICAge1ZFUl9ET01JTklPPzxkaXYga2V5PXtkb21pbmlvfT48c3Bhbj5kb21pbmlvPC9zcGFuPjxzcGFuPntkb21pbmlvfTwvc3Bhbj48L2Rpdj46Jyd9XHJcbiAgICAgICAgICAgIHtsaWtlQXIocHJvcHMuZm9yUGspLmZpbHRlcigoXyxrKT0+ayE9J2Zvcm11bGFyaW8nKS5tYXAoKHYsayk9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2t9PjxzcGFuPntrfTwvc3Bhbj48c3Bhbj57dn08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICkuYXJyYXkoKX0gXHJcbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDxGYXN0U2V0dHVwLz5cclxuICAgIDwvPlxyXG59XHJcblxyXG5mdW5jdGlvbiBCb3RvblZvbHZlckVuRGl2KHtpZH06e2lkOnN0cmluZ30pe1xyXG4gICAgdmFyIHtvcGNpb25lc30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHtvcGNpb25lczpzdGF0ZS5vcGNpb25lc30pKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImRpdi1ib3Rvbi12b2x2ZXJcIj5cclxuICAgICAgICB7b3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aD4wP1xyXG4gICAgICAgIDxCdXR0b24gaWQ9e2lkfSBjbGFzc05hbWU9XCJib3Rvbi12b2x2ZXJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuVk9MVkVSX0RFX0ZPUk1VTEFSSU8oe21hZ25pdHVkUmV0cm9jZXNvOjF9KSl9XHJcbiAgICAgICAgPiA8SUNPTi5DaGV2cm9uTGVmdC8+IFZvbHZlcjwvQnV0dG9uPlxyXG4gICAgICAgIDpudWxsfVxyXG4gICAgPC9kaXY+XHJcbn1cclxuXHJcbmZ1bmN0aW9uIEZvcm11bGFyaW9EZXNwbGllZ3VlKHByb3BzOntmb3JQazpGb3JQa30pe1xyXG4gICAgdmFyIGZvclBrID0gcHJvcHMuZm9yUGs7XHJcbiAgICB2YXIge2Zvcm11bGFyaW8sIG1vZG9EZXNwbGllZ3VlLCBtb2RvLCBvcGNpb25lc30gXHJcbiAgICAgICAgPSB1c2VTZWxlY3RvclZpdmllbmRhKHByb3BzLmZvclBrKTtcclxuICAgIHZhciBzb2xvTGVjdHVyYSA9IGdldERhdG9zQnlQYXNzKCkuc29sb0xlY3R1cmE7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB1c2VFZmZlY3QoKCk9PntcclxuICAgICAgICB2YXIgY29udHJvbFNjcm9sbD0oKT0+e1xyXG4gICAgICAgICAgICB2YXIgYXJyaWJhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhYi1hY3Rpdm8tYXJyaWJhJyk7XHJcbiAgICAgICAgICAgIGlmKGFycmliYSl7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWxvckRpc3RpbnRvKGFycmliYS5zdHlsZSwgJ3Zpc2liaWxpdHknLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICBhcnJpYmEuZWxUb3BWaXNpYmlsaXphciAhPW51bGwgJiYgYXJyaWJhLmVsVG9wVmlzaWJpbGl6YXIgKyAxMCBcclxuICAgICAgICAgICAgICAgICAgICA8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgYWJham8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFiLWFjdGl2by1hYmFqbycpO1xyXG4gICAgICAgICAgICBpZihhYmFqbyl7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWxvckRpc3RpbnRvKGFiYWpvLnN0eWxlLCAndmlzaWJpbGl0eScsIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICBhYmFqby5lbEJvdHRvbVZpc2liaWxpemFyICE9IG51bGwgJiYgYWJham8uZWxCb3R0b21WaXNpYmlsaXphciAtIDIwXHJcbiAgICAgICAgICAgICAgICAgICAgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wICsgd2luZG93LmlubmVySGVpZ2h0ICogMC43ID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNvbnRyb2xTY3JvbGwpO1xyXG4gICAgICAgIGNvbnRyb2xTY3JvbGwoKTtcclxuICAgICAgICByZXR1cm4gKCk9PntcclxuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGNvbnRyb2xTY3JvbGwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyBUT0RPIFZvbHZlciBhIHBvbmVyIGVsIG1vdmltaWVudG8gYSBsYSBhY3R1YWxcclxuICAgIHZhciBhY3R1YWw6YW55XHJcbiAgICB2YXIgY29tcGxldG86YW55XHJcbiAgICB2YXIgb25DbGlja1NhbHRhckFjdHVhbCA9ICgpPT57XHJcbiAgICAgICAgdmFyIHt2YXJpYWJsZUFjdHVhbH0gPSBkaXNwYXRjaEJ5UGFzcyhhY2Npb25fcmVnaXN0cmFyX3Jlc3B1ZXN0YSwge3Jlc3B1ZXN0YTpudWxsLCB2YXJpYWJsZTpOT19DQU1CSUFSX19TT0xPX1RSQUVSX1NUQVRVUywgZm9yUGs6cHJvcHMuZm9yUGt9KTtcclxuICAgICAgICBpZih2YXJpYWJsZUFjdHVhbCl7XHJcbiAgICAgICAgICAgIGVuZm9jYXJFbGVtZW50b0RlVmFyaWFibGUodmFyaWFibGVBY3R1YWwpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFyIGxpc3RhTW9kb3M6TW9kb0Rlc3BsaWVndWVbXT1bJ21ldGFkYXRvcycsJ3JlbGV2YW1pZW50bycsJ1BERiddO1xyXG4gICAgWydib3Rvbi12b2x2ZXItMScsICdib3Rvbi12b2x2ZXItMiddLmZvckVhY2goaWQ9PntcclxuICAgICAgICByZWdpc3RyYXJFbGVtZW50byh7aWQsIGF0dHI6J3Jlc3VtZW4tZXN0YWRvJywgZnVuOihfOlJlc3B1ZXN0YXMsIGZlZWRiYWNrRm9ybTogRm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj4pPT4oXHJcbiAgICAgICAgICAgIGZlZWRiYWNrRm9ybS5yZXN1bWVuXHJcbiAgICAgICAgKX0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8QXBwQmFyIHBvc2l0aW9uPVwiZml4ZWRcIiBjb2xvcj17c29sb0xlY3R1cmE/J3NlY29uZGFyeSc6J3ByaW1hcnknfT5cclxuICAgICAgICAgICAgICAgIDxUb29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCYXJyYURlTmF2ZWdhY2lvbiBmb3JQaz17Zm9yUGt9IHNvbG9MZWN0dXJhPXtzb2xvTGVjdHVyYSB8fCBmYWxzZX0gbW9kb0RpcmVjdG89e29wY2lvbmVzLm1vZG9EaXJlY3RvfS8+XHJcbiAgICAgICAgICAgICAgICA8L1Rvb2xiYXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWluaS1jb25zb2xlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvQXBwQmFyPlxyXG4gICAgICAgICAgICA8bWFpbj5cclxuICAgICAgICAgICAgICAgIDxQYXBlciBjbGFzc05hbWU9XCJmb3JtdWxhcmlvXCIgbW9kby1kZXNwbGllZ3VlPXttb2RvRGVzcGxpZWd1ZX0gdmVyLW51bS1vcGNpb25lcz17b3BjaW9uZXMuY29uQ2FtcG9PcGNpb25lcz8nU0knOidOTyd9PlxyXG4gICAgICAgICAgICAgICAgICAgIHttb2RvLmRlbW8/PGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgY29tcG9uZW50PVwic3BhblwiPk1vZG8gZGUgZGVzcGxpZWd1ZTo8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25Hcm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2xpc3RhTW9kb3MubWFwKG1vZG89PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBrZXk9e21vZG99IHZhcmlhbnQ9e21vZG89PW1vZG9EZXNwbGllZ3VlP1wiY29udGFpbmVkXCI6XCJvdXRsaW5lZFwifSBvbkNsaWNrPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuTU9ET19ERVNQTElFR1VFKHttb2RvRGVzcGxpZWd1ZTptb2RvfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Pnttb2RvfTwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbkdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PjpudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgIDxCb3RvblZvbHZlckVuRGl2IGlkPVwiYm90b24tdm9sdmVyLTFcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZvcm11bGFyaW9FbmNhYmV6YWRvIGNhc2lsbGVybz17Zm9ybXVsYXJpb30vPlxyXG4gICAgICAgICAgICAgICAgICAgIDxEZXNwbGVnYXJDb250ZW5pZG9JbnRlcm5vQmxvcXVlT0Zvcm11bGFyaW8gYmxvcXVlT0Zvcm11bGFyaW89e2Zvcm11bGFyaW99IGZvcm11bGFyaW89e2Zvcm11bGFyaW99IGZvclBrPXtmb3JQa30gbXVsdGlwbGU9e2ZhbHNlfS8+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJvdG9uVm9sdmVyRW5EaXYgaWQ9XCJib3Rvbi12b2x2ZXItMlwiLz5cclxuICAgICAgICAgICAgICAgIDwvUGFwZXI+XHJcbiAgICAgICAgICAgICAgICA8RmFiIGlkPSdmYWItYWN0aXZvLWFycmliYScgY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1sYWJlbD1cImFkZFwiIG9uQ2xpY2s9e29uQ2xpY2tTYWx0YXJBY3R1YWx9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxJQ09OLktleWJvYXJkQXJyb3dVcCAvPlxyXG4gICAgICAgICAgICAgICAgPC9GYWI+XHJcbiAgICAgICAgICAgICAgICA8RmFiIGlkPSdmYWItYWN0aXZvLWFiYWpvJyBjb2xvcj1cInByaW1hcnlcIiBhcmlhLWxhYmVsPVwiYWRkXCIgb25DbGljaz17b25DbGlja1NhbHRhckFjdHVhbH0+XHJcbiAgICAgICAgICAgICAgICAgICAgPElDT04uS2V5Ym9hcmRBcnJvd0Rvd24gLz5cclxuICAgICAgICAgICAgICAgIDwvRmFiPlxyXG4gICAgICAgICAgICAgICAgPEZhYiBpZD0nZmFiLWVycm9yLWFycmliYScgdmFyaWFudD1cImV4dGVuZGVkXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBhcmlhLWxhYmVsPVwiZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxJQ09OLk5hdmlnYXRpb24gLz5cclxuICAgICAgICAgICAgICAgICAgICBFcnJvclxyXG4gICAgICAgICAgICAgICAgPC9GYWI+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPEZhYiBpZD0nZmFiLWVycm9yLWFiYWpvJyB2YXJpYW50PVwiZXh0ZW5kZWRcIiBjb2xvcj1cInNlY29uZGFyeVwiIGFyaWEtbGFiZWw9XCJlZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPElDT04uTmF2aWdhdGlvbkRvd24gLz5cclxuICAgICAgICAgICAgICAgICAgICBFcnJvclxyXG4gICAgICAgICAgICAgICAgPC9GYWI+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2VzcGFjaW8tZmluYWwtZm9ybXVsYXJpbyc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7b3BjaW9uZXMubW9kb0JvcnJhclJlc3B1ZXN0YSAmJiBvcGNpb25lcy5mb3JQaz88RGVzcGxlZ2FyQ29uZmlybWFyQm9ycmFyUmVzcHVlc3RhIGZvclBrPXtvcGNpb25lcy5mb3JQa30gdmFyaWFibGVCb3JyYXI9e29wY2lvbmVzLm1vZG9Cb3JyYXJSZXNwdWVzdGF9Lz46bnVsbH1cclxuICAgICAgICAgICAgPC9tYWluPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEF0cmlidXRvKHByb3BzOntub21icmU6c3RyaW5nLCB2YWxvcjphbnl9KXtcclxuICAgIHJldHVybiBwcm9wcy52YWxvciE9bnVsbCAmJiBwcm9wcy52YWxvciE9Jyc/PHNwYW4gY2xhc3NOYW1lPVwiYXRyaWJ1dG8tcGFyXCI+XHJcbiAgICAgICAge3Byb3BzLm5vbWJyZT88c3BhbiBjbGFzc05hbWU9XCJhdHJpYnV0by1ub21icmVcIj57cHJvcHMubm9tYnJlfTwvc3Bhbj46bnVsbH1cclxuICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYXRyaWJ1dG8tdmFsb3JcIj57cHJvcHMudmFsb3IudG9TdHJpbmcoKX08L3NwYW4+XHJcbiAgICA8L3NwYW4+Om51bGxcclxufVxyXG5cclxuY29uc3QgbGlzdGFFc3RhZG9zQ2FyZ2E6RXN0YWRvQ2FyZ2FbXT1bJ3Jlc3VtZW4nLCdyZWxldmFtaWVudG8nLCdyZWNpYm8nXTtcclxudmFyIHJlc3VtaWRvcmVzID0gW1xyXG4gICAge25vbWJyZTonUkVBJyAgICAgICAgICwgZjoocnI6UmVzcHVlc3Rhc1JhaXopPT5yci5yZXN1bWVuRXN0YWRvPT1cIm9rXCIgICAgICAgICAgfSxcclxuICAgIHtub21icmU6J0NpdGEgcGFjdGFkYScsIGY6KHJyOlJlc3B1ZXN0YXNSYWl6KT0+cnIucmVzdW1lbkVzdGFkbz09XCJjaXRhIHBhY3RhZGFcIn0sXHJcbiAgICB7bm9tYnJlOidQZW5kaWVudGVzJyAgLCBmOihycjpSZXNwdWVzdGFzUmFpeik9PnJyLnJlc3VtZW5Fc3RhZG89PVwidmFjaW9cIiAgICAgICB9LFxyXG5dO1xyXG5cclxucmVzdW1pZG9yZXMucHVzaChcclxuICAgIHtub21icmU6J090cm9zJywgZjpyZXN1bWlkb3Jlcy5yZWR1Y2UoKGcscik9Pihycj0+IXIuZihycikgJiYgZyhycikgKSwoXzpSZXNwdWVzdGFzUmFpeik9PnRydWUpIH1cclxuKVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3BsZWdhckxpbmVhUmVzdW1lblVBUHJpbmNpcGFsKHByb3BzOntcclxuICAgIG51bVZpdmllbmRhOm51bWJlcixcclxuICAgIGZvcm1QcmluY2lwYWw6SWRGb3JtdWxhcmlvLFxyXG4gICAgdGFyZWE6IHN0cmluZyxcclxuICAgIHJlc3B1ZXN0YXM6UmVzcHVlc3Rhc1JhaXosXHJcbn0pe1xyXG4gICAgY29uc3Qge251bVZpdmllbmRhLCByZXNwdWVzdGFzLCBmb3JtUHJpbmNpcGFsLCB0YXJlYX0gPSBwcm9wcztcclxuICAgIGNvbnN0IGlkPSd2aXYtJytudW1WaXZpZW5kYTtcclxuICAgIGNvbnN0IGZvclBrOkZvclBrPXtmb3JtdWxhcmlvOmZvcm1QcmluY2lwYWwsIHZpdmllbmRhOk51bWJlcihudW1WaXZpZW5kYSl9O1xyXG4gICAgdmFyIHRlbSA9IGdldERhdG9zQnlQYXNzKCkuaW5mb3JtYWNpb25IZHJbbnVtVml2aWVuZGFdLnRlbTtcclxuICAgIHZhciBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICB1c2VFZmZlY3QoKCk9PntcclxuICAgICAgICB2b2xjYWRvSW5pY2lhbEVsZW1lbnRvc1JlZ2lzdHJhZG9zKGZvclBrKTtcclxuICAgICAgICBpbnRlbnRhckJhY2t1cChmb3JQaylcclxuICAgIH0pXHJcbiAgICByZWdpc3RyYXJFbGVtZW50byh7aWQsIGRpcmVjdDp0cnVlLFxyXG4gICAgICAgIGZ1bjooXHJcbiAgICAgICAgICAgIHI6UmVzcHVlc3RhcywgXHJcbiAgICAgICAgICAgIF9mZWVkYmFja0Zvcm06IEZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+LCBcclxuICAgICAgICAgICAgZWxlbWVudG86SFRNTERpdkVsZW1lbnQsIFxyXG4gICAgICAgICAgICBmZWVkYmFja0FsbDp7W2Zvcm11bGFyaW8gaW4gUGxhaW5Gb3JQa106Rm9ybVN0cnVjdHVyZVN0YXRlPElkVmFyaWFibGUsIFZhbG9yLCBJZEZpbj59LCBcclxuICAgICAgICAgICAgX2VzdHJ1Y3R1cmE6RXN0cnVjdHVyYVxyXG4gICAgICAgICk9PntcclxuICAgICAgICAgICAgLy9wcmVndW50byBzaSBlcyBsYSBtaXNtYSB2aXZpZW5kYSBwb3JxdWUgbGEgZnVuY2lvbiBzZSBkaXNwYXJhIFxyXG4gICAgICAgICAgICAvL2NvbiB0b2RhcyBsYXMgY29tYmluYWNpb25lcyBkZSByZXNwdWVzdGFzIHBhcmEgY2FkYSBmb3JQa1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgdml2aWVuZGEgZXhpc3RlXHJcbiAgICAgICAgICAgIGlmKHIudml2aWVuZGEgPT0gZm9yUGsudml2aWVuZGEpe1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudG8uc2V0QXR0cmlidXRlKCdyZXN1bWVuLWVzdGFkbycsY2FsY3VsYXJSZXN1bWVuVml2aWVuZGEoZm9yUGssIGZlZWRiYWNrQWxsLCByKS5yZXN1bWVuRXN0YWRvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIDxUYWJsZVJvdyBrZXk9e251bVZpdmllbmRhfT5cclxuICAgICAgICA8VGFibGVDZWxsPlxyXG4gICAgICAgICAgICB7dGVtP1xyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICA8RGVzcGxlZ2FyVGVtIHRlbT17dGVtfS8+XHJcbiAgICAgICAgICAgICAgICAgICAge3Jlc3B1ZXN0YXNbJ3Jlc3VtZW5Fc3RhZG8nIGFzIElkVmFyaWFibGVdPT1cImNpdGEgcGFjdGFkYVwiP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVzcGxlZ2FyQ2l0YVBhY3RhZGEgcmVzcHVlc3Rhcz17cmVzcHVlc3Rhc30vPlxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERlc3BsZWdhckNpdGFQYWN0YWRhWVNlbGVjY2lvbmFkb0FudGVyaW9yVGVtIHRlbT17dGVtfS8+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgIDpudWxsfVxyXG4gICAgICAgIDwvVGFibGVDZWxsPlxyXG4gICAgICAgIDxUYWJsZUNlbGw+XHJcbiAgICAgICAgICAgIHt0YXJlYX1cclxuICAgICAgICA8L1RhYmxlQ2VsbD5cclxuICAgICAgICA8VGFibGVDZWxsPlxyXG4gICAgICAgICAgICA8QnV0dG9uIGlkPXtpZH0gb25DbGljaz17KCk9PiBcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXJzLkNBTUJJQVJfRk9STVVMQVJJTyh7Zm9yUGssIGFwaWxhclZ1ZWx0YTpmYWxzZX0pKVxyXG4gICAgICAgICAgICB9PlxyXG4gICAgICAgICAgICAgICAge251bVZpdmllbmRhLnRvU3RyaW5nKCl9XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDwvVGFibGVDZWxsPlxyXG4gICAgPC9UYWJsZVJvdz5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3BsZWdhckNhcmdhKHByb3BzOntcclxuICAgIGNhcmdhOkNhcmdhLCBcclxuICAgIGlkQ2FyZ2E6SWRDYXJnYSwgXHJcbiAgICBwb3NpY2lvbjpudW1iZXIsXHJcbiAgICBpbmZvcm1hY2lvbkhkcjpJbmZvcm1hY2lvbkhkciwgXHJcbiAgICByZXNwdWVzdGFzOiBSZXNwdWVzdGFzLFxyXG4gICAgZmVlZGJhY2tSb3dWYWxpZGF0b3I6e1xyXG4gICAgICAgIFtmb3JtdWxhcmlvIGluIFBsYWluRm9yUGtdOkZvcm1TdHJ1Y3R1cmVTdGF0ZTxJZFZhcmlhYmxlLCBWYWxvciwgSWRGaW4+IFxyXG4gICAgfVxyXG59KXtcclxuICAgIGNvbnN0IHtjYXJnYSwgaWRDYXJnYSwgaW5mb3JtYWNpb25IZHIsIHJlc3B1ZXN0YXN9ID0gcHJvcHM7XHJcbiAgICByZXR1cm4gPFBhcGVyIGNsYXNzTmFtZT1cImNhcmdhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmZvcm1hY2lvbi1jYXJnYVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmdhXCI+w4FyZWE6IHtpZENhcmdhfTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm9ic2VydmFjaW9uZXNcIj57Y2FyZ2Eub2JzZXJ2YWNpb25lc308L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImluZm9ybWFjaW9uLWNhcmdhXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmVjaGFcIj57Y2FyZ2EuZmVjaGF9PC9kaXY+XHJcbiAgICAgICAgICAgIHsvKlxyXG4gICAgICAgICAgICA8QnV0dG9uR3JvdXA+XHJcbiAgICAgICAgICAgIHtsaXN0YUVzdGFkb3NDYXJnYS5tYXAoZXN0YWRvX2NhcmdhPT5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24ga2V5PXtlc3RhZG9fY2FyZ2F9IHZhcmlhbnQ9e2VzdGFkb19jYXJnYT09Y2FyZ2EuZXN0YWRvX2NhcmdhP1wiY29udGFpbmVkXCI6XCJvdXRsaW5lZFwifSBvbkNsaWNrPXtcclxuICAgICAgICAgICAgICAgICAgICAoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuRVNUQURPX0NBUkdBKHtpZENhcmdhLCBlc3RhZG9fY2FyZ2F9KSlcclxuICAgICAgICAgICAgICAgIH0+e2VzdGFkb19jYXJnYX08L0J1dHRvbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9CdXR0b25Hcm91cD5cclxuICAgICAgICAgICAgKi99XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge2NhcmdhLmVzdGFkb19jYXJnYT09bnVsbCAmJiAhcHJvcHMucG9zaWNpb24gfHwgY2FyZ2EuZXN0YWRvX2NhcmdhPT0ncmVsZXZhbWllbnRvJz9cclxuICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwidGFibGEtY2FyZ2EtaG9qYS1kZS1ydXRhXCI+XHJcbiAgICAgICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9e3t3aWR0aDpcIjc1JVwifX0vPlxyXG4gICAgICAgICAgICAgICAgPGNvbCBzdHlsZT17e3dpZHRoOlwiMTAlXCJ9fS8+ICAgIFxyXG4gICAgICAgICAgICAgICAgPGNvbCBzdHlsZT17e3dpZHRoOlwiMTUlXCJ9fS8+ICAgIFxyXG4gICAgICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgICAgICA8VGFibGVIZWFkIHN0eWxlPXt7Zm9udFNpemU6IFwiMS4ycmVtXCJ9fT5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdyBjbGFzc05hbWU9XCJ0ci1jYXJnYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+ZG9taWNpbGlvPC9UYWJsZUNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD50YXJlYTwvVGFibGVDZWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+ZW5jPC9UYWJsZUNlbGw+XHJcbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxyXG4gICAgICAgICAgICA8L1RhYmxlSGVhZD5cclxuICAgICAgICAgICAgPFRhYmxlQm9keT5cclxuICAgICAgICAgICAgICAgIHtiZWluZ0FycmF5KGluZm9ybWFjaW9uSGRyKS5maWx0ZXIoKGluZm9ybWFjaW9uOkRhdG9zSGRyVWFQcGFsLCBfbnVtVml2aWVuZGE6bnVtYmVyKT0+aW5mb3JtYWNpb24udGVtLmNhcmdhPT1pZENhcmdhKS5tYXAoKGluZm9ybWFjaW9uOkRhdG9zSGRyVWFQcGFsLCBudW1WaXZpZW5kYTpudW1iZXIpPT5cclxuICAgICAgICAgICAgICAgICAgICA8RGVzcGxlZ2FyTGluZWFSZXN1bWVuVUFQcmluY2lwYWwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bnVtVml2aWVuZGF9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1WaXZpZW5kYT17bnVtVml2aWVuZGF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmVhPXtpbmZvcm1hY2lvbi50YXJlYS50YXJlYX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVByaW5jaXBhbD17aW5mb3JtYWNpb24udGFyZWEubWFpbl9mb3JtfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwdWVzdGFzPXtyZXNwdWVzdGFzLnZpdmllbmRhc1tudW1WaXZpZW5kYV19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICkuYXJyYXkoKX1cclxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XHJcbiAgICAgICAgPC9UYWJsZT46XHJcbiAgICAgICAgPFRhYmxlPlxyXG4gICAgICAgICAgICA8VGFibGVIZWFkIHN0eWxlPXt7Zm9udFNpemU6IFwiMS4ycmVtXCJ9fT5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdyBjbGFzc05hbWU9XCJ0ci1jYXJnYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtyZXN1bWlkb3Jlcy5tYXAoKHJlc3VtaWRvcjogdHlwZW9mIHJlc3VtaWRvcmVzWzBdLCBpOm51bWJlcik9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGtleT17aX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVzdW1pZG9yLm5vbWJyZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XHJcbiAgICAgICAgICAgIDwvVGFibGVIZWFkPlxyXG4gICAgICAgIDwvVGFibGU+XHJcbiAgICAgICAgfVxyXG4gICAgPC9QYXBlcj5cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gRGVzcGxlZ2FyQ2l0YVBhY3RhZGEocHJvcHM6e3Jlc3B1ZXN0YXM6UmVzcHVlc3Rhc30pe1xyXG4gICAgY29uc3Qge3Jlc3B1ZXN0YXN9ID0gcHJvcHM7XHJcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjaXRhLXBhY3RhZGFcIj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJDaXRhIHBhY3RhZGEgY29uIFwiIHZhbG9yPXtyZXNwdWVzdGFzW3AxMl19Lz48L2Rpdj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJDZWwuOlwiIHZhbG9yPXtyZXNwdWVzdGFzW3NwMl19Lz48L2Rpdj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJUZWwuOlwiIHZhbG9yPXtyZXNwdWVzdGFzW3NwM119Lz48L2Rpdj5cclxuICAgICAgICA8ZGl2PjxBdHJpYnV0byBub21icmU9XCJGZWNoYTpcIiB2YWxvcj17cmVzcHVlc3Rhc1tzcDRdfS8+PC9kaXY+XHJcbiAgICAgICAgPGRpdj48QXRyaWJ1dG8gbm9tYnJlPVwiSG9yYTpcIiB2YWxvcj17cmVzcHVlc3Rhc1tzcDVdfS8+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3BsZWdhckNpdGFQYWN0YWRhWVNlbGVjY2lvbmFkb0FudGVyaW9yVGVtKHByb3BzOnt0ZW06VEVNfSl7XHJcbiAgICBjb25zdCB7dGVtfSA9IHByb3BzO1xyXG4gICAgcmV0dXJuIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZW0tY2l0YVwiPlxyXG4gICAgICAgICAgICA8QXRyaWJ1dG8gbm9tYnJlPVwiQ2l0YTpcIiB2YWxvcj17dGVtLmNpdGF9Lz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGVzcGxlZ2FyVGVtKHByb3BzOnt0ZW06VEVNfSl7XHJcbiAgICBjb25zdCB7dGVtfSA9IHByb3BzO1xyXG4gICAgcmV0dXJuIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZW0tZG9taWNpbGlvXCI+e3RlbS5ub21jYWxsZX0ge3RlbS5ucm9jYXRhc3RyYWx9IDxBdHJpYnV0byBub21icmU9XCJwaXNvXCIgdmFsb3I9e3RlbS5waXNvfS8+IDxBdHJpYnV0byBub21icmU9XCJkcHRvXCIgdmFsb3I9e3RlbS5kZXBhcnRhbWVudG99Lz4gPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cInNlY3RvclwiIHZhbG9yPXt0ZW0uc2VjdG9yfS8+XHJcbiAgICAgICAgICAgIDxBdHJpYnV0byBub21icmU9XCJlZGlmaWNpb1wiIHZhbG9yPXt0ZW0uZWRpZmljaW99Lz5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cImNhc2FcIiB2YWxvcj17dGVtLmNhc2F9Lz5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cImVudHJhZGFcIiB2YWxvcj17dGVtLmVudHJhZGF9Lz5cclxuICAgICAgICAgICAgPEF0cmlidXRvIG5vbWJyZT1cImhhYml0YWNpb25cIiB2YWxvcj17dGVtLmhhYml0YWNpb259Lz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRlbS1vYnNlcnZhY2lvbmVzXCI+XHJcbiAgICAgICAgICAgIHt0ZW0ub2JzZXJ2YWNpb25lc30gXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEhvamFEZVJ1dGFEZXNwbGllZ3VlKCl7XHJcbiAgICB2YXIge2NhcmdhcywgbnVtX3NpbmNybywgaW5mb3JtYWNpb25IZHIsIHJlc3B1ZXN0YXN9ID0gZ2V0RGF0b3NCeVBhc3MoKTtcclxuICAgIHZhciB7bW9kb30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHttb2RvOnN0YXRlLm1vZG99KSk7XHJcbiAgICB2YXIgZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSBnZXRGZWVkYmFja1Jvd1ZhbGlkYXRvcigpXHJcbiAgICB2YXIgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgdXBkYXRlT25saW5lU3RhdHVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBzZXRPbmxpbmUod2luZG93Lm5hdmlnYXRvci5vbkxpbmUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXBwVmVyc2lvbiA9IGdldENhY2hlVmVyc2lvbigpO1xyXG4gICAgY29uc3QgW29ubGluZSwgc2V0T25saW5lXSA9IHVzZVN0YXRlKHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPEFwcEJhciBwb3NpdGlvbj1cImZpeGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8VG9vbGJhcj5cclxuICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgSG9qYSBkZSBydXRhXHJcbiAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAvLzxJY29uQnV0dG9uIHN0eWxlPXt7bWFyZ2luVG9wOiczcHgnfX1cclxuICAgICAgICAgICAgICAgICAgICAvLyAgICBjb2xvcj1cImluaGVyaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgIC8vb25DbGljaz17LypkaXNwYXRjaCBxdWUgbGxldmEgYSBwYW50YWxsYSBvcGNpb25lcyovfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vPlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgIDxJQ09OLlNldHRpbmdzLz5cclxuICAgICAgICAgICAgICAgICAgICAvLzwvSWNvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAge29ubGluZT9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvU2luY3Jvbml6YXIoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElDT04uU3luY0FsdC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgIDpudWxsfVxyXG4gICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxyXG4gICAgICAgICAgICA8L0FwcEJhcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2phLWRlLXJ1dGFcIj5cclxuICAgICAgICAgICAgICAgIHttb2RvLmRlbW8/PGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5Nb2RvIGRlbW8gPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgY29sb3I9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+ZGlzcGF0Y2goZGlzcGF0Y2hlcnMuUkVJTklDSUFSX0RFTU8oe30pKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlaW5pY2lhclxyXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+Om51bGx9XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vbWJyZS12ZXJzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5EaXJlY2Npw7NuIEdlbmVyYWwgZGUgRXN0YWTDrXN0aWNhIHkgQ2Vuc29zIC0gQy5BLkIuQS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntteS5nZXRMb2NhbFZhcignYXBwLXZlcnNpb24nKX0gc2luY3JvIHtudW1fc2luY3JvfSAtIHZlcnNpw7NuIHthcHBWZXJzaW9ufTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7bGlrZUFyKGNhcmdhcykubWFwKChjYXJnYTogQ2FyZ2EsIGlkQ2FyZ2E6IElkQ2FyZ2EsIF8sIHBvc2ljaW9uOm51bWJlcik9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxEZXNwbGVnYXJDYXJnYSBrZXk9e2lkQ2FyZ2F9IGNhcmdhPXtjYXJnYX0gaWRDYXJnYT17aWRDYXJnYX0gcG9zaWNpb249e3Bvc2ljaW9ufSBpbmZvcm1hY2lvbkhkcj17aW5mb3JtYWNpb25IZHJ9IGZlZWRiYWNrUm93VmFsaWRhdG9yPXtmZWVkYmFja1Jvd1ZhbGlkYXRvcn0gcmVzcHVlc3Rhcz17cmVzcHVlc3Rhc30vPlxyXG4gICAgICAgICAgICAgICAgKS5hcnJheSgpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBMaXN0YVRleHRvcyhwcm9wczp7dGV4dG9zOnN0cmluZ1tdfSl7XHJcbiAgICByZXR1cm4gPHVsPlxyXG4gICAgICAgIHtwcm9wcy50ZXh0b3MubWFwKHQ9PjxsaT48VHlwb2dyYXBoeT57dH08L1R5cG9ncmFwaHk+PC9saT4pfVxyXG4gICAgPC91bD47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBCaWVudmVuaWRhRGVzcGxpZWd1ZShwcm9wczp7bW9kbzpDYXNvU3RhdGVbXCJtb2RvXCJdfSl7XHJcbiAgICB2YXIgZGlzcGF0Y2g9dXNlRGlzcGF0Y2goKTtcclxuICAgIHJldHVybiA8UGFwZXIgY2xhc3NOYW1lPVwiYmllbnZlbmlkYVwiPlxyXG4gICAgICAgIHtwcm9wcy5tb2RvLmRlbW8/XHJcbiAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5ERU1PIGRlbCBzaXN0ZW1hIGRlIHJlbGV2YW1pZW50byBkZSBETUVOQ1U8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5FbiBlc3RhIGRlbW86PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgPExpc3RhVGV4dG9zIHRleHRvcz17W1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWxndW5hcyB2aXZpZW5kYXMgYXBhcmVjZW4gcmVsZXZhZGFzIChlbCBib3TDs24gZXN0w6EgZGUgY29sb3IpIHNpcnZlbiBkZSBlamVtcGxvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJMbyBxdWUgc2UgY2FyZ3VlbiBzZSBndWFyZGFuIGxvY2FsbWVudGUgcGVybyBubyBzZSB0cmFzbWl0ZW4gYSBsYSBiYXNlIGRlIGRhdG9zXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJTZSBwdWVkZSB2b2x2ZXIgYSBsYSB2ZXJzacOzbiBpbmljaWFsIChvIHNlYSBib3JyYXIgbG8gcXVlIHNlIGd1YXJkw7MgbG9jYWxtZW50ZSkgZGVzZGUgbGEgaG9qYSBkZSBydXRhIGJvdG9uIFtyZWluaWNpYXIgZGVtb11cIixcclxuICAgICAgICAgICAgICAgICAgICBcIlRvZGF2w61hIGhheSBjb3NhcyBxdWUgZmFsdGFuIG8gcHVlZGVuIGNhbWJpYXJcIixcclxuICAgICAgICAgICAgICAgIF19IC8+XHJcbiAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICA6PD5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PkVuY3Vlc3RhIGRlIFNlcm9wcmV2YWxlbmNpYSBkZSBDT1ZJRC0xOTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgb25DbGljaz17KCk9PnsgZ290b1NpbmNyb25pemFyKCk7IH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3Bhbj5TaW5jcm9uaXphciA8L3NwYW4+IDxJQ09OLlN5bmNBbHQvPlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5kaXNwYXRjaChkaXNwYXRjaGVycy5TRVRfT1BDSU9OKHtvcGNpb246J2JpZW52ZW5pZG8nLCB2YWxvcjp0cnVlfSkpfVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4+Q29udGludWFyIDwvc3Bhbj4gPElDT04uU2VuZC8+XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICA8L1BhcGVyPlxyXG59XHJcblxyXG4vL0NPTlRST0wgREUgUEVTVEHDkUFTXHJcbnZhciBhbGxPcGVuZWRUYWJzOntbeDpzdHJpbmddOm51bWJlcn09e307XHJcbnZhciBpbmZvT3BlbmVkVGFicz17XHJcbiAgICBhbGxPcGVuZWRUYWJzLFxyXG4gICAgbXlJZDonY2FsY3VsYW5kby4uLicsXHJcbiAgICBvdGhlclRhYnNOYW1lczonJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gT3BlbmVkVGFicygpe1xyXG4gICAgY29uc3QgW3RhYnMsIHNldFRhYnNdID0gdXNlU3RhdGUoaW5mb09wZW5lZFRhYnMub3RoZXJUYWJzTmFtZXMpO1xyXG4gICAgdmFyIHttb2RvRGlyZWN0b30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHttb2RvRGlyZWN0bzpzdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0b30pKTtcclxuICAgIGNvbnN0IHVwZGF0ZVRhYnNTdGF0dXMgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHNldFRhYnMoaW5mb09wZW5lZFRhYnMub3RoZXJUYWJzTmFtZXMpO1xyXG4gICAgfVxyXG4gICAgdXNlRWZmZWN0KCgpPT57XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ215LXRhYnMnLHVwZGF0ZVRhYnNTdGF0dXMpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbXktdGFicycsdXBkYXRlVGFic1N0YXR1cyk7XHJcbiAgICB9LFtdKVxyXG4gICAgcmV0dXJuIG1vZG9EaXJlY3RvP251bGw6KHRhYnMpP1xyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGFiLWNvdW50ZXIgdGFiLWVycm9yXCI+wqFBVEVOQ0nDk04hIEhheSBtw6FzIGRlIHVuYSB2ZW50YW5hIGFiaWVydGEuIFNlIHB1ZWRlbiBwZXJkZXIgZGF0b3M6IHt0YWJzfTwvZGl2PlxyXG4gICAgOlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGFiLWNvdW50ZXJcIj7inJQ8L2Rpdj5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEFwcERtRW5jdSgpe1xyXG4gICAgdmFyIHtmb3JQaywgYmllbnZlbmlkbywgbW9kb30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHsuLi5zdGF0ZS5vcGNpb25lcywgLi4uc3RhdGUubW9kbywgLi4uc3RhdGV9KSk7XHJcbiAgICBpZighYmllbnZlbmlkbyl7XHJcbiAgICAgICAgcmV0dXJuIDxCaWVudmVuaWRhRGVzcGxpZWd1ZSBtb2RvPXttb2RvfS8+IFxyXG4gICAgfWVsc2UgaWYoZm9yUGs9PW51bGwpe1xyXG4gICAgICAgIHJldHVybiA8SG9qYURlUnV0YURlc3BsaWVndWUgLz4gXHJcbiAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gPEZvcm11bGFyaW9EZXNwbGllZ3VlIGZvclBrPXtmb3JQa30vPlxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBQYW50YWxsYUluaWNpYWxTaW5DYXJnYShfcHJvcHM6e30pe1xyXG4gICAgY29uc3QgdXBkYXRlT25saW5lU3RhdHVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBzZXRPbmxpbmUod2luZG93Lm5hdmlnYXRvci5vbkxpbmUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgW29ubGluZSwgc2V0T25saW5lXSA9IHVzZVN0YXRlKHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdXBkYXRlT25saW5lU3RhdHVzKTtcclxuICAgIGNvbnN0IHBhcmFncmFwaFN0eWxlcz17Zm9udFNpemU6XCIxLjJyZW1cIiwgZm9udFdlaWdodDo2MDAsIHBhZGRpbmc6IFwiNXB4IDEwcHhcIn07XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxBcHBCYXIgcG9zaXRpb249XCJmaXhlZFwiPlxyXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgc3R5bGU9e3ttYXJnaW46MjV9fT5cclxuICAgICAgICAgICAgICAgICAgICBEaXNwb3NpdGl2byBzaW4gY2FyZ2FcclxuICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPC9BcHBCYXI+XHJcbiAgICAgICAgICAgIDxtYWluPlxyXG4gICAgICAgICAgICAgICAgPFBhcGVyIHN0eWxlPXt7aGVpZ2h0Oic2MDBweCcsIHBhZGRpbmc6XCIxNXB4XCIsIG1hcmdpblRvcDo3NX19PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtvbmxpbmU/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNvbXBvbmVudD1cInBcIiBzdHlsZT17cGFyYWdyYXBoU3R5bGVzfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luY3Jvbml6YXIgZGlzcG9zaXRpdm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3twYWRkaW5nOic1cHgnfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvU2luY3Jvbml6YXIoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElDT04uU3luY0FsdC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBjb21wb25lbnQ9XCJwXCIgc3R5bGU9e3BhcmFncmFwaFN0eWxlc30+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gaGF5IGNvbmV4acOzbiBhIGludGVybmV0LCBwb3IgZmF2b3IgY29uw6ljdGUgZWwgZGlzcG9zaXRpdm8gYSB1bmEgcmVkIHBhcmEgc2luY3Jvbml6YXIgdW5hIGhvamEgZGUgcnV0YS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9QYXBlcj5cclxuICAgICAgICAgICAgPC9tYWluPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFBhbnRhbGxhSW5pY2lhbCgpe1xyXG4gICAgdmFyIHtmb3JQaywgYmllbnZlbmlkbywgbW9kb30gPSB1c2VTZWxlY3Rvcigoc3RhdGU6Q2Fzb1N0YXRlKT0+KHsuLi5zdGF0ZS5vcGNpb25lcywgLi4uc3RhdGUubW9kbywgLi4uc3RhdGV9KSk7XHJcbiAgICBpZighYmllbnZlbmlkbyl7XHJcbiAgICAgICAgcmV0dXJuIDxCaWVudmVuaWRhRGVzcGxpZWd1ZSBtb2RvPXttb2RvfS8+IFxyXG4gICAgfWVsc2UgaWYoZm9yUGs9PW51bGwpe1xyXG4gICAgICAgIHJldHVybiA8SG9qYURlUnV0YURlc3BsaWVndWUgLz4gXHJcbiAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gPEZvcm11bGFyaW9EZXNwbGllZ3VlIGZvclBrPXtmb3JQa30vPlxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG1QYW50YWxsYUluaWNpYWxTaW5DYXJnYSgpe1xyXG4gICAgdHJ5e1xyXG4gICAgICAgIGF3YWl0IGxvYWRDU1MoQk9PVFNUUkFQXzVfMV8zX1NSQyk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICB0aHJvdyhlcnIpXHJcbiAgICB9XHJcbiAgICBSZWFjdERPTS5yZW5kZXIoXHJcbiAgICAgICAgPFBhbnRhbGxhSW5pY2lhbFNpbkNhcmdhLz4sXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JylcclxuICAgIClcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwob3B0czp7bW9kb0RlbW86Ym9vbGVhbiwgZm9yUGtSYWl6PzpGb3JQa1JhaXp9KXtcclxuICAgIC8vIHRyYWVyIGxvcyBtZXRhZGF0b3MgZW4gdW5hIFwiZXN0cnVjdHVyYVwiXHJcbiAgICAvLyB0cmFlciBsb3MgZGF0b3MgZGUgbG9jYWxTdG9yYWdlXHJcbiAgICAvLyB2ZXJpZmljYXIgZWwgbWFpbiBMYXlvdXRcclxuICAgIGNvbnN0IHN0b3JlID0gYXdhaXQgZG1UcmFlckRhdG9zRm9ybXVsYXJpbyhvcHRzKVxyXG4gICAgdHJ5e1xyXG4gICAgICAgIGF3YWl0IGxvYWRDU1MoQk9PVFNUUkFQXzVfMV8zX1NSQyk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICB0aHJvdyhlcnIpXHJcbiAgICB9XHJcbiAgICBSZWFjdERPTS5yZW5kZXIoXHJcbiAgICAgICAgPFJlbmRlclByaW5jaXBhbCBzdG9yZT17c3RvcmV9IGRpc3BhdGNoZXJzPXtkaXNwYXRjaGVyc30gbWVuc2FqZVJldG9ybm89e29wdHMuZm9yUGtSYWl6P1wiVm9sdmVyIGFsIGZvcm11bGFyaW9cIjpcIlZvbHZlciBhIGxhIGhvamEgZGUgcnV0YVwifT5cclxuICAgICAgICAgICAgPE9wZW5lZFRhYnMvPlxyXG4gICAgICAgICAgICA8QXBwRG1FbmN1Lz5cclxuICAgICAgICA8L1JlbmRlclByaW5jaXBhbD4sXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JylcclxuICAgIClcclxufVxyXG5cclxuaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpe1xyXG4gICAgLy8gQHRzLWlnbm9yZSBwYXJhIGhhY2VybG9cclxuICAgIHdpbmRvdy5kZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsID0gZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbDtcclxuICAgIC8vIEB0cy1pZ25vcmUgcGFyYSBoYWNlcmxvXHJcbiAgICB3aW5kb3cuZG1QYW50YWxsYUluaWNpYWxTaW5DYXJnYSA9IGRtUGFudGFsbGFJbmljaWFsU2luQ2FyZ2E7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBsb2FkSW5zdGFuY2UoKXtcclxuICAgIGlmKHR5cGVvZiBCcm9hZGNhc3RDaGFubmVsID09PSAndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ2NvbnRhZG9yJyk7XHJcbiAgICB2YXIgbXlJZD1TdHJpbmcuZnJvbUNvZGVQb2ludCgxMDArTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApKStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKS8vKyctJytuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGFsbE9wZW5lZFRhYnNbbXlJZF09MTtcclxuICAgIGluZm9PcGVuZWRUYWJzLm15SWQ9bXlJZDtcclxuICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgnbXktdGFicycpO1xyXG4gICAgYmMub25tZXNzYWdlPWZ1bmN0aW9uKGV2KXtcclxuICAgICAgICBpZihldi5kYXRhLnF1ZT09J3NveScpe1xyXG4gICAgICAgICAgICBpZighYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXSl7XHJcbiAgICAgICAgICAgICAgICBhbGxPcGVuZWRUYWJzW2V2LmRhdGEuaWRdPTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihldi5kYXRhLnF1ZT09J3VubG9hZCcpe1xyXG4gICAgICAgICAgICBkZWxldGUgYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZXYuZGF0YS5xdWU9PSdsb2FkJyl7XHJcbiAgICAgICAgICAgIGFsbE9wZW5lZFRhYnNbZXYuZGF0YS5pZF09MTtcclxuICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2Uoe3F1ZTonc295JyxpZDpteUlkfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluZm9PcGVuZWRUYWJzLm90aGVyVGFic05hbWVzPWxpa2VBcihhbGxPcGVuZWRUYWJzKS5maWx0ZXIoKF8saWQpPT5pZCE9bXlJZCkuam9pbignLCcpO1xyXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH07XHJcbiAgICBiYy5wb3N0TWVzc2FnZSh7cXVlOidsb2FkJyxpZDpteUlkfSk7XHJcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5sb2FkJyxmdW5jdGlvbigpe1xyXG4gICAgICAgIGJjLnBvc3RNZXNzYWdlKHtxdWU6J3VubG9hZCcsaWQ6bXlJZH0pO1xyXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH0pXHJcbiAgICAvL21vc3RyYXJRdWllbmVzU29tb3MoKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNldExpYnJlRGVzcGxpZWd1ZSA9IChsaWJyZTpMaWJyZURlc3BsaWVndWVUeXBlKT0+TGlicmVEZXNwbGllZ3VlID0gbGlicmVcclxuXHJcbnNldExpYnJlRGVzcGxpZWd1ZSgocHJvcHM6e1xyXG4gICAga2V5OnN0cmluZ1xyXG4gICAgY2FzaWxsZXJvOkxpYnJlXHJcbiAgICBmb3JtdWxhcmlvOkZvcm11bGFyaW9cclxuICAgIGZvclBrOkZvclBrXHJcbn0pPT48ZGl2IGtleT17cHJvcHMua2V5fSBpZD17cHJvcHMuY2FzaWxsZXJvLmlkX2Nhc2lsbGVyb30+ZXN0ZSBjYXNpbGxlcm8gZGViZSByZWRlZmluaXJzZSBlbiBsYSBBUFAgZmluYWwgeSBzdSB1c28gZXMgZXhjbHVzaXZvIGRlbCDDoXJlYSBpbmZvcm3DoXRpY2E8L2Rpdj4pXHJcblxyXG5zZXRDYWxjdWxhclZhcmlhYmxlcygocmVzcHVlc3Rhc1JhaXo6UmVzcHVlc3Rhc1JhaXosIGZvclBrOkZvclBrKT0+e1xyXG4gICAgLy9UT0RPIEdFTkVSQUxJWkFSXHJcbiAgICB2YXIgdWFzSXRlcmFyOntcclxuICAgICAgICBba2V5IGluIElkVW5pZGFkQW5hbGlzaXNdOntcclxuICAgICAgICAgICAgdWFQZXJzb25hczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgICAgICAgICAgdmFyU2V4b1BlcnNvbmE6IElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHZhckxvc05vbWJyZXM6IElkVmFyaWFibGVcclxuICAgICAgICB9XHJcbiAgICB9ID0ge1xyXG4gICAgICAgIGhvZ2FyZXM6IHtcclxuICAgICAgICAgICAgdWFQZXJzb25hczogJ3BlcnNvbmFzJyxcclxuICAgICAgICAgICAgdmFyU2V4b1BlcnNvbmE6ICdzZXhvJyBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICB2YXJOb21icmVQZXJzb25hOiAnbm9tYnJlJyBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICB2YXJMb3NOb21icmVzOiBcImxvc19ub21icmVzXCIgYXMgSWRWYXJpYWJsZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy9AdHMtaWdub3JlIGVzIHVuaWRhZCBkZSBhbmFsaXNpc1xyXG4gICAgICAgIGhvZ2FyZXNfc3VwOiB7XHJcbiAgICAgICAgICAgIHVhUGVyc29uYXM6ICdwZXJzb25hc19zdXAnIGFzIElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICAgICAgICAgIHZhclNleG9QZXJzb25hOiAnc2V4b19zdXAnICBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICB2YXJOb21icmVQZXJzb25hOiAnbm9tYnJlX3N1cCcgIGFzIElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHZhckxvc05vbWJyZXM6IFwibm9tYnJlc19jb21wb25lbnRlc19zdXBcIiAgYXMgSWRWYXJpYWJsZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxpa2VBcih1YXNJdGVyYXIpLmZvckVhY2goKGNvbmZpZ0hvZ2FyZXMsdWFIb2dhcmVzKT0+e1xyXG4gICAgICAgIHZhciBlc3RydWN0dXJhID0gZ2V0RXN0cnVjdHVyYSgpO1xyXG4gICAgICAgIGlmKGVzdHJ1Y3R1cmEudW5pZGFkZXNfYW5hbGlzaXNbdWFIb2dhcmVzXSl7XHJcbiAgICAgICAgICAgIGZvcih2YXIgcmVzcHVlc3Rhc0hvZ2FyIG9mIHJlc3B1ZXN0YXNSYWl6W3VhSG9nYXJlc118fFtdKXtcclxuICAgICAgICAgICAgICAgIGlmKCFyZXNwdWVzdGFzSG9nYXJbY29uZmlnSG9nYXJlcy51YVBlcnNvbmFzXSB8fCByZXNwdWVzdGFzSG9nYXJbY29uZmlnSG9nYXJlcy51YVBlcnNvbmFzXS5sZW5ndGg9PTAgfHwgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc11bMF1bY29uZmlnSG9nYXJlcy52YXJTZXhvUGVyc29uYV0gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudmFyTG9zTm9tYnJlc10pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZighcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc10pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc109W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudmFyTG9zTm9tYnJlc11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChub21icmU6c3RyaW5nKT0+bm9tYnJlLnRyaW0oKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKG5vbWJyZTpzdHJpbmcsIGk6bnVtYmVyKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3B1ZXN0YXNIb2dhcltjb25maWdIb2dhcmVzLnVhUGVyc29uYXNdW2ldID0gcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc11baV0gfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc0hvZ2FyW2NvbmZpZ0hvZ2FyZXMudWFQZXJzb25hc11baV1bY29uZmlnSG9nYXJlcy52YXJOb21icmVQZXJzb25hXSA9IG5vbWJyZS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXNwdWVzdGFzUmFpei52ZG9taW5pbz1nZXREYXRvc0J5UGFzcygpLmluZm9ybWFjaW9uSGRyW2ZvclBrLnZpdmllbmRhXS50ZW0uZG9taW5pbztcclxufSlcclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKXtcclxuICAgIGxvYWRJbnN0YW5jZSgpXHJcbn0pXHJcbi8vRklOIENPTlRST0wgUEVTVEHDkUFTXHJcblxyXG5mdW5jdGlvbiBsb2FkQ1NTKGNzc1VSTDpzdHJpbmcsIGlkPzpzdHJpbmcpOlByb21pc2U8dm9pZD57XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKCByZXNvbHZlLCByZWplY3QgKT0+e1xyXG4gICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2xpbmsnICk7XHJcbiAgICAgICAgbGluay5yZWwgID0gJ3N0eWxlc2hlZXQnO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IGNzc1VSTDtcclxuICAgICAgICBsaW5rLmlkID0gaWQgfHwgY3NzVVJMO1xyXG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIGxpbmsgKTtcclxuICAgICAgICBsaW5rLm9ubG9hZCA9ICgpPT57IFxyXG4gICAgICAgICAgICByZXNvbHZlKCk7IFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdHJhZSAke2Nzc1VSTH1gKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxpbmsub25lcnJvcj0oZXJyKT0+e1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgY2FyZ2FuZG8gZWwgZXN0aWxvJywgZXJyKVxyXG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBwcm9ibGVtYSBjYXJnYW5kbyBlc3RpbG8gJHtjc3NVUkx9YCkpXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZUNTU0J5SWQoaWQ6c3RyaW5nKXtcclxuICAgIHZhciBsaW5rTm9kZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICBsaW5rTm9kZT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobGlua05vZGUpO1xyXG59XHJcblxyXG5jb25zdCBCT09UU1RSQVBfNV8xXzNfU1JDID0gJ2Nzcy9ib290c3RyYXAubWluLmNzcyc7Il19
|
|
@@ -867,6 +867,7 @@ function TextoDespliegue(props:{casillero:Texto, forPk:ForPk}){
|
|
|
867
867
|
// var nuevaForPk={...forPk, formulario:idFormularioDestino};
|
|
868
868
|
// nuevaForPk[nuevoCampoPk] = defBoton.num
|
|
869
869
|
dispatch(dispatchers.CAMBIAR_FORMULARIO({forPk:defBoton.forPk, apilarVuelta:true}));
|
|
870
|
+
dispatchByPass(accion_abrir_formulario,{forPk:defBoton.forPk})
|
|
870
871
|
}
|
|
871
872
|
return <DesplegarCasillero
|
|
872
873
|
id={`${id}-externo`}
|
package/package.json
CHANGED