@keyframes rotateme {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}


.rotate-me {
  animation-name: rotateme;
  animation-duration: 24s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;

  -webkit-animation-name: rotateme;
  -webkit-animation-duration: 24s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;

  -moz-animation-name: rotateme;
  -moz-animation-duration: 24s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;

  -ms-animation-name: rotateme;
  -ms-animation-duration: 24s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;

  -o-animation-name: rotateme;
  -o-animation-duration: 24s;
  -o-animation-iteration-count: infinite;
  -o-animation-timing-function: linear;
}




@keyframes textRotate {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

.text-rotate-box {
  animation: textRotate 10s linear 0s forwards infinite alternate;
}

@keyframes shine {
  100% {
    left: 125%;
  }
}



/*** 
=============================================
    circle Css
=============================================
***/

@keyframes circle {
  0% {
    opacity: 1;
  }

  40% {
    opacity: 1;
  }

  100% {
    width: 200%;
    height: 200%;
    opacity: 0;
  }
}

@keyframes float-bob {
  0% {
    transform: translateX(-100px);
  }

  50% {
    transform: translateX(-10px);
  }

  100% {
    transform: translateX(-100px);
  }
}




.float-bob {
  animation-name: float-bob;
  animation-duration: 7s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;

  -webkit-animation-name: float-bob;
  -webkit-animation-duration: 7s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;

  -moz-animation-name: float-bob;
  -moz-animation-duration: 7s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;

  -ms-animation-name: float-bob;
  -ms-animation-duration: 7s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;

  -o-animation-name: float-bob;
  -o-animation-duration: 7s;
  -o-animation-iteration-count: infinite;
  -o-animation-timing-function: linear;
}






/*** 
=============================================
    Zoom In Out Css
=============================================
***/
.zoominout {
  animation-name: zoomInOut;
  animation-duration: 3s;
  animation-iteration-count: infinite;
  animation-timing-function: ease-in-out;

  -webkit-animation-name: zoomInOut;
  -webkit-animation-duration: 3s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: ease-in-out;

  -moz-animation-name: zoomInOut;
  -moz-animation-duration: 3s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: ease-in-out;

  -ms-animation-name: zoomInOut;
  -ms-animation-duration: 3s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: ease-in-out;

  -o-animation-name: zoomInOut;
  -o-animation-duration: 3s;
  -o-animation-iteration-count: infinite;
  -o-animation-timing-function: ease-in-out;
}

@keyframes banner-animate {
  0% {
    transform: translateX(-1000px);
  }

  50% {
    transform: translateX(-10px);
  }

  100% {
    transform: translateX(-1000px);
  }
}

.banner-animate {
  animation-name: banner-animate;
  animation-duration: 70s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  -webkit-animation-name: banner-animate;
  -webkit-animation-duration: 70s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;

  -moz-animation-name: banner-animate;
  -moz-animation-duration: 70s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;

  -ms-animation-name: banner-animate;
  -ms-animation-duration: 70s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;

  -o-animation-name: banner-animate;
  -o-animation-duration: 70s;
  -o-animation-iteration-count: infinite;
  -o-animation-timing-function: linear;
}



/*** 
=============================================
    Ripple Animation
=============================================
***/

@keyframes ripple {
  70% {
    box-shadow: 0 0 0 40px rgba(10, 165, 205, 0);
  }

  100% {
    box-shadow: 0 0 0 0 rgba(10, 165, 205, 0);
  }
}





/*** 
=============================================
    Float Bob Y Animation Css
=============================================
***/

@keyframes float-bob-y {
  0% {
    transform: translateY(-20px);
  }

  50% {
    transform: translateY(-10px);
  }

  100% {
    transform: translateY(-20px);
  }
}

.float-bob-y {
  animation-name: float-bob-y;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}







/*** 
=============================================
    Footer Tree Animation 
=============================================
***/

@keyframes footerTree {

  0%,
  100% {
    transform: rotate(0deg) translateX(0);
  }

  25%,
  75% {
    transform: rotate(5deg) translateX(15px);
  }

  50% {
    transform: rotate(10deg) translateX(30px);
  }
}

.footertree {
  animation: footerTree 5s ease-in infinite;
}




@keyframes rotateScale {
  from {
    transform: rotate(0deg) scale(1);
  }

  to {
    transform: rotate(360deg);
  }
}

.rotatescale {
  -webkit-animation-name: rotateScale;
  -webkit-animation-duration: 20s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;

  -moz-animation-name: rotateScale;
  -moz-animation-duration: 20s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;

  -ms-animation-name: rotateScale;
  -ms-animation-duration: 20s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;

  animation-name: rotateScale;
  animation-duration: 20s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}



/*--------------------------------------------------------------
# Animations Shape Mover
--------------------------------------------------------------*/

@keyframes shapeMover {

  0%,
  100% {
    transform: perspective(400px) translateY(0) rotate(0deg) translateZ(0px) translateX(0);
  }

  50% {
    transform: perspective(400px) rotate(0deg) translateZ(20px) translateY(20px) translateX(20px);
  }
}



.shape-mover {
  animation-name: shapeMover;
  animation-duration: 10s;
  animation-timing-function: linear;
  animation-delay: 2s;
  animation-iteration-count: infinite;
  perspective: 100px;
  transform-origin: center center;
}


/*--------------------------------------------------------------
#     Zoom Fade Css
--------------------------------------------------------------*/
.zoom-fade {
  animation-name: zoom-fade;
  animation-duration: 5s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;

  -webkit-animation-name: zoom-fade;
  -webkit-animation-duration: 5s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;

  -moz-animation-name: zoom-fade;
  -moz-animation-duration: 5s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;

  -ms-animation-name: zoom-fade;
  -ms-animation-duration: 5s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;

  -o-animation-name: zoom-fade;
  -o-animation-duration: 5s;
  -o-animation-iteration-count: infinite;
  -o-animation-timing-function: linear;
}

@keyframes zoom-fade {
  0% {
    transform: scale(0.9) translateX(-50%);
  }

  50% {
    transform: scale(1) translateX(-50%);
  }

  100% {
    transform: scale(0.9) translateX(-50%);
  }
}


/*--------------------------------------------------------------
#     Zoom Fade 2 Css
--------------------------------------------------------------*/
.zoom-fade-2 {
  animation-name: zoom-fade-2;
  animation-duration: 5s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;

  -webkit-animation-name: zoom-fade-2;
  -webkit-animation-duration: 5s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;

  -moz-animation-name: zoom-fade-2;
  -moz-animation-duration: 5s;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;

  -ms-animation-name: zoom-fade-2;
  -ms-animation-duration: 5s;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;

  -o-animation-name: zoom-fade-2;
  -o-animation-duration: 5s;
  -o-animation-iteration-count: infinite;
  -o-animation-timing-function: linear;
}

@keyframes zoom-fade-2 {
  0% {
    transform: scale(0.9) translateX(0%) translateY(0%);
  }

  50% {
    transform: scale(1) translateX(0%) translateY(0%);
  }

  100% {
    transform: scale(0.9) translateX(0%) translateY(0%);
  }
}



/* Image Bounce */

@keyframes ImgBounce {
  0% {
    transform: translateY(0);
  }

  100% {
    transform: translateY(-30px);
  }
}


.img-bounce {
  animation: ImgBounce 5s ease-in-out 0s infinite alternate;
}


/***
=============================================
    Float Bob X Animation Css
=============================================
***/

@keyframes float-bob-x {
  0% {
    transform: translateX(-30px);
  }

  50% {
    transform: translateX(-10px);
  }

  100% {
    transform: translateX(-30px);
  }
}

.float-bob-x {
  animation-name: float-bob-x;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}





/***
=============================================
    Float Bob X 2 Animation Css
=============================================
***/

@keyframes float-bob-x-2 {
  0% {
    transform: translateX(-30px) translateY(-50%);
  }

  50% {
    transform: translateX(-10px) translateY(-50%);
  }

  100% {
    transform: translateX(-30px) translateY(-50%);
  }
}

.float-bob-x-2 {
  animation-name: float-bob-x-2;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}








/*** 
=============================================
    Float Bob Y Animation Css
=============================================
***/

@keyframes float-bob-y-2 {
  0% {
    transform: translateY(-20px) rotate(90deg);
    ;
  }

  50% {
    transform: translateY(-10px) rotate(90deg);
    ;
  }

  100% {
    transform: translateY(-20px) rotate(90deg);
    ;
  }
}

.float-bob-y-2 {
  animation-name: float-bob-y-2;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}


@keyframes leftRight {
  0% {
    transform: translateX(0px);
  }

  50% {
    transform: translateX(10px);
  }

  100% {
    transform: translateX(0px);
  }
}


@keyframes topBottom {
  0% {
    transform: translateY(0px);
  }

  50% {
    transform: translateY(10px);
  }

  100% {
    transform: translateY(0px);
  }
}


/* Shape Top Bottom animation */

@keyframes shapeTopBottom {
  0% {
    transform: rotate(45deg) translateY(-0px);
  }

  25% {
    transform: rotate(43deg) translateY(-20px);
  }

  50% {
    transform: rotate(45deg) translateY(-40px);
  }

  75% {
    transform: rotate(43deg) translateY(-20px);
  }

  100% {
    transform: rotate(45deg) translateY(-0px);
  }
}
/*# sourceMappingURL=data:application/json;base64,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QixzQkFBc0I7RUFFdEIsbUNBQW1DO0VBRW5DLGlDQUFpQztBQUNuQzs7Ozs7Ozs7O0FBU0E7Ozs7R0FJRzs7QUFrQkg7RUFDRTtJQUNFLDBDQUEwQzs7RUFFNUM7O0VBRUE7SUFDRSwwQ0FBMEM7O0VBRTVDOztFQUVBO0lBQ0UsMENBQTBDOztFQUU1QztBQUNGOztBQUVBO0VBRUUsNkJBQTZCO0VBRTdCLHNCQUFzQjtFQUV0QixtQ0FBbUM7RUFFbkMsaUNBQWlDO0FBQ25DOzs7QUFHQTtFQUNFO0lBQ0UsMEJBQTBCO0VBQzVCOztFQUVBO0lBQ0UsMkJBQTJCO0VBQzdCOztFQUVBO0lBQ0UsMEJBQTBCO0VBQzVCO0FBQ0Y7OztBQUdBO0VBQ0U7SUFDRSwwQkFBMEI7RUFDNUI7O0VBRUE7SUFDRSwyQkFBMkI7RUFDN0I7O0VBRUE7SUFDRSwwQkFBMEI7RUFDNUI7QUFDRjs7O0FBR0EsK0JBQStCOztBQUUvQjtFQUNFO0lBQ0UseUNBQXlDO0VBQzNDOztFQUVBO0lBQ0UsMENBQTBDO0VBQzVDOztFQUVBO0lBQ0UsMENBQTBDO0VBQzVDOztFQUVBO0lBQ0UsMENBQTBDO0VBQzVDOztFQUVBO0lBQ0UseUNBQXlDO0VBQzNDO0FBQ0YiLCJmaWxlIjoiY3VzdG9tLWFuaW1hdGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGtleWZyYW1lcyByb3RhdGVtZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZW1lIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHJvdGF0ZW1lIHtcbiAgZnJvbSB7XG4gICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQC1vLWtleWZyYW1lcyByb3RhdGVtZSB7XG4gIGZyb20ge1xuICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG5cbiAgdG8ge1xuICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuXG4ucm90YXRlLW1lIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZW1lO1xuICBhbmltYXRpb24tZHVyYXRpb246IDI0cztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVtZTtcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDI0cztcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG5cbiAgLW1vei1hbmltYXRpb24tbmFtZTogcm90YXRlbWU7XG4gIC1tb3otYW5pbWF0aW9uLWR1cmF0aW9uOiAyNHM7XG4gIC1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1tcy1hbmltYXRpb24tbmFtZTogcm90YXRlbWU7XG4gIC1tcy1hbmltYXRpb24tZHVyYXRpb246IDI0cztcbiAgLW1zLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtbXMtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1vLWFuaW1hdGlvbi1uYW1lOiByb3RhdGVtZTtcbiAgLW8tYW5pbWF0aW9uLWR1cmF0aW9uOiAyNHM7XG4gIC1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtby1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG59XG5cblxuXG5cbkBrZXlmcmFtZXMgdGV4dFJvdGF0ZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuLnRleHQtcm90YXRlLWJveCB7XG4gIGFuaW1hdGlvbjogdGV4dFJvdGF0ZSAxMHMgbGluZWFyIDBzIGZvcndhcmRzIGluZmluaXRlIGFsdGVybmF0ZTtcbn1cblxuXG5cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2hpbmUge1xuICAxMDAlIHtcbiAgICBsZWZ0OiAxMjUlO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2hpbmUge1xuICAxMDAlIHtcbiAgICBsZWZ0OiAxMjUlO1xuICB9XG59XG5cblxuXG4vKioqIFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY2lyY2xlIENzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4qKiovXG5ALXdlYmtpdC1rZXlmcmFtZXMgY2lyY2xlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICA0MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICB3aWR0aDogMjAwJTtcbiAgICBoZWlnaHQ6IDIwMCU7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNpcmNsZSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgd2lkdGg6IDIwMCU7XG4gICAgaGVpZ2h0OiAyMDAlO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmxvYXQtYm9iIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDBweCk7XG4gIH1cblxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMHB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMHB4KTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZsb2F0LWJvYiB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDBweCk7XG4gIH1cbn1cblxuXG5cblxuLmZsb2F0LWJvYiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbG9hdC1ib2I7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogN3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG5cbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxvYXQtYm9iO1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogN3M7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1tb3otYW5pbWF0aW9uLW5hbWU6IGZsb2F0LWJvYjtcbiAgLW1vei1hbmltYXRpb24tZHVyYXRpb246IDdzO1xuICAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtbXMtYW5pbWF0aW9uLW5hbWU6IGZsb2F0LWJvYjtcbiAgLW1zLWFuaW1hdGlvbi1kdXJhdGlvbjogN3M7XG4gIC1tcy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLW1zLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtby1hbmltYXRpb24tbmFtZTogZmxvYXQtYm9iO1xuICAtby1hbmltYXRpb24tZHVyYXRpb246IDdzO1xuICAtby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLW8tYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xufVxuXG5cblxuXG5cblxuLyoqKiBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIFpvb20gSW4gT3V0IENzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4qKiovXG4uem9vbWlub3V0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21Jbk91dDtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21Jbk91dDtcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDNzO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuXG4gIC1tb3otYW5pbWF0aW9uLW5hbWU6IHpvb21Jbk91dDtcbiAgLW1vei1hbmltYXRpb24tZHVyYXRpb246IDNzO1xuICAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuXG4gIC1tcy1hbmltYXRpb24tbmFtZTogem9vbUluT3V0O1xuICAtbXMtYW5pbWF0aW9uLWR1cmF0aW9uOiAzcztcbiAgLW1zLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtbXMtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7XG5cbiAgLW8tYW5pbWF0aW9uLW5hbWU6IHpvb21Jbk91dDtcbiAgLW8tYW5pbWF0aW9uLWR1cmF0aW9uOiAzcztcbiAgLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC1vLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgem9vbUluT3V0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgc2NhbGUoMC43KTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgwLjcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSBzY2FsZSgxKTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpIHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgc2NhbGUoMC43KTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDAuNyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgYmFubmVyLWFuaW1hdGUge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMDBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJhbm5lci1hbmltYXRlIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwcHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwMHB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMDBweCk7XG4gIH1cbn1cblxuLmJhbm5lci1hbmltYXRlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJhbm5lci1hbmltYXRlO1xuICBhbmltYXRpb24tZHVyYXRpb246IDcwcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYmFubmVyLWFuaW1hdGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiA3MHM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1tb3otYW5pbWF0aW9uLW5hbWU6IGJhbm5lci1hbmltYXRlO1xuICAtbW96LWFuaW1hdGlvbi1kdXJhdGlvbjogNzBzO1xuICAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtbXMtYW5pbWF0aW9uLW5hbWU6IGJhbm5lci1hbmltYXRlO1xuICAtbXMtYW5pbWF0aW9uLWR1cmF0aW9uOiA3MHM7XG4gIC1tcy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLW1zLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtby1hbmltYXRpb24tbmFtZTogYmFubmVyLWFuaW1hdGU7XG4gIC1vLWFuaW1hdGlvbi1kdXJhdGlvbjogNzBzO1xuICAtby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLW8tYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xufVxuXG5cblxuLyoqKiBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIFJpcHBsZSBBbmltYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuKioqL1xuXG5cbkAtd2Via2l0LWtleWZyYW1lcyByaXBwbGUge1xuICA3MCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDQwcHggcmdiYSgxMCwgMTY1LCAyMDUsIDApO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDEwLCAxNjUsIDIwNSwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyByaXBwbGUge1xuICA3MCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDQwcHggcmdiYSgxMCwgMTY1LCAyMDUsIDApO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDEwLCAxNjUsIDIwNSwgMCk7XG4gIH1cbn1cblxuXG5cblxuXG4vKioqIFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgRmxvYXQgQm9iIFkgQW5pbWF0aW9uIENzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4qKiovXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmxvYXQtYm9iLXkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBmbG9hdC1ib2IteSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgfVxufVxuXG4uZmxvYXQtYm9iLXkge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmbG9hdC1ib2IteTtcbiAgYW5pbWF0aW9uLW5hbWU6IGZsb2F0LWJvYi15O1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xufVxuXG5cblxuXG5cblxuXG4vKioqIFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgRm9vdGVyIFRyZWUgQW5pbWF0aW9uIFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4qKiovXG5cbkAtd2Via2l0LWtleWZyYW1lcyBmb290ZXJUcmVlIHtcblxuICAwJSxcbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICAyNSUsXG4gIDc1JSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKSB0cmFuc2xhdGVYKDE1cHgpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpIHRyYW5zbGF0ZVgoMTVweCk7XG4gIH1cblxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpIHRyYW5zbGF0ZVgoMzBweCk7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpIHRyYW5zbGF0ZVgoMzBweCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBmb290ZXJUcmVlIHtcblxuICAwJSxcbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICAyNSUsXG4gIDc1JSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKSB0cmFuc2xhdGVYKDE1cHgpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpIHRyYW5zbGF0ZVgoMTVweCk7XG4gIH1cblxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpIHRyYW5zbGF0ZVgoMzBweCk7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpIHRyYW5zbGF0ZVgoMzBweCk7XG4gIH1cbn1cblxuLmZvb3RlcnRyZWUge1xuICAtd2Via2l0LWFuaW1hdGlvbjogZm9vdGVyVHJlZSA1cyBlYXNlLWluIGluZmluaXRlO1xuICBhbmltYXRpb246IGZvb3RlclRyZWUgNXMgZWFzZS1pbiBpbmZpbml0ZTtcbn1cblxuXG5cblxuQGtleWZyYW1lcyByb3RhdGVTY2FsZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDEpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZVNjYWxlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgc2NhbGUoMSk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgcm90YXRlU2NhbGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgxKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbkAtby1rZXlmcmFtZXMgcm90YXRlU2NhbGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgxKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi5yb3RhdGVzY2FsZSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZVNjYWxlO1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMjBzO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtbW96LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVTY2FsZTtcbiAgLW1vei1hbmltYXRpb24tZHVyYXRpb246IDIwcztcbiAgLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG5cbiAgLW1zLWFuaW1hdGlvbi1uYW1lOiByb3RhdGVTY2FsZTtcbiAgLW1zLWFuaW1hdGlvbi1kdXJhdGlvbjogMjBzO1xuICAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC1tcy1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG5cbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZVNjYWxlO1xuICBhbmltYXRpb24tZHVyYXRpb246IDIwcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbn1cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgQW5pbWF0aW9ucyBTaGFwZSBNb3ZlclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2hhcGVNb3ZlciB7XG5cbiAgMCUsXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVkoMCkgcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVooMHB4KSB0cmFuc2xhdGVYKDApO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUoMGRlZykgdHJhbnNsYXRlWigyMHB4KSB0cmFuc2xhdGVZKDIwcHgpIHRyYW5zbGF0ZVgoMjBweCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzaGFwZU1vdmVyIHtcblxuICAwJSxcbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWSgwKSByb3RhdGUoMGRlZykgdHJhbnNsYXRlWigwcHgpIHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGVaKDIwcHgpIHRyYW5zbGF0ZVkoMjBweCkgdHJhbnNsYXRlWCgyMHB4KTtcbiAgfVxufVxuXG5cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNoYXBlTW92ZXIge1xuXG4gIDAlLFxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVkoMCkgcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVooMHB4KSB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVkoMCkgcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVooMHB4KSB0cmFuc2xhdGVYKDApO1xuICB9XG5cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZVooMjBweCkgdHJhbnNsYXRlWSgyMHB4KSB0cmFuc2xhdGVYKDIwcHgpO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZVooMjBweCkgdHJhbnNsYXRlWSgyMHB4KSB0cmFuc2xhdGVYKDIwcHgpO1xuICB9XG59XG5cblxuXG4uc2hhcGUtbW92ZXIge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzaGFwZU1vdmVyO1xuICBhbmltYXRpb24tbmFtZTogc2hhcGVNb3ZlcjtcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDEwcztcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxMHM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAycztcbiAgYW5pbWF0aW9uLWRlbGF5OiAycztcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC13ZWJraXQtcGVyc3BlY3RpdmU6IDEwMHB4O1xuICBwZXJzcGVjdGl2ZTogMTAwcHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbn1cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4jICAgICBab29tIEZhZGUgQ3NzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4uem9vbS1mYWRlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb20tZmFkZTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiA1cztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblxuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tLWZhZGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiA1cztcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG5cbiAgLW1vei1hbmltYXRpb24tbmFtZTogem9vbS1mYWRlO1xuICAtbW96LWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7XG4gIC1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1tcy1hbmltYXRpb24tbmFtZTogem9vbS1mYWRlO1xuICAtbXMtYW5pbWF0aW9uLWR1cmF0aW9uOiA1cztcbiAgLW1zLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtbXMtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1vLWFuaW1hdGlvbi1uYW1lOiB6b29tLWZhZGU7XG4gIC1vLWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7XG4gIC1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtby1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyB6b29tLWZhZGUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KSB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgem9vbS1mYWRlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KSB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgICAgIFpvb20gRmFkZSAyIENzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLnpvb20tZmFkZS0yIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb20tZmFkZS0yO1xuICBhbmltYXRpb24tZHVyYXRpb246IDVzO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb20tZmFkZS0yO1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1tb3otYW5pbWF0aW9uLW5hbWU6IHpvb20tZmFkZS0yO1xuICAtbW96LWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7XG4gIC1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXG4gIC1tcy1hbmltYXRpb24tbmFtZTogem9vbS1mYWRlLTI7XG4gIC1tcy1hbmltYXRpb24tZHVyYXRpb246IDVzO1xuICAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC1tcy1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG5cbiAgLW8tYW5pbWF0aW9uLW5hbWU6IHpvb20tZmFkZS0yO1xuICAtby1hbmltYXRpb24tZHVyYXRpb246IDVzO1xuICAtby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgLW8tYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgem9vbS1mYWRlLTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHRyYW5zbGF0ZVgoMCUpIHRyYW5zbGF0ZVkoMCUpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVgoMCUpIHRyYW5zbGF0ZVkoMCUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHRyYW5zbGF0ZVgoMCUpIHRyYW5zbGF0ZVkoMCUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgem9vbS1mYWRlLTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHRyYW5zbGF0ZVgoMCUpIHRyYW5zbGF0ZVkoMCUpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVgoMCUpIHRyYW5zbGF0ZVkoMCUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHRyYW5zbGF0ZVgoMCUpIHRyYW5zbGF0ZVkoMCUpO1xuICB9XG59XG5cblxuXG4vKiBJbWFnZSBCb3VuY2UgKi9cblxuQC13ZWJraXQta2V5ZnJhbWVzIEltZ0JvdW5jZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIEltZ0JvdW5jZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTtcbiAgfVxufVxuXG5cbi5pbWctYm91bmNlIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IEltZ0JvdW5jZSA1cyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XG4gIGFuaW1hdGlvbjogSW1nQm91bmNlIDVzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlIGFsdGVybmF0ZTtcbn1cblxuXG4vKioqXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBGbG9hdCBCb2IgWCBBbmltYXRpb24gQ3NzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbioqKi9cbkAtd2Via2l0LWtleWZyYW1lcyBmbG9hdC1ib2IteCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMHB4KTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZsb2F0LWJvYi14IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpO1xuICB9XG59XG5cbi5mbG9hdC1ib2IteCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZsb2F0LWJvYi14O1xuICBhbmltYXRpb24tbmFtZTogZmxvYXQtYm9iLXg7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG59XG5cblxuXG5cblxuLyoqKlxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgRmxvYXQgQm9iIFggMiBBbmltYXRpb24gQ3NzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbioqKi9cbkAtd2Via2l0LWtleWZyYW1lcyBmbG9hdC1ib2IteC0yIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCkgdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KSB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMHB4KSB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmxvYXQtYm9iLXgtMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpIHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCkgdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCkgdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxufVxuXG4uZmxvYXQtYm9iLXgtMiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZsb2F0LWJvYi14LTI7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbG9hdC1ib2IteC0yO1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xufVxuXG5cblxuXG5cblxuXG5cbi8qKiogXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBGbG9hdCBCb2IgWSBBbmltYXRpb24gQ3NzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbioqKi9cbkAtd2Via2l0LWtleWZyYW1lcyBmbG9hdC1ib2IteS0yIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCkgcm90YXRlKDkwZGVnKTtcbiAgICA7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCkgcm90YXRlKDkwZGVnKTtcbiAgICA7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpIHJvdGF0ZSg5MGRlZyk7XG4gICAgO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmxvYXQtYm9iLXktMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpIHJvdGF0ZSg5MGRlZyk7XG4gICAgO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpIHJvdGF0ZSg5MGRlZyk7XG4gICAgO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KSByb3RhdGUoOTBkZWcpO1xuICAgIDtcbiAgfVxufVxuXG4uZmxvYXQtYm9iLXktMiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZsb2F0LWJvYi15LTI7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbG9hdC1ib2IteS0yO1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xufVxuXG5cbkBrZXlmcmFtZXMgbGVmdFJpZ2h0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTtcbiAgfVxufVxuXG5cbkBrZXlmcmFtZXMgdG9wQm90dG9tIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgfVxufVxuXG5cbi8qIFNoYXBlIFRvcCBCb3R0b20gYW5pbWF0aW9uICovXG5cbkBrZXlmcmFtZXMgc2hhcGVUb3BCb3R0b20ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoLTBweCk7XG4gIH1cblxuICAyNSUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQzZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoLTQwcHgpO1xuICB9XG5cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0M2RlZykgdHJhbnNsYXRlWSgtMjBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtMHB4KTtcbiAgfVxufSJdfQ== */