/*=============================================================================================	
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : Andri Samsuri
==============================================================================================*/
/*=============================================================================================	
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : FrontEnd Team  
==============================================================================================*/
/* import bourbon - http://bourbon.io/docs */
/* color global
----------------------------------------------------------------------------------------------*/
@media all and (max-width: 1599px) {
  .btn {
    font-size: 13px;
    height: 45px;
    line-height: 45px;
  }
  .btn.btn-line {
    height: 40px;
    line-height: 36px;
  }
  .btn.btn-line-2 {
    line-height: 40px;
  }
  .homeslider .caption .title-small {
    font-size: 24px;
    line-height: 34px;
  }
  .homeslider .caption .title-small:before {
    width: 25px;
    height: 32px;
    background-size: 100% auto;
  }
  .homeslider .caption .title-large {
    font-size: 60px;
    line-height: 50px;
    margin-bottom: 15px;
  }
  .homeslider .caption .descrip {
    margin: 0 0 20px 0;
    font-size: 16px;
  }
  .homeslider .slick-arrow {
    width: 40px;
    height: 40px;
  }
  .banner-large-home .caption {
    font-size: 30px;
  }
  .banner-large-home .caption .tagline {
    width: 490px;
    line-height: 36px;
  }
  .banner-page .caption .title-small {
    font-size: 20px;
  }
  .banner-page .caption .title-large {
    font-size: 60px;
    line-height: 50px;
    margin-bottom: 15px;
  }
  .row-spread .text {
    font-size: 30px;
  }
  .btn-scroll {
    width: 19px;
    height: 35px;
  }
  .row-discuss .btn {
    line-height: 45px;
  }
  .box-voucher {
    max-height: 400px;
    overflow: auto;
  }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVza3RvcC5jc3MiLCJzb3VyY2VzIjpbImRlc2t0b3Auc2NzcyIsInNhc3MtbGliLnNjc3MiLCJib3VyYm9uL19ib3VyYm9uLnNjc3MiLCJib3VyYm9uL3NldHRpbmdzL19wcmVmaXhlci5zY3NzIiwiYm91cmJvbi9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsImJvdXJib24vc2V0dGluZ3MvX2Fzc2V0LXBpcGVsaW5lLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fYXNzaWduLWlucHV0cy5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2NvbnRhaW5zLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fY29udGFpbnMtZmFsc3kuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1sZW5ndGguc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1saWdodC5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2lzLW51bWJlci5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2lzLXNpemUuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19weC10by1lbS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3B4LXRvLXJlbS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3NoYWRlLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fc3RyaXAtdW5pdHMuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL190aW50LnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdW5wYWNrLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fbW9kdWxhci1zY2FsZS5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19jb252ZXJ0LXVuaXRzLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2RpcmVjdGlvbmFsLXZhbHVlcy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19mb250LXNvdXJjZS1kZWNsYXJhdGlvbi5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1hbmdsZS1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLWdyYWRpZW50LXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1hcmctcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fcmVuZGVyLWdyYWRpZW50cy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19zaGFwZS1zaXplLXN0cmlwcGVyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3N0ci10by1udW0uc2NzcyIsImJvdXJib24vY3NzMy9fYW5pbWF0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsImJvdXJib24vY3NzMy9fYmFja2ZhY2UtdmlzaWJpbGl0eS5zY3NzIiwiYm91cmJvbi9jc3MzL19iYWNrZ3JvdW5kLnNjc3MiLCJib3VyYm9uL2NzczMvX2JhY2tncm91bmQtaW1hZ2Uuc2NzcyIsImJvdXJib24vY3NzMy9fYm9yZGVyLWltYWdlLnNjc3MiLCJib3VyYm9uL2NzczMvX2NhbGMuc2NzcyIsImJvdXJib24vY3NzMy9fY29sdW1ucy5zY3NzIiwiYm91cmJvbi9jc3MzL19maWx0ZXIuc2NzcyIsImJvdXJib24vY3NzMy9fZmxleC1ib3guc2NzcyIsImJvdXJib24vY3NzMy9fZm9udC1mYWNlLnNjc3MiLCJib3VyYm9uL2NzczMvX2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy5zY3NzIiwiYm91cmJvbi9jc3MzL19oaWRwaS1tZWRpYS1xdWVyeS5zY3NzIiwiYm91cmJvbi9jc3MzL19oeXBoZW5zLnNjc3MiLCJib3VyYm9uL2NzczMvX2ltYWdlLXJlbmRlcmluZy5zY3NzIiwiYm91cmJvbi9jc3MzL19rZXlmcmFtZXMuc2NzcyIsImJvdXJib24vY3NzMy9fbGluZWFyLWdyYWRpZW50LnNjc3MiLCJib3VyYm9uL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCJib3VyYm9uL2NzczMvX3BsYWNlaG9sZGVyLnNjc3MiLCJib3VyYm9uL2NzczMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwiYm91cmJvbi9jc3MzL19zZWxlY3Rpb24uc2NzcyIsImJvdXJib24vY3NzMy9fdGV4dC1kZWNvcmF0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwiYm91cmJvbi9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3VzZXItc2VsZWN0LnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYm9yZGVyLWNvbG9yLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1zdHlsZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci13aWR0aC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2J1dHRvbnMuc2NzcyIsImJvdXJib24vYWRkb25zL19jbGVhcmZpeC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2VsbGlwc2lzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fZm9udC1zdGFja3Muc2NzcyIsImJvdXJib24vYWRkb25zL19oaWRlLXRleHQuc2NzcyIsImJvdXJib24vYWRkb25zL19tYXJnaW4uc2NzcyIsImJvdXJib24vYWRkb25zL19wYWRkaW5nLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsImJvdXJib24vYWRkb25zL19wcmVmaXhlci5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3JldGluYS1pbWFnZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3NpemUuc2NzcyIsImJvdXJib24vYWRkb25zL190ZXh0LWlucHV0cy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3RpbWluZy1mdW5jdGlvbnMuc2NzcyIsImJvdXJib24vYWRkb25zL190cmlhbmdsZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3dvcmQtd3JhcC5zY3NzIiwiYm91cmJvbi9fYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cdFxyXG4gICAgQ29tcGFueSAgICA6IFBUIFdlYiBBcmNoaXRlY3QgVGVjaG5vbG9neSAtIHdlYmFycS5jb21cclxuICAgIERvY3VtZW50ICAgOiBTdHlsZXNoZWV0XHJcbiAgICBBdXRob3IgICAgIDogQW5kcmkgU2Ftc3VyaVxyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cclxuQGltcG9ydCBcInNhc3MtbGliXCI7XHJcblxyXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAxNTk5cHgpIHtcclxuXHJcblx0LmJ0biB7XHJcblx0XHRmb250LXNpemU6IDEzcHg7IFxyXG5cdFx0aGVpZ2h0OiA0NXB4OyBsaW5lLWhlaWdodDogNDVweDsgXHJcblx0XHQmLmJ0bi1saW5lIHtcclxuXHRcdFx0aGVpZ2h0OiA0MHB4OyBsaW5lLWhlaWdodDogMzZweDsgXHJcblx0XHR9XHJcblx0XHQmLmJ0bi1saW5lLTIge2xpbmUtaGVpZ2h0OiA0MHB4O30gXHJcblx0fVxyXG5cclxuXHQuaG9tZXNsaWRlciB7XHJcblx0XHQuY2FwdGlvbiB7XHJcblx0XHRcdC50aXRsZS1zbWFsbCB7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAyNHB4OyBsaW5lLWhlaWdodDogMzRweDtcclxuXHRcdFx0XHQmOmJlZm9yZSB7XHJcblx0XHRcdFx0XHR3aWR0aDoyNXB4OyBoZWlnaHQ6IDMycHg7IFxyXG5cdFx0XHRcdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87IFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBcclxuXHRcdFx0LnRpdGxlLWxhcmdlIHtcclxuXHRcdFx0XHRmb250LXNpemU6IDYwcHg7IGxpbmUtaGVpZ2h0OiA1MHB4OyBtYXJnaW4tYm90dG9tOiAxNXB4OyBcclxuXHRcdFx0fSBcclxuXHRcdFx0LmRlc2NyaXAge21hcmdpbjogMCAwIDIwcHggMDsgZm9udC1zaXplOiAxNnB4O30gXHJcblx0XHR9XHJcblx0XHQuc2xpY2stYXJyb3cge1xyXG5cdFx0XHR3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyBcclxuXHRcdH1cclxuXHR9XHJcblx0LmJhbm5lci1sYXJnZS1ob21lIHtcclxuXHRcdC5jYXB0aW9uIHtcclxuXHRcdFx0Zm9udC1zaXplOiAzMHB4O1xyXG5cdFx0XHQudGFnbGluZSB7d2lkdGg6IDQ5MHB4OyBsaW5lLWhlaWdodDogMzZweDt9ICBcclxuXHRcdH1cclxuXHR9XHJcblx0LmJhbm5lci1wYWdlIHtcclxuXHRcdC5jYXB0aW9uIHtcclxuXHRcdFx0LnRpdGxlLXNtYWxsIHtmb250LXNpemU6IDIwcHg7fSBcclxuXHRcdFx0LnRpdGxlLWxhcmdlIHtcclxuXHRcdFx0XHRmb250LXNpemU6IDYwcHg7XHJcblx0XHRcdCAgICBsaW5lLWhlaWdodDogNTBweDtcclxuXHRcdFx0ICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcblx0XHRcdH0gXHJcblx0XHR9XHJcblx0fVxyXG5cdC5yb3ctc3ByZWFkIHtcclxuXHRcdC50ZXh0IHtmb250LXNpemU6IDMwcHg7fSBcclxuXHR9XHJcblx0LmJ0bi1zY3JvbGwge3dpZHRoOiAxOXB4OyBoZWlnaHQ6IDM1cHg7fSBcclxuXHJcblxyXG5cdC5yb3ctZGlzY3VzcyB7XHJcblx0XHQuYnRuIHtcclxuXHRcdFx0bGluZS1oZWlnaHQ6IDQ1cHg7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQuYm94LXZvdWNoZXIge1xyXG5cdFx0bWF4LWhlaWdodDogNDAwcHg7IG92ZXJmbG93OiBhdXRvO1xyXG5cdH1cclxuXHJcblxyXG5cdFxyXG59IiwiLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cdFxyXG4gICAgQ29tcGFueSAgICA6IFBUIFdlYiBBcmNoaXRlY3QgVGVjaG5vbG9neSAtIHdlYmFycS5jb21cclxuICAgIERvY3VtZW50ICAgOiBTdHlsZXNoZWV0XHJcbiAgICBBdXRob3IgICAgIDogRnJvbnRFbmQgVGVhbSAgXHJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xyXG5cclxuLyogaW1wb3J0IGJvdXJib24gLSBodHRwOi8vYm91cmJvbi5pby9kb2NzICovXHJcbkBpbXBvcnQgXCJib3VyYm9uL2JvdXJib25cIjtcclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uKCRhdHRyKXtcclxuICAgIHRyYW5zaXRpb246ICRhdHRyO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkYXR0cjtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogJGF0dHI7XHJcbiAgICAtbXMtdHJhbnNpdGlvbjogJGF0dHI7XHJcbiAgICAtby10cmFuc2l0aW9uOiAkYXR0cjtcclxufVxyXG5AbWl4aW4gdHJhbnNmb3JtKCRhdHRyKXtcclxuICAgIHRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtbW96LXRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtbXMtdHJhbnNmb3JtOiAkYXR0cjtcclxuICAgIC1vLXRyYW5zZm9ybTogJGF0dHI7XHJcbn1cclxuQG1peGluIGJvcmRlclJhZGl1cygkYXR0cil7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkYXR0cjtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJGF0dHI7XHJcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRhdHRyO1xyXG4gICAgLW1zLWJvcmRlci1yYWRpdXM6ICRhdHRyO1xyXG4gICAgLW8tYm9yZGVyLXJhZGl1czogJGF0dHI7XHJcbn1cclxuQG1peGluIGJveFNoYWRvdygkYXR0cil7XHJcbiAgICBib3gtc2hhZG93OiAgJGF0dHI7XHJcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRhdHRyO1xyXG4gICAgLW1vei1ib3gtc2hhZG93OiAkYXR0cjtcclxuICAgIC1tcy1ib3gtc2hhZG93OiAkYXR0cjtcclxuICAgIC1vLWJveC1zaGFkb3c6ICRhdHRyXHJcbn1cclxuQG1peGluIGJveFNpemluZygkYXR0cil7XHJcbiAgICBib3gtc2l6aW5nOiAgJGF0dHI7XHJcbiAgICAtd2Via2l0LWJveC1zaXppbmc6ICRhdHRyO1xyXG4gICAgLW1vei1ib3gtc2l6aW5nOiAkYXR0cjtcclxuICAgIC1tcy1ib3gtc2l6aW5nOiAkYXR0cjtcclxuICAgIC1vLWJveC1zaXppbmc6ICRhdHRyXHJcbn1cclxuQG1peGluIHBsYWNlaG9sZGVyIHtcclxuICAgIDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7QGNvbnRlbnR9XHJcbiAgICA6LW1vei1wbGFjZWhvbGRlciAgICAgICAgICAge0Bjb250ZW50fVxyXG4gICAgOjotbW96LXBsYWNlaG9sZGVyICAgICAgICAgIHtAY29udGVudH1cclxuICAgIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgICAgICB7QGNvbnRlbnR9ICBcclxufVxyXG5AbWl4aW4gYm94U2l6aW5nKCRhdHRyKXtcclxuICAgIC13ZWJraXQtYm94LXNpemluZzogJGF0dHI7XHJcbiAgICAtbW96LWJveC1zaXppbmc6ICRhdHRyO1xyXG4gICAgYm94LXNpemluZzogJGF0dHI7XHJcbn1cclxuQG1peGluIGNsZWFyZml4eyBcclxuICAgICY6YmVmb3JlLFxyXG4gICAgJjphZnRlcntcclxuICAgICAgICBjb250ZW50OiBcIiBcIjsgXHJcbiAgICAgICAgZGlzcGxheTogdGFibGU7IFxyXG4gICAgfVxyXG4gICAgJjphZnRlcntcclxuICAgICAgICBkaXNwbGF5OiBibG9jazsgXHJcbiAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgaGVpZ2h0OiAwcHg7XHJcbiAgICAgICAgLyptYXJnaW4tdG9wOiAtMXB4OyovXHJcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgfVxyXG4gICAgJntcclxuICAgICAgICAqem9vbTogMTtcclxuICAgIH1cclxufVxyXG5AbWl4aW4gdHJhbnNmb3Jtb3JpZ2luKCRhdHRyKXtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogJGF0dHI7XHJcbiAgICAtbW96LXRyYW5zZm9ybS1vcmlnaW46ICRhdHRyO1xyXG4gICAgLW8tdHJhbnNmb3JtLW9yaWdpbjogJGF0dHI7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAkYXR0cjtcclxufVxyXG5cclxuXHJcbi8qIGNvbG9yIGdsb2JhbFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuJGNfMTExOiAjMTExO1xyXG4kY18zMzM6ICMzMzM7XHJcbiRjXzY2NjogIzY2NjtcclxuJGNfOTk5OiAjOTk5O1xyXG4kY19lYTogI2VhZWFlYTtcclxuIiwiLy8gQm91cmJvbiA0LjIuN1xyXG4vLyBodHRwOi8vYm91cmJvbi5pb1xyXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IHRob3VnaHRib3QsIGluYy5cclxuLy8gTUlUIExpY2Vuc2VcclxuXHJcbkBpbXBvcnQgXCJzZXR0aW5ncy9wcmVmaXhlclwiO1xyXG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcclxuQGltcG9ydCBcInNldHRpbmdzL2Fzc2V0LXBpcGVsaW5lXCI7XHJcblxyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Fzc2lnbi1pbnB1dHNcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9jb250YWluc1wiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zLWZhbHN5XCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGVuZ3RoXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGlnaHRcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1udW1iZXJcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1zaXplXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHgtdG8tZW1cIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1yZW1cIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9zaGFkZVwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3N0cmlwLXVuaXRzXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludFwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3VucGFja1wiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcclxuXHJcbkBpbXBvcnQgXCJoZWxwZXJzL2NvbnZlcnQtdW5pdHNcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvZGlyZWN0aW9uYWwtdmFsdWVzXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWFuZ2xlLXBhcnNlclwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItZ3JhZGllbnQtcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWFyZy1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWdyYWRpZW50LXBhcnNlclwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9yZW5kZXItZ3JhZGllbnRzXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL3NoYXBlLXNpemUtc3RyaXBwZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvc3RyLXRvLW51bVwiO1xyXG5cclxuQGltcG9ydCBcImNzczMvYW5pbWF0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcclxuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcclxuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2NhbGNcIjtcclxuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcclxuQGltcG9ydCBcImNzczMvZmxleC1ib3hcIjtcclxuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5nc1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9oaWRwaS1tZWRpYS1xdWVyeVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9rZXlmcmFtZXNcIjtcclxuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XHJcbkBpbXBvcnQgXCJjc3MzL3BlcnNwZWN0aXZlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3BsYWNlaG9sZGVyXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xyXG5AaW1wb3J0IFwiY3NzMy9zZWxlY3Rpb25cIjtcclxuQGltcG9ydCBcImNzczMvdGV4dC1kZWNvcmF0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xyXG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3VzZXItc2VsZWN0XCI7XHJcblxyXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1jb2xvclwiO1xyXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1yYWRpdXNcIjtcclxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItc3R5bGVcIjtcclxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItd2lkdGhcIjtcclxuQGltcG9ydCBcImFkZG9ucy9idXR0b25zXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvY2xlYXJmaXhcIjtcclxuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL2ZvbnQtc3RhY2tzXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvaGlkZS10ZXh0XCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvbWFyZ2luXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvcGFkZGluZ1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL3Bvc2l0aW9uXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcclxuQGltcG9ydCBcImFkZG9ucy9yZXRpbmEtaW1hZ2VcIjtcclxuQGltcG9ydCBcImFkZG9ucy9zaXplXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvdGV4dC1pbnB1dHNcIjtcclxuQGltcG9ydCBcImFkZG9ucy90aW1pbmctZnVuY3Rpb25zXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvdHJpYW5nbGVcIjtcclxuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcclxuXHJcbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEdsb2JhbCB2YXJpYWJsZXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgdmVuZG9yIHByZWZpeGVzXHJcblxyXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XHJcbiRwcmVmaXgtZm9yLW1vemlsbGE6ICAgdHJ1ZSAhZGVmYXVsdDtcclxuJHByZWZpeC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xyXG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XHJcbiRwcmVmaXgtZm9yLXNwZWM6ICAgICAgdHJ1ZSAhZGVmYXVsdDtcclxuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBBIGdsb2JhbCBzZXR0aW5nIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBgJGFzc2V0LXBpcGVsaW5lYCB2YXJpYWJsZSBmb3IgYWxsIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBpdC5cclxuLy8vXHJcbi8vLyBAdHlwZSBCb29sXHJcblxyXG4kYXNzZXQtcGlwZWxpbmU6IGZhbHNlICFkZWZhdWx0O1xyXG4iLCJAZnVuY3Rpb24gYXNzaWduLWlucHV0cygkaW5wdXRzLCAkcHNldWRvOiBudWxsKSB7XHJcbiAgJGxpc3Q6ICgpO1xyXG5cclxuICBAZWFjaCAkaW5wdXQgaW4gJGlucHV0cyB7XHJcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcclxuICAgICRpbnB1dDogaWYoJHBzZXVkbywgJGlucHV0ICsgXCI6XCIgKyAkcHNldWRvLCAkaW5wdXQpO1xyXG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGlucHV0LCBjb21tYSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRsaXN0O1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXHJcbi8vL1xyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdFxyXG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHVlc1xyXG4vLy8gICBBIHNpbmdsZSB2YWx1ZSBvciBsaXN0IG9mIHZhbHVlcyB0byBjaGVjayBmb3IuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIGNvbnRhaW5zKCRsaXN0LCAkdmFsdWUpXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH1cclxuXHJcbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xyXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcclxuICAgIEBpZiB0eXBlLW9mKGluZGV4KCRsaXN0LCAkdmFsdWUpKSAhPSBcIm51bWJlclwiIHtcclxuICAgICAgQHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gdHJ1ZTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBkb2VzIG5vdCBjb250YWlucyBhIHZhbHVlLlxyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3RcclxuLy8vICAgVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC5cclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtCb29sfVxyXG5cclxuQGZ1bmN0aW9uIGNvbnRhaW5zLWZhbHN5KCRsaXN0KSB7XHJcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xyXG4gICAgQGlmIG5vdCAkaXRlbSB7XHJcbiAgICAgIEByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gZmFsc2U7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBDU1MgbGVuZ3RoLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcclxuXHJcbkBmdW5jdGlvbiBpcy1sZW5ndGgoJHZhbHVlKSB7XHJcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJudWxsXCIgYW5kIChzdHItc2xpY2UoJHZhbHVlICsgXCJcIiwgMSwgNCkgPT0gXCJjYWxjXCJcclxuICAgICAgIG9yIGluZGV4KGF1dG8gaW5oZXJpdCBpbml0aWFsIDAsICR2YWx1ZSlcclxuICAgICAgIG9yICh0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiBhbmQgbm90KHVuaXRsZXNzKCR2YWx1ZSkpKSk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrLlxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHA6Ly9yb2JvdHMudGhvdWdodGJvdC5jb20vY2xvc2VyLWxvb2stY29sb3ItbGlnaHRuZXNzXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvciAoSGV4KX0gJGNvbG9yXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIGlzLWxpZ2h0KCRjb2xvcilcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtCb29sfVxyXG5cclxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcclxuICAkLWxvY2FsLXJlZDogcmVkKHJnYmEoJGhleC1jb2xvciwgMSkpO1xyXG4gICQtbG9jYWwtZ3JlZW46IGdyZWVuKHJnYmEoJGhleC1jb2xvciwgMSkpO1xyXG4gICQtbG9jYWwtYmx1ZTogYmx1ZShyZ2JhKCRoZXgtY29sb3IsIDEpKTtcclxuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XHJcblxyXG4gIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MgPiAwLjY7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBudW1iZXIuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcclxuXHJcbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XHJcbiAgQHJldHVybiBjb250YWlucyhcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIiAwIDEgMiAzIDQgNSA2IDcgOCA5LCAkdmFsdWUpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIHNpemUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR2YWx1ZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXHJcblxyXG5AZnVuY3Rpb24gaXMtc2l6ZSgkdmFsdWUpIHtcclxuICBAcmV0dXJuIGlzLWxlbmd0aCgkdmFsdWUpXHJcbiAgICAgICAgICBvciBjb250YWlucyhcImZpbGxcIiBcImZpdC1jb250ZW50XCIgXCJtaW4tY29udGVudFwiIFwibWF4LWNvbnRlbnRcIiwgJHZhbHVlKTtcclxufVxyXG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcclxuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcclxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcclxuXHJcbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xyXG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XHJcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XHJcbiAgfVxyXG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcclxuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XHJcbiAgfVxyXG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcclxufVxyXG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byByZW1zXHJcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxyXG4vLyBBc3N1bWVzICRlbS1iYXNlIGlzIHRoZSBmb250LXNpemUgb2YgPGh0bWw+XHJcblxyXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xyXG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XHJcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XHJcbiAgfVxyXG5cclxuICAkYmFzZTogJGVtLWJhc2U7XHJcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xyXG4gICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcclxuICB9XHJcbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gTWl4ZXMgYSBjb2xvciB3aXRoIGJsYWNrLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcclxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHNoYWRlKCNmZmJiNTIsIDYwJSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Q29sb3J9XHJcblxyXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudCkge1xyXG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBTdHJpcHMgdGhlIHVuaXQgZnJvbSBhIG51bWJlci5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgJGRpbWVuc2lvbjogMTA7XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyIChVbml0bGVzcyl9XHJcblxyXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJHZhbHVlKSB7XHJcbiAgQHJldHVybiAoJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKSk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3JcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlciAoUGVyY2VudGFnZSl9ICRwZXJjZW50XHJcbi8vLyAgIFRoZSBhbW91bnQgb2Ygd2hpdGUgdG8gYmUgbWl4ZWQgaW4uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThkZmM5O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Q29sb3J9XHJcblxyXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50KSB7XHJcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkcGVyY2VudCk7XHJcbn1cclxuIiwiLy8gUmV0dXJuIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyBpZiBhcHByb3ByaWF0ZVxyXG4vLyBFeGFtcGxlOiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCh0cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kKSwgbW96KSAtPiAtbW96LXRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmRcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcHMsICR2ZW5kb3I6IGZhbHNlKSB7XHJcbiAgJG5ldy1wcm9wczogKCk7XHJcblxyXG4gIEBlYWNoICRwcm9wIGluICRwcm9wcyB7XHJcbiAgICAkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkbmV3LXByb3BzO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xyXG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxyXG4gIEBpZiAkdmVuZG9yIGFuZCAkcHJvcCA9PSB0cmFuc2Zvcm0ge1xyXG4gICAgQHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEByZXR1cm4gJHByb3A7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDb252ZXJ0cyBzaG9ydGhhbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbWFyZ2luOiB1bnBhY2soMWVtIDJlbSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcclxuLy8vICAgfVxyXG5cclxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XHJcbiAgQGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAxIHtcclxuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpO1xyXG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDIge1xyXG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMik7XHJcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMyB7XHJcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDMpIG50aCgkc2hvcnRoYW5kLCAyKTtcclxuICB9IEBlbHNlIHtcclxuICAgIEByZXR1cm4gJHNob3J0aGFuZDtcclxuICB9XHJcbn1cclxuIiwiLy8gU2NhbGluZyBWYXJpYWJsZXNcclxuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xyXG4kbWlub3Itc2Vjb25kOiAgICAgMS4wNjc7XHJcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcclxuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcclxuJG1ham9yLXRoaXJkOiAgICAgIDEuMjU7XHJcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcclxuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xyXG4kcGVyZmVjdC1maWZ0aDogICAgMS41O1xyXG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xyXG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XHJcbiRtaW5vci1zZXZlbnRoOiAgICAxLjc3ODtcclxuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xyXG4kb2N0YXZlOiAgICAgICAgICAgMjtcclxuJG1ham9yLXRlbnRoOiAgICAgIDIuNTtcclxuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xyXG4kbWFqb3ItdHdlbGZ0aDogICAgMztcclxuJGRvdWJsZS1vY3RhdmU6ICAgIDQ7XHJcblxyXG4kbW9kdWxhci1zY2FsZS1yYXRpbzogJHBlcmZlY3QtZm91cnRoICFkZWZhdWx0O1xyXG4kbW9kdWxhci1zY2FsZS1iYXNlOiBlbSgkZW0tYmFzZSkgIWRlZmF1bHQ7XHJcblxyXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWU6ICRtb2R1bGFyLXNjYWxlLWJhc2UsICRyYXRpbzogJG1vZHVsYXItc2NhbGUtcmF0aW8pIHtcclxuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xyXG4gICR2MjogbnRoKCR2YWx1ZSwgbGVuZ3RoKCR2YWx1ZSkpO1xyXG4gICR2YWx1ZTogJHYxO1xyXG5cclxuICAvLyBzY2FsZSAkdjIgdG8ganVzdCBhYm92ZSAkdjFcclxuICBAd2hpbGUgJHYyID4gJHYxIHtcclxuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcclxuICB9XHJcbiAgQHdoaWxlICR2MiA8ICR2MSB7XHJcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxyXG4gIH1cclxuXHJcbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcclxuICAkZG91YmxlLXN0cmFuZGVkOiAkdjIgPiAkdjE7XHJcblxyXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRpbmNyZW1lbnQge1xyXG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAqICRyYXRpbykgPiAkdjIge1xyXG4gICAgICAgICR2YWx1ZTogJHYyO1xyXG4gICAgICAgICR2MjogKCR2MiAqICRyYXRpbyk7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XHJcbiAgICAgICAgJHZhbHVlOiAkdjE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XHJcbiAgICAvLyBhZGp1c3QgJHYyIHRvIGp1c3QgYmVsb3cgJHYxXHJcbiAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCB7XHJcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XHJcbiAgICB9XHJcblxyXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XHJcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxIC8gJHJhdGlvKSA8ICR2MiB7XHJcbiAgICAgICAgJHZhbHVlOiAkdjI7XHJcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgJHYxOiAoJHYxIC8gJHJhdGlvKTtcclxuICAgICAgICAkdmFsdWU6ICR2MTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkdmFsdWU7XHJcbn1cclxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHN0ci10by1udW0gZm4uXHJcbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5AZnVuY3Rpb24gX2NvbnZlcnQtdW5pdHMoJG51bWJlciwgJHVuaXQpIHtcclxuICAkc3RyaW5nczogXCJweFwiLCBcImNtXCIsIFwibW1cIiwgXCIlXCIsIFwiY2hcIiwgXCJwaWNhXCIsIFwiaW5cIiwgXCJlbVwiLCBcInJlbVwiLCBcInB0XCIsIFwicGNcIiwgXCJleFwiLCBcInZ3XCIsIFwidmhcIiwgXCJ2bWluXCIsIFwidm1heFwiLCBcImRlZ1wiLCBcInJhZFwiLCBcImdyYWRcIiwgXCJ0dXJuXCI7XHJcbiAgJHVuaXRzOiAgIDFweCwgMWNtLCAxbW0sIDElLCAxY2gsIDFwaWNhLCAxaW4sIDFlbSwgMXJlbSwgMXB0LCAxcGMsIDFleCwgMXZ3LCAxdmgsIDF2bWluLCAxdm1heCwgMWRlZywgMXJhZCwgMWdyYWQsIDF0dXJuO1xyXG4gICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICR1bml0KTtcclxuXHJcbiAgQGlmIG5vdCAkaW5kZXgge1xyXG4gICAgQHdhcm4gXCJVbmtub3duIHVuaXQgYCN7JHVuaXR9YC5cIjtcclxuICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBAaWYgdHlwZS1vZigkbnVtYmVyKSAhPSBcIm51bWJlclwiIHtcclxuICAgIEB3YXJuIFwiYCN7JG51bWJlcn0gaXMgbm90IGEgbnVtYmVyYFwiO1xyXG4gICAgQHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJG51bWJlciAqIG50aCgkdW5pdHMsICRpbmRleCk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIERpcmVjdGlvbmFsLXByb3BlcnR5IG1peGlucyBhcmUgc2hvcnRoYW5kcyBmb3Igd3JpdGluZyBwcm9wZXJ0aWVzIGxpa2UgdGhlIGZvbGxvd2luZ1xyXG4vLy9cclxuLy8vIEBpZ25vcmUgWW91IGNhbiBhbHNvIHVzZSBgZmFsc2VgIGluc3RlYWQgb2YgYG51bGxgLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcclxuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1zdHlsZShkb3R0ZWQgbnVsbCk7XHJcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMCAxMHB4KTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IGRvdHRlZDtcclxuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XHJcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuLy8vICAgICBtYXJnaW4tbGVmdDogMDtcclxuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TGlzdH1cclxuXHJcbkBmdW5jdGlvbiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpIHtcclxuICAkb3V0cHV0OiBudWxsO1xyXG5cclxuICAkYTogbnRoKCR2YWxzLCAxKTtcclxuICAkYjogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIDIpKTtcclxuICAkYzogaWYobGVuZ3RoKCR2YWxzKSA8IDMsICRhLCBudGgoJHZhbHMsIDMpKTtcclxuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xyXG5cclxuICBAaWYgJGEgPT0gMCB7ICRhOiAwOyB9XHJcbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxyXG4gIEBpZiAkYyA9PSAwIHsgJGM6IDA7IH1cclxuICBAaWYgJGQgPT0gMCB7ICRkOiAwOyB9XHJcblxyXG4gIEBpZiAkYSA9PSAkYiBhbmQgJGEgPT0gJGMgYW5kICRhID09ICRkIHsgJG91dHB1dDogJGE7ICAgICAgICAgIH1cclxuICBAZWxzZSBpZiAkYSA9PSAkYyBhbmQgJGIgPT0gJGQgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiOyAgICAgICB9XHJcbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxyXG4gIEBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGMgJGQ7IH1cclxuXHJcbiAgQHJldHVybiAkb3V0cHV0O1xyXG59XHJcblxyXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cclxuLy8vXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByZVxyXG4vLy8gICBQcmVmaXggdG8gdXNlXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxyXG4vLy8gICBTdWZmaXggdG8gdXNlXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb2xsYXBzZS1kaXJlY3Rpb25hbHNcclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcclxuXHJcbkBtaXhpbiBkaXJlY3Rpb25hbC1wcm9wZXJ0eSgkcHJlLCAkc3VmLCAkdmFscykge1xyXG4gIC8vIFByb3BlcnR5IE5hbWVzXHJcbiAgJHRvcDogICAgJHByZSArIFwiLXRvcFwiICAgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuICAkYm90dG9tOiAkcHJlICsgXCItYm90dG9tXCIgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xyXG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XHJcbiAgJHJpZ2h0OiAgJHByZSArIFwiLXJpZ2h0XCIgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuICAkYWxsOiAgICAkcHJlICsgICAgICAgICAgICAgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuXHJcbiAgJHZhbHM6IGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscyk7XHJcblxyXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xyXG4gICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyR0b3B9OiBudGgoJHZhbHMsIDEpOyB9XHJcblxyXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDEpOyB9XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cclxuICAgIH1cclxuXHJcbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcclxuICAgICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDEpOyB9XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCAyKTsgfVxyXG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xyXG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cclxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XHJcbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAzKTsgfVxyXG4gICAgICBAaWYgbnRoKCR2YWxzLCA0KSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgNCk7IH1cclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgICN7JGFsbH06ICR2YWxzO1xyXG4gIH1cclxufVxyXG4iLCIvLyBVc2VkIGZvciBjcmVhdGluZyB0aGUgc291cmNlIHN0cmluZyBmb3IgZm9udHMgdXNpbmcgQGZvbnQtZmFjZVxyXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXHJcblxyXG5AZnVuY3Rpb24gZm9udC11cmwtcHJlZml4ZXIoJGFzc2V0LXBpcGVsaW5lKSB7XHJcbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcclxuICAgIEByZXR1cm4gZm9udC11cmw7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAcmV0dXJuIHVybDtcclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcclxuICAkZm9udC1mYW1pbHksXHJcbiAgJGZpbGUtcGF0aCxcclxuICAkYXNzZXQtcGlwZWxpbmUsXHJcbiAgJGZpbGUtZm9ybWF0cyxcclxuICAkZm9udC11cmwpIHtcclxuXHJcbiAgJHNyYzogKCk7XHJcblxyXG4gICRmb3JtYXRzLW1hcDogKFxyXG4gICAgZW90OiAgIFwiI3skZmlsZS1wYXRofS5lb3Q/I2llZml4XCIgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXHJcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXHJcbiAgICB3b2ZmOiAgXCIjeyRmaWxlLXBhdGh9LndvZmZcIiBmb3JtYXQoXCJ3b2ZmXCIpLFxyXG4gICAgdHRmOiAgIFwiI3skZmlsZS1wYXRofS50dGZcIiBmb3JtYXQoXCJ0cnVldHlwZVwiKSxcclxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxyXG4gICk7XHJcblxyXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcclxuICAgIEBpZiBjb250YWlucygkZmlsZS1mb3JtYXRzLCAka2V5KSB7XHJcbiAgICAgICRmaWxlLXBhdGg6IG50aCgkdmFsdWVzLCAxKTtcclxuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XHJcblxyXG4gICAgICBAaWYgJGFzc2V0LXBpcGVsaW5lID09IHRydWUge1xyXG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgJHNyYzogYXBwZW5kKCRzcmMsIHVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkc3JjO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xyXG4gIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXHJcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXHJcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XHJcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcclxuICBhbmQgKCRncmFkaWVudC10eXBlID09IHJhZGlhbClcclxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcclxuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcclxuICB9XHJcbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xyXG59XHJcbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcclxuQGZ1bmN0aW9uIF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCkge1xyXG4gICRvZmZzZXQ6IG51bGw7XHJcbiAgJHVuaXQtc2hvcnQ6ICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDIsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xyXG4gICR1bml0LWxvbmc6ICAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAzLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcclxuXHJcbiAgQGlmICgkdW5pdC1sb25nID09IFwiZ3JhZFwiKSBvclxyXG4gICAgICAoJHVuaXQtbG9uZyA9PSBcInR1cm5cIikge1xyXG4gICAgJG9mZnNldDogaWYoJHVuaXQtbG9uZyA9PSBcImdyYWRcIiwgLTEwMGdyYWQgKiAzLCAtMC43NXR1cm4pO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgKCR1bml0LXNob3J0ID09IFwiZGVnXCIpIG9yXHJcbiAgICAgICAgICAgKCR1bml0LXNob3J0ID09IFwicmFkXCIpIHtcclxuICAgICRvZmZzZXQ6IGlmKCR1bml0LXNob3J0ID09IFwiZGVnXCIsIC05MCAqIDMsIDEuNnJhZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgJG9mZnNldCB7XHJcbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcclxuXHJcbiAgICBAcmV0dXJuIChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAoJG9mZnNldCAtICRudW0pICsgJHN1ZmZpeCxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJAZnVuY3Rpb24gX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKSB7XHJcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XHJcbiAgJGdyYWRpZW50czogKCk7XHJcbiAgJHN0YXJ0OiBzdHItaW5kZXgoJGltYWdlLCBcIihcIik7XHJcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xyXG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcclxuXHJcbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcclxuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xyXG5cclxuICAkaGFzLW11bHRpcGxlLXZhbHM6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcIiBcIik7XHJcbiAgJGhhcy1zaW5nbGUtcG9zaXRpb246IHVucXVvdGUoX3Bvc2l0aW9uLWZsaXBwZXIoJGZpcnN0LXZhbCkgKyBcIlwiKTtcclxuICAkaGFzLWFuZ2xlOiBpcy1udW1iZXIoc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsIDEpKTtcclxuXHJcbiAgQGlmICRoYXMtbXVsdGlwbGUtdmFscyB7XHJcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscyk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkaGFzLXNpbmdsZS1wb3NpdGlvbiAhPSBcIlwiIHtcclxuICAgICRwb3M6IHVucXVvdGUoJGhhcy1zaW5nbGUtcG9zaXRpb24gKyBcIlwiKTtcclxuXHJcbiAgICAkZ3JhZGllbnRzOiAoXHJcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkaGFzLWFuZ2xlIHtcclxuICAgIC8vIFJvdGF0ZSBkZWdyZWUgZm9yIHdlYmtpdFxyXG4gICAgJGdyYWRpZW50czogX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KTtcclxuICB9XHJcblxyXG4gIEBlbHNlIHtcclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkZ3JhZGllbnRzO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcykge1xyXG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XHJcbiAgJHNwZWM6IG51bGw7XHJcbiAgJGRlZ3JlZTogbnVsbDtcclxuICAkc2lkZTogbnVsbDtcclxuICAkY29ybmVyOiBudWxsO1xyXG4gICRsZW5ndGg6IGxlbmd0aCgkcG9zKTtcclxuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXHJcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xyXG4gICAgQGlmIG50aCgkcG9zLCAxKSA9PSBcInRvXCIgeyAvLyBOZXdlciBzeW50YXhcclxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcclxuXHJcbiAgICAgIEBpZiAkbGVuZ3RoID09IDIgeyAvLyBlZy4gdG8gdG9wXHJcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcclxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxyXG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXHJcbiAgICAgICRzaWRlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMSkpO1xyXG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XHJcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcclxuICAgIH1cclxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xyXG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcclxuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xyXG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XHJcbiAgICB9XHJcbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAxIHtcclxuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XHJcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcclxuICAgICAgJGRlZ3JlZTogJHBvcztcclxuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xyXG4gICAgICAkc3BlYzogJHBvcztcclxuICAgIH1cclxuICB9XHJcbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xyXG4gICRzcGVjOiAgIHVucXVvdGUoJHNwZWMgKyBcIixcIik7XHJcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xyXG4gIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcclxuICAgICAgICAgaWYoJHBvcyA9PSByaWdodCwgbGVmdCwgbnVsbClcclxuICAgICAgICAgaWYoJHBvcyA9PSB0b3AsIGJvdHRvbSwgbnVsbClcclxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XHJcbn1cclxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxyXG5AZnVuY3Rpb24gX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpIHtcclxuICAkdmFsLTE6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaGFzLW11bHRpcGxlLXZhbHMgLSAxKTtcclxuICAkdmFsLTI6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaGFzLW11bHRpcGxlLXZhbHMgKyAxLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcclxuICAkdmFsLTM6IG51bGw7XHJcbiAgJGhhcy12YWwtMzogc3RyLWluZGV4KCR2YWwtMiwgXCIgXCIpO1xyXG5cclxuICBAaWYgJGhhcy12YWwtMyB7XHJcbiAgICAkdmFsLTM6IHN0ci1zbGljZSgkdmFsLTIsICRoYXMtdmFsLTMgKyAxLCBzdHItbGVuZ3RoKCR2YWwtMikpO1xyXG4gICAgJHZhbC0yOiBzdHItc2xpY2UoJHZhbC0yLCAxLCAkaGFzLXZhbC0zIC0gMSk7XHJcbiAgfVxyXG5cclxuICAkcG9zOiBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTEpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMikgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0zKTtcclxuICAkcG9zOiB1bnF1b3RlKCRwb3MgKyBcIlwiKTtcclxuXHJcbiAgLy8gVXNlIG9sZCBzcGVjIGZvciB3ZWJraXRcclxuICBAaWYgJHZhbC0xID09IFwidG9cIiB7XHJcbiAgICBAcmV0dXJuIChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gQnJpbmcgdGhlIGNvZGUgdXAgdG8gc3BlY1xyXG4gIEBlbHNlIHtcclxuICAgIEByZXR1cm4gKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxyXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xyXG4gIEBlYWNoICR2YWx1ZSBpbiAkZzEsICRnMiB7XHJcbiAgICAkZmlyc3QtdmFsOiBudGgoJHZhbHVlLCAxKTtcclxuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XHJcbiAgICAkc3BlYy1hdC1pbmRleDogbnVsbDtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXHJcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09IGxpc3Qge1xyXG4gICAgICAkc3BlYy1hdC1pbmRleDogaWYoaW5kZXgoJHZhbHVlLCBhdCksIGluZGV4KCR2YWx1ZSwgYXQpLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBAaWYgJHNwZWMtYXQtaW5kZXgge1xyXG4gICAgICBAaWYgJHNwZWMtYXQtaW5kZXggPiAxIHtcclxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcclxuICAgICAgICAgICRzaGFwZS1zaXplOiAkc2hhcGUtc2l6ZSBudGgoJHZhbHVlLCAkaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcclxuICAgICAgICAgICRwb3M6ICRwb3MgbnRoKCR2YWx1ZSwgJGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiAkc3BlYy1hdC1pbmRleCA9PSAxIHtcclxuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJGcxOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaWYgKCRwb3MtdHlwZSAhPSBjb2xvcikgb3IgKCRmaXJzdC12YWwgIT0gXCJ0cmFuc3BhcmVudFwiKSB7XHJcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2VudGVyXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJ0b3BcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJib3R0b21cIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImxlZnRcIikge1xyXG5cclxuICAgICAgICAgICRwb3M6ICR2YWx1ZTtcclxuXHJcbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xyXG4gICAgICAgICAgICAkZzE6IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZWxzZSBpZlxyXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2lyY2xlXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LXNpZGVcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1zaWRlXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1jb3JuZXJcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvdmVyXCIpIHtcclxuXHJcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xyXG5cclxuICAgICAgICAgIEBpZiAkdmFsdWUgPT0gJGcxIHtcclxuICAgICAgICAgICAgJGcxOiBudWxsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xyXG4gICAgICAgICAgICAkZzI6IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEByZXR1cm4gJGcxLCAkZzIsICRwb3MsICRzaGFwZS1zaXplO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xyXG4gICRzaGFwZS1zaXplOiBudGgoJGdyYWRpZW50LXBvcywgMSk7XHJcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcclxuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XHJcblxyXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcclxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcclxuICAkcG9zLXNwZWM6IGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcclxuXHJcbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcclxuXHJcbiAgLy8gQWRkIGNvbW1hXHJcbiAgQGlmICgkc3BlYyAhPSBcIiAgXCIpIHtcclxuICAgICRzcGVjOiBcIiN7JHNwZWN9LFwiO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkcHJlLXNwZWMgJHNwZWM7XHJcbn1cclxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xyXG4gICRpbWFnZTogdW5xdW90ZSgkaW1hZ2UpO1xyXG4gICRncmFkaWVudHM6ICgpO1xyXG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xyXG4gICRlbmQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiLFwiKTtcclxuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XHJcblxyXG4gICRwcmVmaXg6IHN0ci1zbGljZSgkaW1hZ2UsIDEsICRzdGFydCk7XHJcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcclxuXHJcbiAgJGlzLXNwZWMtc3ludGF4OiBzdHItaW5kZXgoJGZpcnN0LXZhbCwgXCJhdFwiKTtcclxuXHJcbiAgQGlmICRpcy1zcGVjLXN5bnRheCBhbmQgJGlzLXNwZWMtc3ludGF4ID4gMSB7XHJcbiAgICAka2V5d29yZDogc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsICRpcy1zcGVjLXN5bnRheCAtIDIpO1xyXG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xyXG4gICAgJHBvczogYXBwZW5kKCRwb3MsICRrZXl3b3JkLCBjb21tYSk7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxyXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkaXMtc3BlYy1zeW50YXggPT0gMSB7XHJcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxyXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiBzdHItaW5kZXgoJGltYWdlLCBcImNvdmVyXCIpIG9yIHN0ci1pbmRleCgkaW1hZ2UsIFwiY29udGFpblwiKSB7XHJcbiAgICBAd2FybiBcIlJhZGlhbC1ncmFkaWVudCBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIGNvbmZvcm0gdG8gbGF0ZXN0IHNwZWMuXCI7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IG51bGwsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIHtcclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkZ3JhZGllbnRzO1xyXG59XHJcbiIsIi8vIFVzZXIgZm9yIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cyB3aXRoaW4gYmFja2dyb3VuZC1pbWFnZSBvciBib3JkZXItaW1hZ2UgcHJvcGVydGllc1xyXG5cclxuQGZ1bmN0aW9uIF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudHMsICRncmFkaWVudC10eXBlLCAkdmVuZG9yOiBmYWxzZSkge1xyXG4gICRwcmUtc3BlYzogbnVsbDtcclxuICAkc3BlYzogbnVsbDtcclxuICAkdmVuZG9yLWdyYWRpZW50czogbnVsbDtcclxuICBAaWYgJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyIHtcclxuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcclxuICAgICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XHJcbiAgICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwge1xyXG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XHJcbiAgICAkc3BlYzogICAgIG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAyKTtcclxuICB9XHJcblxyXG4gIEBpZiAkdmVuZG9yIHtcclxuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiAtI3skdmVuZG9yfS0jeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRwcmUtc3BlY30gJGdyYWRpZW50cyk7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICR2ZW5kb3IgPT0gZmFsc2Uge1xyXG4gICAgJHZlbmRvci1ncmFkaWVudHM6IFwiI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skc3BlY30gI3skZ3JhZGllbnRzfSlcIjtcclxuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcclxuICB9XHJcbiAgQHJldHVybiAkdmVuZG9yLWdyYWRpZW50cztcclxufVxyXG4iLCJAZnVuY3Rpb24gX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpIHtcclxuICAkc2hhcGUtc2l6ZS1zcGVjOiBudWxsO1xyXG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XHJcbiAgICBAaWYgKCR2YWx1ZSA9PSBcImNvdmVyXCIpIG9yICgkdmFsdWUgPT0gXCJjb250YWluXCIpIHtcclxuICAgICAgJHZhbHVlOiBudWxsO1xyXG4gICAgfVxyXG4gICAgJHNoYXBlLXNpemUtc3BlYzogXCIjeyRzaGFwZS1zaXplLXNwZWN9ICN7JHZhbHVlfVwiO1xyXG4gIH1cclxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XHJcbn1cclxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cclxuLy8gU291cmNlOiBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvOTY0NzQwOFxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XHJcbiAgLy8gTWF0cmljZXNcclxuICAkc3RyaW5nczogXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCI7XHJcbiAgJG51bWJlcnM6ICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgIDggICA5O1xyXG5cclxuICAvLyBSZXN1bHRcclxuICAkcmVzdWx0OiAwO1xyXG4gICRkaXZpZGVyOiAwO1xyXG4gICRtaW51czogZmFsc2U7XHJcblxyXG4gIC8vIExvb3BpbmcgdGhyb3VnaCBhbGwgY2hhcmFjdGVyc1xyXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XHJcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHN0cmluZywgJGksICRpKTtcclxuICAgICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICRjaGFyYWN0ZXIpO1xyXG5cclxuICAgIEBpZiAkY2hhcmFjdGVyID09IFwiLVwiIHtcclxuICAgICAgJG1pbnVzOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBlbHNlIGlmICRjaGFyYWN0ZXIgPT0gXCIuXCIge1xyXG4gICAgICAkZGl2aWRlcjogMTtcclxuICAgIH1cclxuXHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcclxuICAgICAgICAkcmVzdWx0OiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XHJcbiAgICAgICAgQHJldHVybiBfY29udmVydC11bml0cygkcmVzdWx0LCBzdHItc2xpY2UoJHN0cmluZywgJGkpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJG51bWJlcjogbnRoKCRudW1iZXJzLCAkaW5kZXgpO1xyXG5cclxuICAgICAgQGlmICRkaXZpZGVyID09IDAge1xyXG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XHJcbiAgICAgICAgJGRpdmlkZXI6ICRkaXZpZGVyICogMTA7XHJcbiAgICAgICAgJG51bWJlcjogJG51bWJlciAvICRkaXZpZGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJG51bWJlcjtcclxuICAgIH1cclxuICB9XHJcbiAgQHJldHVybiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XHJcbn1cclxuIiwiLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmltYXRpb25zLyN0aGUtYW5pbWF0aW9uLW5hbWUtcHJvcGVydHktXHJcbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uKCRhbmltYXRpb25zLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvbi1uYW1lKCRuYW1lcy4uLikge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKCRtb3Rpb25zLi4uKSB7XHJcbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCR2YWx1ZXMuLi4pIHtcclxuICAvLyBpbmZpbml0ZSB8IDxudW1iZXI+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJHZhbHVlcywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGRpcmVjdGlvbnMuLi4pIHtcclxuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGlyZWN0aW9uLCAkZGlyZWN0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvbi1wbGF5LXN0YXRlKCRzdGF0ZXMuLi4pIHtcclxuICAvLyBydW5uaW5nIHwgcGF1c2VkXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZmlsbC1tb2RlKCRtb2Rlcy4uLikge1xyXG4gIC8vIG5vbmUgfCBmb3J3YXJkcyB8IGJhY2t3YXJkcyB8IGJvdGhcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIGFwcGVhcmFuY2UoJHZhbHVlKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSwgd2Via2l0IHNwZWMpO1xyXG59XHJcbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmRzIHVzaW5nIHNob3J0aGFuZFxyXG4vLyBub3RhdGlvbi5cclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmRzLi4uKSB7XHJcbiAgJHdlYmtpdC1iYWNrZ3JvdW5kczogKCk7XHJcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xyXG5cclxuICBAZWFjaCAkYmFja2dyb3VuZCBpbiAkYmFja2dyb3VuZHMge1xyXG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcclxuICAgICRzcGVjLWJhY2tncm91bmQ6ICgpO1xyXG4gICAgJGJhY2tncm91bmQtdHlwZTogdHlwZS1vZigkYmFja2dyb3VuZCk7XHJcblxyXG4gICAgQGlmICRiYWNrZ3JvdW5kLXR5cGUgPT0gc3RyaW5nIG9yICRiYWNrZ3JvdW5kLXR5cGUgPT0gbGlzdCB7XHJcbiAgICAgICRiYWNrZ3JvdW5kLXN0cjogaWYoJGJhY2tncm91bmQtdHlwZSA9PSBsaXN0LCBudGgoJGJhY2tncm91bmQsIDEpLCAkYmFja2dyb3VuZCk7XHJcblxyXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRiYWNrZ3JvdW5kLXN0ciwgMSwgMyk7XHJcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJhY2tncm91bmQtc3RyLCAxLCA2KTtcclxuXHJcbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcclxuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xyXG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xyXG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYmFja2dyb3VuZH1cIik7XHJcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XHJcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcclxuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xyXG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBlbHNlIHtcclxuICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAkd2Via2l0LWJhY2tncm91bmRzOiBhcHBlbmQoJHdlYmtpdC1iYWNrZ3JvdW5kcywgJHdlYmtpdC1iYWNrZ3JvdW5kLCBjb21tYSk7XHJcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xyXG4gIGJhY2tncm91bmQ6ICRzcGVjLWJhY2tncm91bmRzO1xyXG59XHJcbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuLy8gQmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmQgaW1hZ2VzIHdpdGhcclxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xyXG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcclxuICAkc3BlYy1pbWFnZXM6ICgpO1xyXG5cclxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XHJcbiAgICAkd2Via2l0LWltYWdlOiAoKTtcclxuICAgICRzcGVjLWltYWdlOiAoKTtcclxuXHJcbiAgICBAaWYgKHR5cGUtb2YoJGltYWdlKSA9PSBzdHJpbmcpIHtcclxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkaW1hZ2UsIDEsIDMpO1xyXG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMSwgNik7XHJcblxyXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XHJcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xyXG4gICAgICAgICRzcGVjLWltYWdlOiAgICRpbWFnZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XHJcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcclxuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWltYWdlOiAgICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcclxuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xyXG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcclxuICAgICAgICAkc3BlYy1pbWFnZTogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJHdlYmtpdC1pbWFnZXM6IGFwcGVuZCgkd2Via2l0LWltYWdlcywgJHdlYmtpdC1pbWFnZSwgY29tbWEpO1xyXG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogJHNwZWMtaW1hZ2VzO1xyXG59XHJcbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcclxuICAkd2Via2l0LWJvcmRlcnM6ICgpO1xyXG4gICRzcGVjLWJvcmRlcnM6ICgpO1xyXG5cclxuICBAZWFjaCAkYm9yZGVyIGluICRib3JkZXJzIHtcclxuICAgICR3ZWJraXQtYm9yZGVyOiAoKTtcclxuICAgICRzcGVjLWJvcmRlcjogKCk7XHJcbiAgICAkYm9yZGVyLXR5cGU6IHR5cGUtb2YoJGJvcmRlcik7XHJcblxyXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XHJcbiAgICAgICRib3JkZXItc3RyOiBpZigkYm9yZGVyLXR5cGUgPT0gbGlzdCwgbnRoKCRib3JkZXIsIDEpLCAkYm9yZGVyKTtcclxuXHJcbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDMpO1xyXG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCA2KTtcclxuXHJcbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcclxuICAgICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcclxuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XHJcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xyXG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XHJcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xyXG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcclxuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XHJcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xyXG4gICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcclxuICAgIH1cclxuXHJcbiAgICAkd2Via2l0LWJvcmRlcnM6IGFwcGVuZCgkd2Via2l0LWJvcmRlcnMsICR3ZWJraXQtYm9yZGVyLCBjb21tYSk7XHJcbiAgICAkc3BlYy1ib3JkZXJzOiAgIGFwcGVuZCgkc3BlYy1ib3JkZXJzLCAgICRzcGVjLWJvcmRlciwgICBjb21tYSk7XHJcbiAgfVxyXG5cclxuICAtd2Via2l0LWJvcmRlci1pbWFnZTogJHdlYmtpdC1ib3JkZXJzO1xyXG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xyXG4gICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxufVxyXG5cclxuLy9FeGFtcGxlczpcclxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcclxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xyXG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UocmFkaWFsLWdyYWRpZW50KHRvcCwgY292ZXIsIG9yYW5nZSwgeWVsbG93LCBvcmFuZ2UpKTtcclxuIiwiQG1peGluIGNhbGMoJHByb3BlcnR5LCAkdmFsdWUpIHtcclxuICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtY2FsYygjeyR2YWx1ZX0pO1xyXG4gICN7JHByb3BlcnR5fTogY2FsYygjeyR2YWx1ZX0pO1xyXG59XHJcbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcclxuICAvLyA8Y29sdW1uLWNvdW50PiB8fCA8Y29sdW1uLXdpZHRoPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xyXG4gIC8vIGF1dG8gfHwgaW50ZWdlclxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1jb3VudCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1nYXAoJGxlbmd0aDogbm9ybWFsKSB7XHJcbiAgLy8gbm9ybWFsIHx8IGxlbmd0aFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XHJcbiAgLy8gYXV0byB8fCBsZW5ndGhcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZmlsbCwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1ydWxlKCRhcmcpIHtcclxuICAvLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlOiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUtc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoICgkd2lkdGg6IG5vbmUpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xyXG4gIC8vIG5vbmUgfHwgYWxsXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xyXG4gIC8vIGF1dG8gfHwgbGVuZ3RoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcbiIsIkBtaXhpbiBmaWx0ZXIoJGZ1bmN0aW9uOiBub25lKSB7XHJcbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmaWx0ZXIsICRmdW5jdGlvbiwgd2Via2l0IHNwZWMpO1xyXG59XHJcbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xyXG5cclxuLy8gQ3VzdG9tIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgZmxleGJveFxyXG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xyXG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xyXG4gIEBpbmNsdWRlIGJveC1vcmllbnQoJG9yaWVudCk7XHJcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xyXG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xyXG59XHJcblxyXG5AbWl4aW4gZGlzcGxheS1ib3gge1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IC1tb3otYm94O1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyBJRSAxMFxyXG4gIGRpc3BsYXk6IGJveDtcclxufVxyXG5cclxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcclxuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkb3JpZW50LCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYm94LXBhY2soJHBhY2s6IHN0YXJ0KSB7XHJcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1wYWNrOiAkcGFjazsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1hbGlnbigkYWxpZ246IHN0cmV0Y2gpIHtcclxuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtYWxpZ246ICRhbGlnbjsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogbm9ybWFsKSB7XHJcbi8vIG5vcm1hbHxyZXZlcnNlfGluaGVyaXRcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1saW5lcygkbGluZXM6IHNpbmdsZSkge1xyXG4vLyBzaW5nbGV8bXVsdGlwbGVcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXg6ICR2YWx1ZTsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXHJcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXHJcblxyXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcclxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcclxuLy8gMjAxMiAtIGRpc3BsYXkgKGZsZXggfCBpbmxpbmUtZmxleClcclxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XHJcbi8vIGZsZXggfCBpbmxpbmUtZmxleFxyXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4XCIge1xyXG4gICAgLy8gMjAwOVxyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICBkaXNwbGF5OiAtbW96LWJveDtcclxuICAgIGRpc3BsYXk6IGJveDtcclxuXHJcbiAgICAvLyAyMDEyXHJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XHJcbiAgICBkaXNwbGF5OiAtbW96LWZsZXg7XHJcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gMjAxMSAoSUUgMTApXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XHJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XHJcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xyXG5cclxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XHJcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xyXG4gICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBkaXNwbGF5OiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXHJcbi8vIDIwMTEgLSBmbGV4IChkZWNpbWFsIHwgd2lkdGggZGVjaW1hbClcclxuLy8gMjAxMiAtIGZsZXggKGludGVnZXIgaW50ZWdlciB3aWR0aClcclxuQG1peGluIGZsZXgoJHZhbHVlKSB7XHJcblxyXG4gIC8vIEdyYWIgZmxleC1ncm93IGZvciBvbGRlciBicm93c2Vycy5cclxuICAkZmxleC1ncm93OiBudGgoJHZhbHVlLCAxKTtcclxuXHJcbiAgLy8gMjAwOVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMCksIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuXHJcbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxyXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcclxuLy8gMjAxMSAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxyXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXHJcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xyXG5cclxuICAvLyBBbHQgdmFsdWVzLlxyXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XHJcbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcclxuICAkZGlyZWN0aW9uOiBub3JtYWw7XHJcblxyXG4gIEBpZiAkdmFsdWUgPT0gcm93IHtcclxuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XHJcbiAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcclxuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcclxuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xyXG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xyXG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcclxuICB9XHJcblxyXG4gIC8vIDIwMDlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMSAoSUUgMTApXHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XHJcbn1cclxuXHJcbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxyXG4vLyAyMDExIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxyXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxyXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XHJcbiAgLy8gQWx0IHZhbHVlc1xyXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XHJcbiAgICAkYWx0LXZhbHVlOiBzaW5nbGU7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gd3JhcCB7XHJcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcIndyYXAtcmV2ZXJzZVwiIHtcclxuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXHJcbi8vIDIwMTEgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcclxuLy8gMjAxMiAtIGZsZXgtZmxvdyAoZmxleC1kaXJlY3Rpb24gfHwgZmxleC13cmFwKVxyXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZmxvdywgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LW9yZGluYWwtZ3JvdXAgKGludGVnZXIpXHJcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxyXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXHJcbkBtaXhpbiBvcmRlcigkaW50OiAwKSB7XHJcbiAgLy8gMjAwOVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50O1xyXG59XHJcblxyXG4vLyAyMDEyIC0gZmxleC1ncm93IChudW1iZXIpXHJcbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcjogMCkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcclxufVxyXG5cclxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXHJcbkBtaXhpbiBmbGV4LXNocmluaygkbnVtYmVyOiAxKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XHJcbn1cclxuXHJcbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXHJcbkBtaXhpbiBmbGV4LWJhc2lzKCR3aWR0aDogYXV0bykge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogJHdpZHRoO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcclxuLy8gMjAxMSAtIGZsZXgtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxyXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxyXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCR2YWx1ZTogZmxleC1zdGFydCkge1xyXG5cclxuICAvLyBBbHQgdmFsdWVzLlxyXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcclxuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XHJcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xyXG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcclxuICAgICRhbHQtdmFsdWU6IGRpc3RyaWJ1dGU7XHJcbiAgfVxyXG5cclxuICAvLyAyMDA5XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcclxuLy8gMjAxMSAtIGZsZXgtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxyXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcclxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xyXG5cclxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XHJcblxyXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xyXG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcclxuICAgICRhbHQtdmFsdWU6IGVuZDtcclxuICB9XHJcblxyXG4gIC8vIDIwMDlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlO1xyXG59XHJcblxyXG4vLyAyMDExIC0gZmxleC1pdGVtLWFsaWduIChhdXRvIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXHJcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxyXG5AbWl4aW4gYWxpZ24tc2VsZigkdmFsdWU6IGF1dG8pIHtcclxuXHJcbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcclxuICB9XHJcblxyXG4gIC8vIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xyXG59XHJcblxyXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxyXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXHJcbkBtaXhpbiBhbGlnbi1jb250ZW50KCR2YWx1ZTogc3RyZXRjaCkge1xyXG5cclxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xyXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XHJcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XHJcbiAgfVxyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1saW5lLXBhY2s6ICR2YWx1ZS0yMDExO1xyXG59XHJcbiIsIkBtaXhpbiBmb250LWZhY2UoXHJcbiAgJGZvbnQtZmFtaWx5LFxyXG4gICRmaWxlLXBhdGgsXHJcbiAgJHdlaWdodDogbm9ybWFsLFxyXG4gICRzdHlsZTogbm9ybWFsLFxyXG4gICRhc3NldC1waXBlbGluZTogJGFzc2V0LXBpcGVsaW5lLFxyXG4gICRmaWxlLWZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmcpIHtcclxuXHJcbiAgJGZvbnQtdXJsLXByZWZpeDogZm9udC11cmwtcHJlZml4ZXIoJGFzc2V0LXBpcGVsaW5lKTtcclxuXHJcbiAgQGZvbnQtZmFjZSB7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xyXG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xyXG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XHJcblxyXG4gICAgc3JjOiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcclxuICAgICAgJGZvbnQtZmFtaWx5LFxyXG4gICAgICAkZmlsZS1wYXRoLFxyXG4gICAgICAkYXNzZXQtcGlwZWxpbmUsXHJcbiAgICAgICRmaWxlLWZvcm1hdHMsXHJcbiAgICAgICRmb250LXVybC1wcmVmaXhcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIkBtaXhpbiBmb250LWZlYXR1cmUtc2V0dGluZ3MoJHNldHRpbmdzLi4uKSB7XHJcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDAgeyAkc2V0dGluZ3M6IG5vbmU7IH1cclxuICBAaW5jbHVkZSBwcmVmaXhlcihmb250LWZlYXR1cmUtc2V0dGluZ3MsICRzZXR0aW5ncywgd2Via2l0IG1veiBtcyBzcGVjKTtcclxufVxyXG4iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXHJcbkBtaXhpbiBoaWRwaSgkcmF0aW86IDEuMykge1xyXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHJhdGlvfS8xKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiByb3VuZCgkcmF0aW8gKiA5NmRwaSkpLFxyXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuIiwiQG1peGluIGh5cGhlbnMoJGh5cGhlbmF0aW9uOiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IG1hbnVhbCB8IGF1dG9cclxuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIGltYWdlLXJlbmRlcmluZyAoJG1vZGU6YXV0bykge1xyXG5cclxuICBAaWYgKCRtb2RlID09IGNyaXNwLWVkZ2VzKSB7XHJcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyAvLyBJRTgrXHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1vLWNyaXNwLWVkZ2VzO1xyXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xyXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcclxuICB9XHJcblxyXG4gIEBlbHNlIHtcclxuICAgIGltYWdlLXJlbmRlcmluZzogJG1vZGU7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEFkZHMga2V5ZnJhbWVzIGJsb2NrcyBmb3Igc3VwcG9ydGVkIHByZWZpeGVzLCByZW1vdmluZyByZWR1bmRhbnQgcHJlZml4ZXMgaW4gdGhlIGJsb2NrJ3MgY29udGVudFxyXG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XHJcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0OiAgICAkcHJlZml4LWZvci13ZWJraXQ7XHJcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYTogICAkcHJlZml4LWZvci1tb3ppbGxhO1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhOiAgICAgJHByZWZpeC1mb3Itb3BlcmE7XHJcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYzogICAgICAkcHJlZml4LWZvci1zcGVjO1xyXG5cclxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0IHtcclxuICAgIEBpbmNsdWRlIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKTtcclxuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZSAhZ2xvYmFsO1xyXG4gICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XHJcbiAgICAkcHJlZml4LWZvci1tb3ppbGxhOiB0cnVlICFnbG9iYWw7XHJcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0ICAgICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhICAgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6ICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdCAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itb3BlcmEgICAgICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjICAgICAgIWdsb2JhbDtcclxuXHJcbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMge1xyXG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRnMSwgJGcyOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnMzogbnVsbCwgJGc0OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnOTogbnVsbCwgJGcxMDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcclxuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXHJcbiAgJHBvcy10eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XHJcbiAgJHBvcy1zcGVjOiBudWxsO1xyXG4gICRwb3MtZGVncmVlOiBudWxsO1xyXG5cclxuICAvLyBJZiAkcG9zIGlzIG1pc3NpbmcgZnJvbSBtaXhpbiwgcmVhc3NpZ24gdmFycyBhbmQgYWRkIGRlZmF1bHQgcG9zaXRpb25cclxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XHJcbiAgICAkZzEwOiAkZzk7ICRnOTogJGc4OyAkZzg6ICRnNzsgJGc3OiAkZzY7ICRnNjogJGc1O1xyXG4gICAgJGc1OiAkZzQ7ICRnNDogJGczOyAkZzM6ICRnMjsgJGcyOiAkZzE7ICRnMTogJHBvcztcclxuICAgICRwb3M6IG51bGw7XHJcbiAgfVxyXG5cclxuICBAaWYgJHBvcyB7XHJcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XHJcbiAgICAkcG9zLWRlZ3JlZTogbnRoKCRwb3NpdGlvbnMsIDEpO1xyXG4gICAgJHBvcy1zcGVjOiAgIG50aCgkcG9zaXRpb25zLCAyKTtcclxuICB9XHJcblxyXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xyXG5cclxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXHJcbiAgJGZhbGxiYWNrLWNvbG9yOiBudGgoJGcxLCAxKTtcclxuXHJcbiAgLy8gSWYgJGZhbGxiYWNrIGlzIGEgY29sb3IgdXNlIHRoYXQgY29sb3IgYXMgdGhlIGZhbGxiYWNrIGNvbG9yXHJcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XHJcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkcG9zLWRlZ3JlZSAkZnVsbCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWVcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KCN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcclxufVxyXG4iLCJAbWl4aW4gcGVyc3BlY3RpdmUoJGRlcHRoOiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IDxsZW5ndGg+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xyXG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcclxuICBAZWFjaCAkcGxhY2Vob2xkZXIgaW4gJHBsYWNlaG9sZGVycyB7XHJcbiAgICAmOiN7JHBsYWNlaG9sZGVyfS1wbGFjZWhvbGRlciB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBSZXF1aXJlcyBTYXNzIDMuMStcclxuQG1peGluIHJhZGlhbC1ncmFkaWVudCgkZzEsICRnMixcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHBvczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcclxuXHJcbiAgJGRhdGE6IF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpO1xyXG4gICRnMTogIG50aCgkZGF0YSwgMSk7XHJcbiAgJGcyOiAgbnRoKCRkYXRhLCAyKTtcclxuICAkcG9zOiBudGgoJGRhdGEsIDMpO1xyXG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xyXG5cclxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcclxuXHJcbiAgLy8gU3RyaXAgZGVwcmVjYXRlZCBjb3Zlci9jb250YWluIGZvciBzcGVjXHJcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xyXG5cclxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXHJcbiAgJGZpcnN0LWNvbG9yOiBudGgoJGZ1bGwsIDEpO1xyXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XHJcblxyXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xyXG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XHJcbiAgfVxyXG5cclxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcclxuICAkc2hhcGUtc2l6ZTogaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sIFwiLCBudWxsKTtcclxuICAkcG9zOiAgICAgICAgaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCk7XHJcbiAgJHBvcy1zcGVjOiAgIGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcclxuICAkc2hhcGUtc2l6ZS1zcGVjOiBpZigoJHNoYXBlLXNpemUtc3BlYyAhPSBcIiBcIikgYW5kICgkcG9zID09IG51bGwpLCBcIiN7JHNoYXBlLXNpemUtc3BlY30sIFwiLCBcIiN7JHNoYXBlLXNpemUtc3BlY30gXCIpO1xyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KCN7JHBvc30jeyRzaGFwZS1zaXplfSN7JGZ1bGx9KTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gT3V0cHV0cyB0aGUgc3BlYyBhbmQgcHJlZml4ZWQgdmVyc2lvbnMgb2YgdGhlIGA6OnNlbGVjdGlvbmAgcHNldWRvLWVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtCb29sfSAkY3VycmVudC1zZWxlY3RvciBbZmFsc2VdXHJcbi8vLyAgIElmIHNldCB0byBgdHJ1ZWAsIGl0IHRha2VzIHRoZSBjdXJyZW50IGVsZW1lbnQgaW50byBjb25zaWRlcmF0aW9uLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgc2VsZWN0aW9uKHRydWUpIHtcclxuLy8vICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgICAgfVxyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudDo6LW1vei1zZWxlY3Rpb24ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50OjpzZWxlY3Rpb24ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiBzZWxlY3Rpb24oJGN1cnJlbnQtc2VsZWN0b3I6IGZhbHNlKSB7XHJcbiAgQGlmICRjdXJyZW50LXNlbGVjdG9yIHtcclxuICAgICY6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIHRleHQtZGVjb3JhdGlvbigkdmFsdWUpIHtcclxuLy8gPHRleHQtZGVjb3JhdGlvbi1saW5lPiB8fCA8dGV4dC1kZWNvcmF0aW9uLXN0eWxlPiB8fCA8dGV4dC1kZWNvcmF0aW9uLWNvbG9yPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbiwgJHZhbHVlLCBtb3opO1xyXG59XHJcblxyXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWxpbmUoJGxpbmU6IG5vbmUpIHtcclxuLy8gbm9uZSB8fCB1bmRlcmxpbmUgfHwgb3ZlcmxpbmUgfHwgbGluZS10aHJvdWdoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWxpbmUsICRsaW5lLCBtb3opO1xyXG59XHJcblxyXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLXN0eWxlKCRzdHlsZTogc29saWQpIHtcclxuLy8gc29saWQgfHwgZG91YmxlIHx8IGRvdHRlZCB8fCBkYXNoZWQgfHwgd2F2eVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1zdHlsZSwgJHN0eWxlLCBtb3ogd2Via2l0KTtcclxufVxyXG5cclxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1jb2xvcigkY29sb3I6IGN1cnJlbnRDb2xvcikge1xyXG4vLyBjdXJyZW50Q29sb3IgfHwgPGNvbG9yPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1jb2xvciwgJGNvbG9yLCBtb3opO1xyXG59XHJcbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLCAkcHJvcGVydHksIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oJGF4ZXM6IDUwJSkge1xyXG4gIC8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXHJcbiAgLy8geS1heGlzIC0gdG9wICB8IGNlbnRlciB8IGJvdHRvbSB8IGxlbmd0aCB8ICVcclxuICAvLyB6LWF4aXMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLW9yaWdpbiwgJGF4ZXMsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IGZsYXQpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG59XHJcbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxyXG4vLyBFeGFtcGxlOiBAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMnMgZWFzZS1pbi1vdXQpO1xyXG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uIChvcGFjaXR5IDFzIGVhc2UtaW4gMnMsIHdpZHRoIDJzIGVhc2Utb3V0KTtcclxuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wZXJ0aWVzLi4uKSB7XHJcbiAgLy8gRml4IGZvciB2ZW5kb3ItcHJlZml4IHRyYW5zZm9ybSBwcm9wZXJ0eVxyXG4gICRuZWVkcy1wcmVmaXhlczogZmFsc2U7XHJcbiAgJHdlYmtpdDogKCk7XHJcbiAgJG1vejogKCk7XHJcbiAgJHNwZWM6ICgpO1xyXG5cclxuICAvLyBDcmVhdGUgbGlzdHMgZm9yIHZlbmRvci1wcmVmaXhlZCB0cmFuc2Zvcm1cclxuICBAZWFjaCAkbGlzdCBpbiAkcHJvcGVydGllcyB7XHJcbiAgICBAaWYgbnRoKCRsaXN0LCAxKSA9PSBcInRyYW5zZm9ybVwiIHtcclxuICAgICAgJG5lZWRzLXByZWZpeGVzOiB0cnVlO1xyXG4gICAgICAkbGlzdDE6IC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gICAgICAkbGlzdDI6IC1tb3otdHJhbnNmb3JtO1xyXG4gICAgICAkbGlzdDM6ICgpO1xyXG5cclxuICAgICAgQGVhY2ggJHZhciBpbiAkbGlzdCB7XHJcbiAgICAgICAgJGxpc3QzOiBqb2luKCRsaXN0MywgJHZhcik7XHJcblxyXG4gICAgICAgIEBpZiAkdmFyICE9IFwidHJhbnNmb3JtXCIge1xyXG4gICAgICAgICAgJGxpc3QxOiBqb2luKCRsaXN0MSwgJHZhcik7XHJcbiAgICAgICAgICAkbGlzdDI6IGpvaW4oJGxpc3QyLCAkdmFyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdDEpO1xyXG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QyKTtcclxuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0Myk7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0LCBjb21tYSk7XHJcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdCwgY29tbWEpO1xyXG4gICAgICAkc3BlYzogICBhcHBlbmQoJHNwZWMsICAgJGxpc3QsIGNvbW1hKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkbmVlZHMtcHJlZml4ZXMge1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0O1xyXG4gICAgICAgLW1vei10cmFuc2l0aW9uOiAkbW96O1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAkc3BlYztcclxuICB9IEBlbHNlIHtcclxuICAgIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xyXG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAkcHJvcGVydGllczogYWxsIDAuMTVzIGVhc2Utb3V0IDBzO1xyXG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0aWVzLi4uKSB7XHJcbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIndlYmtpdFwiKTtcclxuICAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwibW96XCIpO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgZmFsc2UpO1xyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi1kdXJhdGlvbigkdGltZXMuLi4pIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xyXG4gIC8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigpXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkdGltZXMuLi4pIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZTogbm9uZSkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHVzZXItc2VsZWN0LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1jb2xvcmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItY29sb3IoI2E2MGI1NSAjNzZjZDljIG51bGwgI2U4YWUxYSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBib3JkZXItbGVmdC1jb2xvcjogI2U4YWUxYTtcclxuLy8vICAgICBib3JkZXItcmlnaHQtY29sb3I6ICM3NmNkOWM7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2E2MGI1NTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBib3JkZXItY29sb3JgXHJcblxyXG5AbWl4aW4gYm9yZGVyLWNvbG9yKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBjb2xvciwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItcmFkaXVzYCBvbiBib3RoIGNvcm5lcnMgb24gdGhlIHNpZGUgb2YgYSBib3guXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpaVxyXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudC1vbmUge1xyXG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDVweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50LXR3byB7XHJcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDNweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50LW9uZSB7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xyXG4vLy8gICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50LXR3byB7XHJcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xyXG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBvdXRwdXQgYGJvcmRlci1yYWRpdXNgXHJcblxyXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGlpKSB7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XHJcbn1cclxuXHJcbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcclxufVxyXG5cclxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcclxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xyXG59XHJcblxyXG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaWk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1zdHlsZWAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxyXG4vLy9cclxuLy8vIEBvdXRwdXQgYGJvcmRlci1zdHlsZWBcclxuXHJcbkBtaXhpbiBib3JkZXItc3R5bGUoJHZhbHMuLi4pIHtcclxuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHN0eWxlLCAkdmFscy4uLik7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci13aWR0aGAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItd2lkdGgoMWVtIG51bGwgMjBweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAyMHB4O1xyXG4vLy8gICAgIGJvcmRlci10b3Atd2lkdGg6IDFlbTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBib3JkZXItd2lkdGhgXHJcblxyXG5AbWl4aW4gYm9yZGVyLXdpZHRoKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBHZW5lcmF0ZXMgdmFyaWFibGVzIGZvciBhbGwgYnV0dG9ucy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6IGAjeyRhbGwtYnV0dG9uc31gLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAjeyRhbGwtYnV0dG9uc30ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgICN7JGFsbC1idXR0b25zLWZvY3VzfSxcclxuLy8vICAgI3skYWxsLWJ1dHRvbnMtaG92ZXJ9IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtYnV0dG9ucy1hY3RpdmV9IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICBidXR0b24sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgYnV0dG9uOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06Zm9jdXMsXHJcbi8vLyAgIGJ1dHRvbjpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICBidXR0b246YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTphY3RpdmUge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGY7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG4vLy9cclxuLy8vIEB0b2RvIFJlbW92ZSBkb3VibGUgYXNzaWduZWQgdmFyaWFibGVzIChMaW5lcyA1OeKAkzYyKSBpbiB2NS4wLjBcclxuXHJcbiRidXR0b25zLWxpc3Q6ICdidXR0b24nLFxyXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsXHJcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicmVzZXRcIl0nLFxyXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSc7XHJcblxyXG4kYWxsLWJ1dHRvbnM6ICAgICAgICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QpO1xyXG4kYWxsLWJ1dHRvbnMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGFjdGl2ZSk7XHJcbiRhbGwtYnV0dG9ucy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgZm9jdXMpO1xyXG4kYWxsLWJ1dHRvbnMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGhvdmVyKTtcclxuXHJcbiRhbGwtYnV0dG9uLWlucHV0czogICAgICAgICRhbGwtYnV0dG9ucztcclxuJGFsbC1idXR0b24taW5wdXRzLWFjdGl2ZTogJGFsbC1idXR0b25zLWFjdGl2ZTtcclxuJGFsbC1idXR0b24taW5wdXRzLWZvY3VzOiAgJGFsbC1idXR0b25zLWZvY3VzO1xyXG4kYWxsLWJ1dHRvbi1pbnB1dHMtaG92ZXI6ICAkYWxsLWJ1dHRvbnMtaG92ZXI7XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBpbmNsdWRlIGEgY2xlYXJmaXggZm9yIGNvbnRhaW5pbmcgZmxvYXRzLlxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHA6Ly9jc3Ntb2pvLmNvbS9sYXRlc3RfbmV3X2NsZWFyZml4X3NvX2Zhci9cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudDo6YWZ0ZXIge1xyXG4vLy8gICAgIGNsZWFyOiBib3RoO1xyXG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XHJcbi8vLyAgICAgZGlzcGxheTogdGFibGU7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiBjbGVhcmZpeCB7XHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgZGlzcGxheTogdGFibGU7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBUcnVuY2F0ZXMgdGV4dCBhbmQgYWRkcyBhbiBlbGxpcHNpcyB0byByZXByZXNlbnQgb3ZlcmZsb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMTAwJV1cclxuLy8vICAgTWF4LXdpZHRoIGZvciB0aGUgc3RyaW5nIHRvIHJlc3BlY3QgYmVmb3JlIGJlaW5nIHRydW5jYXRlZFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgZWxsaXBzaXM7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbi8vLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbi8vLyAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuLy8vICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcclxuLy8vICAgfVxyXG5cclxuQG1peGluIGVsbGlwc2lzKCR3aWR0aDogMTAwJSkge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBtYXgtd2lkdGg6ICR3aWR0aDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgd29yZC13cmFwOiBub3JtYWw7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEdlb3JnaWEgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kZ2VvcmdpYTogXCJHZW9yZ2lhXCIsIFwiQ2FtYnJpYVwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBcIlRpbWVzXCIsIHNlcmlmO1xyXG5cclxuLy8vIEhlbHZldGljYSBmb250IHN0YWNrLlxyXG4vLy9cclxuLy8vIEB0eXBlIExpc3RcclxuXHJcbiRoZWx2ZXRpY2E6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgXCJSb2JvdG9cIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xyXG5cclxuLy8vIEx1Y2lkYSBHcmFuZGUgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kbHVjaWRhLWdyYW5kZTogXCJMdWNpZGEgR3JhbmRlXCIsIFwiVGFob21hXCIsIFwiVmVyZGFuYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XHJcblxyXG4vLy8gTW9ub3NwYWNlIGZvbnQgc3RhY2suXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG5cclxuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb25zb2xhc1wiLCBcIkNvdXJpZXJcIiwgbW9ub3NwYWNlO1xyXG5cclxuLy8vIFZlcmRhbmEgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kdmVyZGFuYTogXCJWZXJkYW5hXCIsIFwiR2VuZXZhXCIsIHNhbnMtc2VyaWY7XHJcbiIsIi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHA6Ly96ZWxkbWFuLmNvbS8yMDEyLzAzLzAxL3JlcGxhY2luZy10aGUtOTk5OXB4LWhhY2stbmV3LWltYWdlLXJlcGxhY2VtZW50XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xyXG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAdG9kbyBSZW1vdmUgaGVpZ2h0IGFyZ3VtZW50IGluIHY1LjAuMFxyXG5cclxuQG1peGluIGhpZGUtdGV4dCgkaGVpZ2h0OiBudWxsKSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LWluZGVudDogMTAxJTtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cclxuICBAaWYgJGhlaWdodCB7XHJcbiAgICBAd2FybiBcIlRoZSBgaGlkZS10ZXh0YCBtaXhpbiBoYXMgY2hhbmdlZCBhbmQgbm8gbG9uZ2VyIHJlcXVpcmVzIGEgaGVpZ2h0LiBUaGUgaGVpZ2h0IGFyZ3VtZW50IHdpbGwgbm8gbG9uZ2VyIGJlIGFjY2VwdGVkIGluIHY1LjAuMFwiO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgbWFyZ2luYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcclxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDEwcHggM2VtIDIwdmgpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHZoO1xyXG4vLy8gICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBtYXJnaW5gXHJcblxyXG5AbWl4aW4gbWFyZ2luKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkobWFyZ2luLCBmYWxzZSwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBwYWRkaW5nYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcclxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHBhZGRpbmcoMTJ2aCBudWxsIDEwcHggNSUpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XHJcbi8vLyAgICAgcGFkZGluZy1sZWZ0OiA1JTtcclxuLy8vICAgICBwYWRkaW5nLXRvcDogMTJ2aDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBwYWRkaW5nYFxyXG5cclxuQG1peGluIHBhZGRpbmcoJHZhbHMuLi4pIHtcclxuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShwYWRkaW5nLCBmYWxzZSwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3Igc2V0dGluZyBhbiBlbGVtZW504oCZcyBwb3NpdGlvbi4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7UG9zaXRpb259ICRwb3NpdGlvbiBbcmVsYXRpdmVdXHJcbi8vLyAgIEEgQ1NTIHBvc2l0aW9uIHZhbHVlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkY29vcmRpbmF0ZXMgW251bGwgbnVsbCBudWxsIG51bGxdXHJcbi8vLyAgIExpc3Qgb2YgdmFsdWVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgNC12YWx1ZSBzeW50YXggZm9yIHRoZSBlZGdlcyBvZiBhIGJveFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDAgbnVsbCBudWxsIDEwZW0pO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbGVmdDogMTBlbTtcclxuLy8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbi8vLyAgICAgdG9wOiAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gdW5wYWNrXHJcblxyXG5AbWl4aW4gcG9zaXRpb24oJHBvc2l0aW9uOiByZWxhdGl2ZSwgJGNvb3JkaW5hdGVzOiBudWxsIG51bGwgbnVsbCBudWxsKSB7XHJcbiAgQGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSBsaXN0IHtcclxuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xyXG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcblxyXG4gICRjb29yZGluYXRlczogdW5wYWNrKCRjb29yZGluYXRlcyk7XHJcblxyXG4gICRvZmZzZXRzOiAoXHJcbiAgICB0b3A6ICAgIG50aCgkY29vcmRpbmF0ZXMsIDEpLFxyXG4gICAgcmlnaHQ6ICBudGgoJGNvb3JkaW5hdGVzLCAyKSxcclxuICAgIGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyksXHJcbiAgICBsZWZ0OiAgIG50aCgkY29vcmRpbmF0ZXMsIDQpXHJcbiAgKTtcclxuXHJcbiAgcG9zaXRpb246ICRwb3NpdGlvbjtcclxuXHJcbiAgQGVhY2ggJG9mZnNldCwgJHZhbHVlIGluICRvZmZzZXRzIHtcclxuICAgIEBpZiBpcy1sZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5XHJcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlXHJcbi8vLyAgIFZhbHVlIHRvIHVzZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHByZWZpeGVzXHJcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgMTBweCwgd2Via2l0IG1zIHNwZWMpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4vLy8gICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcclxuLy8vICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci13ZWJraXRcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxyXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1taWNyb3NvZnRcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itb3BlcmFcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xyXG5cclxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcclxuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XHJcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xyXG4gICAgICBAaWYgJHByZWZpeC1mb3Itd2Via2l0IHtcclxuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcclxuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xyXG4gICAgICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XHJcbiAgICAgIEBpZiAkcHJlZml4LWZvci1taWNyb3NvZnQge1xyXG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xyXG4gICAgICBAaWYgJHByZWZpeC1mb3Itb3BlcmEge1xyXG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XHJcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcclxuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSAge1xyXG4gICAgICBAd2FybiBcIlVucmVjb2duaXplZCBwcmVmaXg6ICN7JHByZWZpeH1cIjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xyXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgZmFsc2UgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgZmFsc2UgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlICFnbG9iYWw7XHJcbn1cclxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUpIHtcclxuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBoaWRwaSB7XHJcbiAgICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcclxuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRzaXplXHJcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXHJcbi8vL1xyXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHZhbHVlIGluIGAkc2l6ZWAgaXQgaXMgdXNlZCBmb3IgYm90aCB3aWR0aCBhbmQgaGVpZ2h0LiBBbGwgdW5pdHMgYXJlIHN1cHBvcnRlZC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzaXplKGF1dG8gMTBlbSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcclxuLy8vICAgICB3aWR0aDogMmVtO1xyXG4vLy8gICAgIGhlaWdodDogMmVtO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xyXG4vLy8gICAgIHdpZHRoOiBhdXRvO1xyXG4vLy8gICAgIGhlaWdodDogMTBlbTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxyXG5cclxuQG1peGluIHNpemUoJHZhbHVlKSB7XHJcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcclxuICAkaGVpZ2h0OiAkd2lkdGg7XHJcblxyXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xyXG4gICAgJGhlaWdodDogbnRoKCR2YWx1ZSwgMik7XHJcbiAgfVxyXG5cclxuICBAaWYgaXMtc2l6ZSgkaGVpZ2h0KSB7XHJcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAd2FybiBcImAjeyRoZWlnaHR9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJGhlaWdodGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XHJcbiAgfVxyXG5cclxuICBAaWYgaXMtc2l6ZSgkd2lkdGgpIHtcclxuICAgIHdpZHRoOiAkd2lkdGg7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAd2FybiBcImAjeyR3aWR0aH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkd2lkdGhgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIHRleHQtYmFzZWQgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC10ZXh0LWlucHV0c31gLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtZm9jdXN9LFxyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtaG92ZXJ9IHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlfSB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl0sXHJcbi8vLyAgIHRleHRhcmVhIHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpmb2N1cyxcclxuLy8vICAgdGV4dGFyZWE6Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyLFxyXG4vLy8gICB0ZXh0YXJlYTpob3ZlciB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmFjdGl2ZSxcclxuLy8vICAgdGV4dGFyZWE6YWN0aXZlIHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xyXG4vLy9cclxuLy8vIEB0eXBlIExpc3RcclxuXHJcbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm1vbnRoXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIndlZWtcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0Om5vdChbdHlwZV0pJyxcclxuICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYSc7XHJcblxyXG4kYWxsLXRleHQtaW5wdXRzOiAgICAgICAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XHJcbiRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBhY3RpdmUpO1xyXG4kYWxsLXRleHQtaW5wdXRzLWZvY3VzOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgZm9jdXMpO1xyXG4kYWxsLXRleHQtaW5wdXRzLWhvdmVyOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgaG92ZXIpO1xyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ1NTIGN1YmljLWJlemllciB0aW1pbmcgZnVuY3Rpb25zLiBUaW1pbmcgZnVuY3Rpb25zIGNvdXJ0ZXN5IG9mIGpxdWVyeS5lYXNpZSAoZ2l0aHViLmNvbS9qYXVraWEvZWFzaWUpXHJcbi8vL1xyXG4vLy8gVGltaW5nIGZ1bmN0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZGVtb2VkIGhlcmU6IGh0dHA6Ly9qcXVlcnl1aS5jb20vcmVzb3VyY2VzL2RlbW9zL2VmZmVjdC9lYXNpbmcuaHRtbFxyXG4vLy9cclxuLy8vIEB0eXBlIGN1YmljLWJlemllclxyXG5cclxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcclxuJGVhc2UtaW4tY3ViaWM6ICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA1NSwgMC42NzUsIDAuMTkwKTtcclxuJGVhc2UtaW4tcXVhcnQ6ICAgICBjdWJpYy1iZXppZXIoMC44OTUsICAwLjAzMCwgMC42ODUsIDAuMjIwKTtcclxuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcclxuJGVhc2UtaW4tc2luZTogICAgICBjdWJpYy1iZXppZXIoMC40NzAsICAwLjAwMCwgMC43NDUsIDAuNzE1KTtcclxuJGVhc2UtaW4tZXhwbzogICAgICBjdWJpYy1iZXppZXIoMC45NTAsICAwLjA1MCwgMC43OTUsIDAuMDM1KTtcclxuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcclxuJGVhc2UtaW4tYmFjazogICAgICBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcclxuXHJcbiRlYXNlLW91dC1xdWFkOiAgICAgY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCk7XHJcbiRlYXNlLW91dC1jdWJpYzogICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCk7XHJcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XHJcbiRlYXNlLW91dC1xdWludDogICAgY3ViaWMtYmV6aWVyKDAuMjMwLCAgMS4wMDAsIDAuMzIwLCAxLjAwMCk7XHJcbiRlYXNlLW91dC1zaW5lOiAgICAgY3ViaWMtYmV6aWVyKDAuMzkwLCAgMC41NzUsIDAuNTY1LCAxLjAwMCk7XHJcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XHJcbiRlYXNlLW91dC1jaXJjOiAgICAgY3ViaWMtYmV6aWVyKDAuMDc1LCAgMC44MjAsIDAuMTY1LCAxLjAwMCk7XHJcbiRlYXNlLW91dC1iYWNrOiAgICAgY3ViaWMtYmV6aWVyKDAuMTc1LCAgMC44ODUsIDAuMzIwLCAxLjI3NSk7XHJcblxyXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xyXG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtcXVhcnQ6IGN1YmljLWJlemllcigwLjc3MCwgIDAuMDAwLCAwLjE3NSwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xyXG4kZWFzZS1pbi1vdXQtZXhwbzogIGN1YmljLWJlemllcigxLjAwMCwgIDAuMDAwLCAwLjAwMCwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xyXG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xyXG4iLCJAbWl4aW4gdHJpYW5nbGUoJHNpemUsICRjb2xvciwgJGRpcmVjdGlvbikge1xyXG4gICR3aWR0aDogbnRoKCRzaXplLCAxKTtcclxuICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xyXG4gICRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcclxuICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcikgPT0gMiwgbnRoKCRjb2xvciwgMiksIHRyYW5zcGFyZW50KTtcclxuICBoZWlnaHQ6IDA7XHJcbiAgd2lkdGg6IDA7XHJcblxyXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcclxuICAgICR3aWR0aDogJHdpZHRoIC8gMjtcclxuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xyXG5cclxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcclxuICAgIGJvcmRlci10b3A6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XHJcblxyXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAtcmlnaHQge1xyXG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcclxuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XHJcblxyXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24tbGVmdCB7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtdXApIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XHJcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcclxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcclxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXJpZ2h0KSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XHJcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1sZWZ0KSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIGB3b3JkLXdyYXBgIHByb3BlcnR5LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cclxuLy8vICAgVmFsdWUgZm9yIHRoZSBgd29yZC1icmVha2AgcHJvcGVydHkuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC53cmFwcGVyIHtcclxuLy8vICAgICBAaW5jbHVkZSB3b3JkLXdyYXAoYnJlYWstd29yZCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC53cmFwcGVyIHtcclxuLy8vICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4vLy8gICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcclxuICBvdmVyZmxvdy13cmFwOiAkd3JhcDtcclxuICB3b3JkLXdyYXA6ICR3cmFwO1xyXG5cclxuICBAaWYgJHdyYXAgPT0gYnJlYWstd29yZCB7XHJcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICB3b3JkLWJyZWFrOiAkd3JhcDtcclxuICB9XHJcbn1cclxuIiwiLy8gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IE1BSk9SIHZlcnNpb24gcmVsZWFzZVxyXG5cclxuQG1peGluIGlubGluZS1ibG9jayB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cclxuICBAd2FybiBcIlRoZSBpbmxpbmUtYmxvY2sgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG5AbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjAsICR0ZXh0LXNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xyXG5cclxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XHJcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcclxuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xyXG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XHJcblxyXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xyXG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xyXG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcclxuICAgICRzdHlsZTogc2ltcGxlO1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcclxuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xyXG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XHJcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xyXG4gICAgJHN0eWxlOiBzaW1wbGU7XHJcblxyXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xyXG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBudW1iZXIge1xyXG4gICAgJHBhZGRpbmc6ICRiYXNlLWNvbG9yO1xyXG4gICAgJHRleHQtc2l6ZTogJHN0eWxlO1xyXG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XHJcbiAgICAkc3R5bGU6IHNpbXBsZTtcclxuXHJcbiAgICBAaWYgJHBhZGRpbmcgPT0gIzQyOTRmMCB7XHJcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbiAgfVxyXG5cclxuICBAd2FybiBcIlRoZSBidXR0b24gbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cclxuQG1peGluIGJ1dHRvbnN0eWxlKCR0eXBlLCAkYi1jb2xvciwgJHQtc2l6ZSwgJHBhZCkge1xyXG4gIC8vIEdyYXlzY2FsZSBidXR0b25cclxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcclxuICAgIEBpbmNsdWRlIHNpbXBsZSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgJHR5cGUgPT0gc2hpbnkgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xyXG4gICAgQGluY2x1ZGUgc2hpbnkoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICR0eXBlID09IHBpbGwgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xyXG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XHJcbiAgICBAaW5jbHVkZSBmbGF0KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIC8vIENvbG9yZWQgYnV0dG9uXHJcbiAgQGlmICR0eXBlID09IHNpbXBsZSB7XHJcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcclxuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkdHlwZSA9PSBwaWxsIHtcclxuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIGlmICR0eXBlID09IGZsYXQge1xyXG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gU2ltcGxlIEJ1dHRvblxyXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTQlKTtcclxuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTglLCAgJGxpZ2h0bmVzczogIDE1JSk7XHJcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xyXG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgMTUlLCAkbGlnaHRuZXNzOiAtMTglKTtcclxuXHJcbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XHJcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xyXG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcclxuICB9XHJcblxyXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcclxuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XHJcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcclxuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcclxuICB9XHJcblxyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgJHRleHQtc2hhZG93O1xyXG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcblxyXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcclxuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XHJcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDglLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XHJcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XHJcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcclxuXHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxyXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDklLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xyXG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcclxuICAgIH1cclxuXHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFNoaW55IEJ1dHRvblxyXG5AbWl4aW4gc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xyXG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XHJcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcclxuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTI2LCAkZ3JlZW46IC0xMjcsICRibHVlOiAtMTIyKTtcclxuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xyXG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XHJcbiAgJHNlY29uZC1zdG9wOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTU2LCAgJGdyZWVuOiAtNTAsICAkYmx1ZTogLTMzKTtcclxuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcclxuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xyXG5cclxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcclxuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XHJcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAkYm9yZGVyOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXIpO1xyXG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XHJcbiAgICAkZm91cnRoLXN0b3A6ICAgZ3JheXNjYWxlKCRmb3VydGgtc3RvcCk7XHJcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xyXG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xyXG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xyXG4gICAgJHRoaXJkLXN0b3A6ICAgIGdyYXlzY2FsZSgkdGhpcmQtc3RvcCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkYmFzZS1jb2xvciAwJSwgJHNlY29uZC1zdG9wIDUwJSwgJHRoaXJkLXN0b3AgNTAlLCAkZm91cnRoLXN0b3AgMTAwJSk7XHJcblxyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcclxuICBjb2xvcjogJGNvbG9yO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcclxuXHJcbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XHJcbiAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTY2LCAkZ3JlZW46IC02MiwgJGJsdWU6IC01MSk7XHJcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XHJcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcclxuICAgICAgJHNlY29uZC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJHNlY29uZC1zdG9wLWhvdmVyKTtcclxuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xyXG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmQtc3RvcC1ob3ZlciA1MCUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcmQtc3RvcC1ob3ZlciAgNTAlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFBpbGwgQnV0dG9uXHJcbkBtaXhpbiBwaWxsKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTExJSwgJGxpZ2h0bmVzczogLTI2JSk7XHJcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcclxuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xyXG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTElLCAgJGxpZ2h0bmVzczogIDclKTtcclxuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xyXG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XHJcblxyXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xyXG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcclxuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XHJcbiAgfVxyXG5cclxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xyXG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcclxuICAgICRib3JkZXItdG9wOiAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xyXG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcclxuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xyXG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xyXG4gIH1cclxuXHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XHJcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xyXG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XHJcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XHJcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuXHJcbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xyXG4gICAgJGJvcmRlci1ib3R0b206ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAgMTMuNSUsICRsaWdodG5lc3M6IC0zMiUpO1xyXG4gICAgJGJvcmRlci1zaWRlczogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMiUsICAgICRsaWdodG5lc3M6IC0yNyUpO1xyXG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xyXG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICRzYXR1cmF0aW9uOiAtMSUsICAgICRsaWdodG5lc3M6ICAzJSk7XHJcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC00JSwgICAgJGxpZ2h0bmVzczogLTE1LjUlKTtcclxuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XHJcbiAgICAgICRib3JkZXItYm90dG9tOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xyXG4gICAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xyXG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcclxuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcclxuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XHJcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XHJcblxyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctaG92ZXI7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcclxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcclxuICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA2LCAgJHNhdHVyYXRpb246IC0yLjUlLCAkbGlnaHRuZXNzOiAtMzAlKTtcclxuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcclxuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xyXG4gICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDUsICAkc2F0dXJhdGlvbjogLTEyJSwgICRsaWdodG5lc3M6IC0yMS41JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgZ3JheXNjYWxlKCRhY3RpdmUtY29sb3IpO1xyXG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XHJcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XHJcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcclxuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tLWFjdGl2ZTtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xyXG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIEZsYXQgQnV0dG9uXHJcbkBtaXhpbiBmbGF0KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG5cclxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcclxuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG5cclxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe1xyXG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBGbGV4aWJsZSBncmlkXHJcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XHJcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XHJcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XHJcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xyXG5cclxuICBAd2FybiBcIlRoZSBmbGV4LWdyaWQgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG4vLyBGbGV4aWJsZSBndXR0ZXJcclxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XHJcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XHJcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcclxuXHJcbiAgQHdhcm4gXCJUaGUgZmxleC1ndXR0ZXIgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gZ3JpZC13aWR0aCgkbikge1xyXG4gIEByZXR1cm4gJG4gKiAkZ3ctY29sdW1uICsgKCRuIC0gMSkgKiAkZ3ctZ3V0dGVyO1xyXG5cclxuICBAd2FybiBcIlRoZSBncmlkLXdpZHRoIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGdvbGRlbi1yYXRpbygkdmFsdWUsICRpbmNyZW1lbnQpIHtcclxuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlLCAkcmF0aW86ICRnb2xkZW4pO1xyXG5cclxuICBAd2FybiBcIlRoZSBnb2xkZW4tcmF0aW8gZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4gUGxlYXNlIHVzZSB0aGUgbW9kdWxhci1zY2FsZSBmdW5jdGlvbiwgaW5zdGVhZC5cIjtcclxufVxyXG5cclxuQG1peGluIGJveC1zaXppbmcoJGJveCkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1zaXppbmcsICRib3gsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIEB3YXJuIFwiVGhlIGJveC1zaXppbmcgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4gVGhpcyBwcm9wZXJ0eSBjYW4gbm93IGJlIHVzZWQgdW4tcHJlZml4ZWQuXCI7XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztnR0FJZ0c7QUNKaEc7Ozs7Z0dBSWdHO0FBRWhHLDZDQUE2QztBQTBFN0M7Z0dBQ2dHO0FEMUVoRyxNQUFNLENBQU4sR0FBRyxNQUFNLFNBQVMsRUFBRSxNQUFNO0VBRXpCLEFBQUEsSUFBSSxDQUFDO0lBQ0osU0FBUyxFQUFFLElBQUs7SUFDaEIsTUFBTSxFQUFFLElBQUs7SUFBRSxXQUFXLEVBQUUsSUFBSztHQUtqQztFQVBELEFBQUEsSUFBSSxBQUdGLFNBQVMsQ0FBQztJQUNWLE1BQU0sRUFBRSxJQUFLO0lBQUUsV0FBVyxFQUFFLElBQUs7R0FDakM7RUFMRixBQUFBLElBQUksQUFNRixXQUFXLENBQUM7SUFBQyxXQUFXLEVBQUUsSUFBSztHQUFHO0VBR3BDLEFBRUUsV0FGUyxDQUNWLFFBQVEsQ0FDUCxZQUFZLENBQUM7SUFDWixTQUFTLEVBQUUsSUFBSztJQUFFLFdBQVcsRUFBRSxJQUFLO0dBS3BDO0VBUkgsQUFFRSxXQUZTLENBQ1YsUUFBUSxDQUNQLFlBQVksQUFFVixPQUFPLENBQUM7SUFDUixLQUFLLEVBQUMsSUFBSztJQUFFLE1BQU0sRUFBRSxJQUFLO0lBQzFCLGVBQWUsRUFBRSxTQUFVO0dBQzNCO0VBUEosQUFTRSxXQVRTLENBQ1YsUUFBUSxDQVFQLFlBQVksQ0FBQztJQUNaLFNBQVMsRUFBRSxJQUFLO0lBQUUsV0FBVyxFQUFFLElBQUs7SUFBRSxhQUFhLEVBQUUsSUFBSztHQUMxRDtFQVhILEFBWUUsV0FaUyxDQUNWLFFBQVEsQ0FXUCxRQUFRLENBQUM7SUFBQyxNQUFNLEVBQUUsVUFBVztJQUFFLFNBQVMsRUFBRSxJQUFLO0dBQUc7RUFacEQsQUFjQyxXQWRVLENBY1YsWUFBWSxDQUFDO0lBQ1osS0FBSyxFQUFFLElBQUs7SUFBRSxNQUFNLEVBQUUsSUFBSztHQUMzQjtFQUVGLEFBQ0Msa0JBRGlCLENBQ2pCLFFBQVEsQ0FBQztJQUNSLFNBQVMsRUFBRSxJQUFLO0dBRWhCO0VBSkYsQUFHRSxrQkFIZ0IsQ0FDakIsUUFBUSxDQUVQLFFBQVEsQ0FBQztJQUFDLEtBQUssRUFBRSxLQUFNO0lBQUUsV0FBVyxFQUFFLElBQUs7R0FBRztFQUdoRCxBQUVFLFlBRlUsQ0FDWCxRQUFRLENBQ1AsWUFBWSxDQUFDO0lBQUMsU0FBUyxFQUFFLElBQUs7R0FBRztFQUZuQyxBQUdFLFlBSFUsQ0FDWCxRQUFRLENBRVAsWUFBWSxDQUFDO0lBQ1osU0FBUyxFQUFFLElBQUs7SUFDYixXQUFXLEVBQUUsSUFBSztJQUNsQixhQUFhLEVBQUUsSUFBSztHQUN2QjtFQUdILEFBQ0MsV0FEVSxDQUNWLEtBQUssQ0FBQztJQUFDLFNBQVMsRUFBRSxJQUFLO0dBQUc7RUFFM0IsQUFBQSxXQUFXLENBQUM7SUFBQyxLQUFLLEVBQUUsSUFBSztJQUFFLE1BQU0sRUFBRSxJQUFLO0dBQUc7RUFHM0MsQUFDQyxZQURXLENBQ1gsSUFBSSxDQUFDO0lBQ0osV0FBVyxFQUFFLElBQUs7R0FDbEI7RUFHRixBQUFBLFlBQVksQ0FBQztJQUNaLFVBQVUsRUFBRSxLQUFNO0lBQUUsUUFBUSxFQUFFLElBQUs7R0FDbkMiLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
